-
Notifications
You must be signed in to change notification settings - Fork 0
/
mapping_for_report.py
84 lines (59 loc) · 2.38 KB
/
mapping_for_report.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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import os
from report import Report
# to mapping module
class Header:
def __init__(self, city, street, building):
self.street = street
self.building = building
self.city = city
class DataInstance:
def __init__(self, resp, owner_obj):
self.number = resp.apartment
self.c_num = resp.c_num
self.area = str(resp.area).replace(".", ",")
self.fio = owner_obj.fio
self.regnum = owner_obj.regnumber
self.vouts = str(owner_obj.vouts).replace(".", ",")
self.date = owner_obj.regdate
self.share = owner_obj.share
self.floor = resp.floor
class RosReestrReport(Report):
def __init__(self, template_path, res_folder, city, street):
street = street.replace("/", "-")
self.path = os.path.join(res_folder, city, street, street+".xlsx")
self.street = street
self.city = city
Report.__init__(self, self.path, template_path)
@classmethod
def set_number_format(cls, cell):
if cell.coordinate[0] == "F":
cell.number_format = "0,000"
def add_worksheet(self, resp_list, building):
header = Header(self.city, self.street, building)
data = []
for resp in resp_list:
for owner in resp.owner_objs:
di = DataInstance(resp, owner)
data.append(di)
Report.add_worksheet(self, header, data, building)
if __name__ == '__main__':
from paths import *
import glob
from xml_unpuck import Responce
list_xmls = glob.glob(tmp_folder + '/*.xml')
resp_list = [Responce(path) for path in list_xmls]
resp_list = sorted(resp_list, key = lambda x: int(x.apartment))
d = {}
for resp in resp_list:
if resp.street not in d.keys():
d.update({resp.street : {resp.building : [resp]}})
elif resp.building not in d[resp.street].keys():
d[resp.street].update({resp.building : [resp]})
else:
d[resp.street][resp.building].append(resp)
template_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), "template.xlsx")
for street, street_resps in d.items():
report_file = RosReestrReport(template_path, res_folder, street)
for building, building_resps in street_resps.items():
report_file.add_worksheet(building_resps, building)
report_file.close()