From: Michael Wagner Date: Mon, 27 Jan 2025 21:28:52 +0000 (+0100) Subject: bazuna X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/SVBaL.git/commitdiff_plain/8ea07baf648aec101fc6c1a8a25012f3613dd04a bazuna --- diff --git a/python/eh_util/eh_app/qmodels.py b/python/eh_util/eh_app/qmodels.py index 83c6a85..b503546 100644 --- a/python/eh_util/eh_app/qmodels.py +++ b/python/eh_util/eh_app/qmodels.py @@ -14,62 +14,87 @@ class MitgliederQuery: H (header line): yes ''' self.file_name = config.getInstance().requireConfig("DataFile") - self.att_list = "Mitglieds-Nr, Anrede, Vorname, Nachname, Strasse, PLZ, Ort, Geburtsdatum, Eintrittsdatum, Austrittsdatum, Zahlungsart, Iban, Bic, Kontoinhaber, Mandatsreferenz, Email, " - # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 + self.att_list = "`Mitglieds-Nr`, Anrede, Vorname, Nachname, `Straße`, PLZ, Ort, Geburtsdatum, Eintrittsdatum, Austrittsdatum, Zahlungsart, Iban, Bic, Kontoinhaber, Mandatsreferenz, `KommE-Mail_P1`" + # 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 def all(self): - data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE Abteilung_1 = 'Standard' AND Eintrittsdatum < NOW AND Austrittsdatum > NOW") + import datetime + + data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE Abteilung_1 = 'Standard'") + mm = [] for data in data_set: + eintrittsdatum = datetime.datetime.strptime(data[8], '%d.%m.%Y') + if eintrittsdatum > datetime.datetime.today(): + continue + if data[9] != "": + austrittsdatum = datetime.datetime.strptime(data[9], '%d.%m.%Y') + if austrittsdatum < datetime.datetime.today(): + continue m = Mitglied() m.mitgliedsnr = data[0] - m.anrede = data[0] - m.vorname = data[1] - m.nachname = data[2] - m.strasse = data[3] + m.anrede = data[1] + m.vorname = data[2] + m.nachname = data[3] + m.strasse = data[4] # "Zusatzadresse" - m.plz = data[4] - m.ort = data[5] + m.plz = data[5] + m.ort = data[6] + # "Land" # "Titel" # "Geschlecht" # "Familienstand" # m.geburtsdatum = data[7] # "Austrittsgrund" - m.zahlungsart = data[16] - m.iban = data[17] - m.bic = data[18] + # m.zahlungsart = data[16] + # m.iban = data[17] + # m.bic = data[18] # "Kontonummer" # "Bankleitzahl" # "Kreditinstitut" - m.kontoinhaber = data[22] - m.mandatsreferenz = data[23] - m.debitorenkontonr = data[24] + # m.kontoinhaber = data[22] + # m.mandatsreferenz = data[23] + # m.debitorenkontonr = data[24] # m.status = data[25] # "Branche" # "Notfallnummer" # "Notfallkontakt" - m.email = data[29] # "KommE-Mail_P1" + # m.email = data[29] # "KommE-Mail_P1" # "KommFax_P1" # "KommMobil_P1" # "KommWeb_P1" # "KommTelefon_P1" # "KommSkype_P1" - m.abteilung_1 = data[35] - m.abteilungseintritt_1 = data[36] - m.abteilungsaustritt_1 = data[37] - if data[67] == '""': - m.stammnummer = 0 - else: - m.stammnummer = int(m.rd_opt_qval(data[67])) + # m.abteilung_1 = data[35] + # m.abteilungseintritt_1 = data[36] + # m.abteilungsaustritt_1 = data[37] + # if data[67] == '""': + # m.stammnummer = 0 + # else: + # m.stammnummer = int(m.rd_opt_qval(data[67])) # "Freifeldname_2" - m.ver_grund = m.rd_opt_qval(data[69]) - if len(m.ver_grund) == 0: - m.ver_grund = f"{m.strasse}, {m.plz} {m.ort}" + # m.ver_grund = m.rd_opt_qval(data[69]) + # if len(m.ver_grund) == 0: + # m.ver_grund = f"{m.strasse}, {m.plz} {m.ort}" # "Freifeldname_3" - m.zeitung = data[71] - def VersicherteGrundstucke(self, mitglied_id): - data_set = self.data_source.request(f"SELECT Freifeldwert_1 FROM {self.file_name} WHERE ") - + # m.zeitung = data[71] + mm.append(m) + return mm + + def VersicherteGrundstucke(self, mitglied): + # Hole Basiseintrag + data_set = self.data_source.request(f"SELECT Freifeldwert_1 FROM {self.file_name} WHERE `Mitglieds-Nr` = {mitglied.mitgliedsnr}") + if data_set[0][0]: + gr = data_set[0][0] + else: + gr = f"{mitglied.strasse}, {mitglied.plz} {mitglied.ort}" + gst = [gr] + # Suche nach weiteren Grunstücken + data_set = self.data_source.request(f"SELECT Freifeldwert_2 FROM {self.file_name} WHERE Freifeldname_1 = 'Partnernummer' AND Freifeldwert_1 = {mitglied.mitgliedsnr}") + for data in data_set: + gst.append(data[0]) + return gst + class Mitglied: # TODO: In property verwandeln objects = MitgliederQuery() @@ -77,5 +102,4 @@ class Mitglied: pass def VersicherteGrundstucke(self): - return self.objects.VersicherteGrundstucke(self.mitgliedsnr) - + return self.objects.VersicherteGrundstucke(self) diff --git a/python/eh_util/eh_app/tests.py b/python/eh_util/eh_app/tests.py index dd8e750..3e78879 100644 --- a/python/eh_util/eh_app/tests.py +++ b/python/eh_util/eh_app/tests.py @@ -1,27 +1,30 @@ from django.test import TestCase # Create your tests here. +from .AWK import config class TestConfig(TestCase): def test_setter(self): - from .AWK import config cf = config.getInstance("svbal") cf.setConfig("bla", "blub") val = cf.getConfig("bla") assert (val == "blub") -''' class TestQModel(TestCase): + def setUp(self): + cf = config.getInstance("svbal") + cf.setConfig("DataFile", "/home/sparky2021/SVBaL/tmp/Export_20240417-1104.csv") + def test_allinstances(self): - - from .AWK import config config.getInstance("svbal") - from eh_app.qmodels import Mitglied - - config.getInstance("svbal") - - data = Mitglied.objects.all() - print (data) -''' + mm = Mitglied.objects.all() + assert (len(mm) == 199) + gst = mm[0].VersicherteGrundstucke() + assert (len(gst) == 1) + for m in mm: + if m.nachname == "Wagner": + gst = m.VersicherteGrundstucke() + assert (len(gst) == 3) + \ No newline at end of file