-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpostgis2inventoryreport.py
66 lines (52 loc) · 2.43 KB
/
postgis2inventoryreport.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import datetime
import argparse
from lib.database import Database
from lib.district import Districts
from lib.report_base.inventory_report import InventoryReport
from lib.mapcreator import MapCreator
import threading
def create_argument_parser():
"""
Create the parameters for the script
"""
parser = argparse.ArgumentParser(
description="Create a QField datasets from PostGIS database.",
epilog="Example usage: python postgis2qfield.py -d yourdatabase -H localhost - p 5432 "
"-u user -w securePassword -l list_of_distID(seperated by comma)"
)
parser.add_argument("-d", "--database", dest="database",
type=str, required=True,
help="The database to connect to")
# Python doesn't let you use -h as an option for some reason
parser.add_argument("-H", "--host", dest="host",
default="localhost", type=str,
help="Database host. Defaults to 'localhost'")
parser.add_argument("-p", "--port", dest="port",
default="5432", type=str,
help="Password for the database user")
parser.add_argument("-u", "--user", dest="user",
default="postgres", type=str,
help="Database user. Defaults to 'postgres'")
parser.add_argument("-w", "--password", dest="password",
type=str, required=True,
help="Password for the database user")
parser.add_argument("-l", "--dist_id", dest="dist_id",
default="", type=str,
help="List of district ID which you want to export. For example, '51,52,53'")
return parser.parse_args()
def create_reports(args):
db = Database(args)
temp_file_path = "./template/template_inventory_report.docx"
current_date = datetime.datetime.now()
main_directory = current_date.strftime('%Y%m%d_%H%M%S') + "_RWSS_Inventory_Reports"
districts_obj = Districts(params.dist_id)
districts = districts_obj.get_wss_list_each_district(db)
for dist in districts:
creator = MapCreator(db, dist, main_directory)
creator.create()
inventory = InventoryReport(db, dist, temp_file_path, main_directory)
thread = threading.Thread(target=inventory.create)
thread.start()
if __name__ == "__main__":
params = create_argument_parser()
create_reports(params)