8 from .AWK import config
10 from django.utils.decorators import classproperty
13 def create_mitglied_from_dataset(data):
14 eintrittsdatum = datetime.datetime.strptime(data[8], '%d.%m.%Y')
15 if eintrittsdatum > datetime.datetime.today():
18 austrittsdatum = datetime.datetime.strptime(data[9], '%d.%m.%Y')
19 if austrittsdatum < datetime.datetime.today():
22 m.eintrittsdatum = eintrittsdatum
23 m.mitgliedsnr = data[0]
36 # m.geburtsdatum = data[7]
38 # m.zahlungsart = data[16]
44 # m.kontoinhaber = data[22]
45 # m.mandatsreferenz = data[23]
46 # m.debitorenkontonr = data[24]
51 # m.email = data[29] # "KommE-Mail_P1"
57 # m.abteilung_1 = data[35]
58 # m.abteilungseintritt_1 = data[36]
59 # m.abteilungsaustritt_1 = data[37]
60 # if data[67] == '""':
63 # m.stammnummer = int(m.rd_opt_qval(data[67]))
65 # m.ver_grund = m.rd_opt_qval(data[69])
66 # if len(m.ver_grund) == 0:
67 # m.ver_grund = f"{m.strasse}, {m.plz} {m.ort}"
69 # m.zeitung = data[71]
72 class MitgliederQuery:
74 self.data_source = QIF({"d" : ";", "H" : 1})
79 #cf = config.getInstance()
80 #self.file_name = os.path.join(cf.requireConfig("data_path"), "quellen", cf.requireConfig("datenquelle"))
81 self.file_name = "undefined. Set by .init(verein)"
82 self.att_list = "MitgliedschaftsNr, Mitgliedschaftsanrede, Vorname1, Nachname1, Strasse1, Plz1, Ort1, Geburtsdatum1, EintrittVerein, AustrittVerein, Zahlungsart, IBAN, BIC, Kontoinhaber, MandatsReferenz, Email"
83 #self.att_list = "Mitgliedschaftsanrede, Vorname1, Nachname1, Strasse1, Plz1, Ort1, Geburtsdatum1, EintrittVerein, AustrittVerein, Zahlungsart, IBAN, BIC, Kontoinhaber, MandatsReferenz, Email"
84 # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
85 cf = config.getInstance()
86 self.file_name = os.path.join(cf.requireConfig("data_path"), "quellen", cf.requireConfig("datenquelle"))
89 data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} ORDER BY Nachname1, Vorname1")
90 if type(data_set) is QError:
91 raise RuntimeError(data_set)
94 m = create_mitglied_from_dataset(data)
99 def get(self, mitgliedsnr):
100 data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE MitgliedschaftsNr = {mitgliedsnr}")
101 if type(data_set) is QError:
102 raise RuntimeError(data_set)
104 return create_mitglied_from_dataset(data_set[0])
107 def VersicherteGrundstucke(self, mitglied):
110 data_set = self.data_source.request(f"SELECT Objekt FROM {self.file_name} WHERE MitgliedschaftsNr = {mitglied.mitgliedsnr}")
111 if type(data_set) is QError:
112 raise RuntimeError(data_set)
116 gr = f"{mitglied.strasse}, {mitglied.plz} {mitglied.ort}"
119 # Suche nach weiteren Grunstücken
120 data_set = self.data_source.request(f"SELECT `Weiteres Grundstück 1` FROM {self.file_name} WHERE MitgliedschaftsNr = {mitglied.mitgliedsnr}")
121 if type(data_set) is QError:
122 raise RuntimeError(data_set)
123 if data_set[0][0] != "":
124 gst.append(data_set[0][0])
126 data_set = self.data_source.request(f"SELECT `Weiteres Grundstück 2` FROM {self.file_name} WHERE MitgliedschaftsNr = {mitglied.mitgliedsnr}")
127 if type(data_set) is QError:
128 raise RuntimeError(data_set)
129 if data_set[0][0] != "":
130 gst.append(data_set[0][0])
132 data_set = self.data_source.request(f"SELECT `Weiteres Grundstück 3` FROM {self.file_name} WHERE MitgliedschaftsNr = {mitglied.mitgliedsnr}")
133 if type(data_set) is QError:
134 raise RuntimeError(data_set)
135 if data_set[0][0] != "":
136 gst.append(data_set[0][0])
139 class classproperty(object):
140 def __init__(self, f):
142 def __get__(self, obj, owner):
146 #def objects = MitgliederQuery()
151 cls._objects = MitgliederQuery()
152 ############################ Hack #########################
153 #cls._objects.init("svbal")
157 #@property : nette Idee, funktioniert aber nicht auf Klassenebene
161 _objects = MitgliederQuery()
162 print ("xxxxxxxxxxxxxxxxxxxxxxtype _objects",type(_objects))
168 def VersicherteGrundstucke(self):
169 return self.objects.VersicherteGrundstucke(self)