]> wagnertech.de Git - SVBaL.git/commitdiff
Konflikte beseitigt und Template Abstürze umgangen.
authorSimon Wagner <simon@wagnertech.de>
Wed, 7 May 2025 12:28:06 +0000 (14:28 +0200)
committerSimon Wagner <simon@wagnertech.de>
Wed, 7 May 2025 12:28:06 +0000 (14:28 +0200)
1  2 
python/eh_util/eh_app/AWK/routines.py
python/eh_util/eh_app/qmodels.py
python/eh_util/eh_app/views.py
python/eh_util/eh_util/settings.py

index 4a98c0ebdae4e1faa59023bf2a509cdb84afedea,b621b377e56381594a68fa6f0eb784f6f1d01e41..b0d8cd2382a19881dbb9e3d2d2f1e70ebecc9040
@@@ -1,5 -1,4 +1,5 @@@
  import os
 +from eh_app.AWK import config
  '''
  def handle_uploaded_file(csv_file):
      csv_file_name = str(csv_file)
@@@ -10,7 -9,7 +10,7 @@@
              destination.write(chunk)
  '''
  def aktualisiere_config(config, data, file):
 -    
 +
      if file:
          uploaded_file = file.name
          data_path = config.requireConfig("data_path")
              for chunk in file.chunks():
                  destination.write(chunk)
          config.setConfig("briefpapier", uploaded_file)
 -    
 +
      if data["basisbeitrag"]:
          config.setConfig("beitrag_basis", data["basisbeitrag"])
 -        
 +
      if data["zusatzbeitrag"]:
          config.setConfig("beitrag_zusatz", data["zusatzbeitrag"])
      
 -def erstellepdf(text):
 -    with open(r'G:\SVBaL\python\eh_util\eh_app\test.tex', 'w') as f: # öffnet ein neues Dokument mit dem Namen test.tex
 -        f.write(text) # schreibt in dieses neue Dokument
 -        
 -    # TODO: AUfruf PDF latex tex -> pdf
 -
  def erstelle_ehmeldung(data):
      from PyPDF2 import PdfFileWriter, PdfFileReader
      from datetime import date
@@@ -37,6 -42,8 +37,8 @@@
      can = canvas.Canvas(packet, pagesize=letter)
      
      # Adressfeld
+     can.setFont("Helvetica", 14)
+     can.drawString(80, 770, "Siedlervereinigung Berg am Laim")
      can.setFont("Helvetica", 12)
      can.drawString(205, 618, data["VorZuname"])
      can.drawString(205, 600, data["VorZunamePartner"])
      can.drawString(205, 500, versichertes_object)
      can.drawString(193, 466, str(data["AnzahlWohnungen"]))
      if data["Selbstgenutzt"]:
-         can.drawString(350, 466, "X")
+         can.drawString(360, 466, "X")
      if data["Eigentumswohnung"]:
-         can.drawString(188, 449, "X")
+         can.drawString(192, 449, "X")
      if data["Gewerblich"]:
-         can.drawString(350, 449, "X")
+         can.drawString(360, 449, "X")
      can.drawString(140, 376, date.today().strftime('%d.%m.%Y'))
      can.drawString(350, 376, "Maschinell erstellt.")
          
      output.write(output_stream)
      output_stream.close()
        
 +def pdfs_erstellen(request, verein):
 +    from django.template import loader
 +    
 +    # lese alle Miglieder
 +    cf = config.getInstance("svbal")
 +    cf.setConfig("DataFile", "../../Test/etc/Export.csv")
 +    from eh_app.qmodels import Mitglied
 +    mm = Mitglied.objects.all()
 +    template = loader.get_template("brief.tex")
 +    
 +    from eh_app.AWK.pdf_ersteller import PdfErsteller
 +    pe = PdfErsteller(request, template, "../../latex")
 +    
 +    # Erstelle PDFs
 +    for m in mm:
 +        pe.erstellepdf(m)
 +                   
index 5aab591cf887b5ecd5c2f31c948370b93f0a0a3c,3e0e1342f3b1168d462355bfa904288497408d22..6eb376ff8a0f40ecad3120bbc8ee03b85925ffe7
@@@ -3,6 -3,7 +3,7 @@@ Created on 04.12.202
  
  @author: sparky2021
  '''
+ from q import QError
  from qif import QIF
  from .AWK import config
  
@@@ -14,12 -15,14 +15,14 @@@ class MitgliederQuery
              H (header line): yes
          '''
          self.file_name = config.getInstance().requireConfig("DataFile")
-         self.att_list = "`Mitglieds-Nr`, Anrede, Vorname, Nachname, `Straße`, PLZ, Ort, Geburtsdatum, Eintrittsdatum, Austrittsdatum, Zahlungsart, Iban, Bic, Kontoinhaber, Mandatsreferenz, `KommE-Mail_P1`"
+         self.att_list = "`Mitglieds-Nr`, Anrede, Vorname, Nachname, `Straße`, PLZ, Ort, Geburtsdatum, Eintrittsdatum, Austrittsdatum, Zahlungsart, Iban, Bic, Kontoinhaber, Mandatsreferenz, `E-Mail`"
          #                 0              1       2        3          4        5    6    7             8               9               10           11    12   13            14     15         16              17     
      def all(self):
          import datetime
          
-         data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE Abteilung_1 = 'Standard'")
+         data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE Abteilungen LIKE 'Standard%'")
+         if type(data_set) is QError:
+             raise RuntimeError(data_set)
          mm = []
          for data in data_set:
              eintrittsdatum = datetime.datetime.strptime(data[8], '%d.%m.%Y')
      
      def VersicherteGrundstucke(self, mitglied):
          # Hole Basiseintrag
-         data_set = self.data_source.request(f"SELECT Freifeldwert_2 FROM {self.file_name} WHERE `Mitglieds-Nr` = {mitglied.mitgliedsnr}")
++
+         data_set = self.data_source.request(f"SELECT VersichertesObjekt FROM {self.file_name} WHERE `Mitglieds-Nr` = {mitglied.mitgliedsnr}")
+         if type(data_set) is QError:
+             raise RuntimeError(data_set)
          if data_set[0][0]:
              gr = data_set[0][0]
          else:
@@@ -90,7 -95,9 +96,9 @@@
          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}")
+         data_set = self.data_source.request(f"SELECT VersichertesObjekt FROM {self.file_name} WHERE Zahlungsart LIKE '%(AZ: {mitglied.nachname}, {mitglied.vorname})'")
+         if type(data_set) is QError:
+             raise RuntimeError(data_set)
          for data in data_set:
              if len(data[0]) > 0:
                  gst.append(data[0])
index 820718a0075758f1bf5ecce152157f188840bced,4cd1ae8f4aaf771f884fd4aa33a956c3b82ec212..d5f2080838f79ec3cc691fff9eb8d969d5643801
@@@ -8,7 -8,6 +8,7 @@@ from django.template import loade
  from .AWK import config, routines
  #import .forms 
  from .forms import EhmeldungForm, KassenbriefForm
 +from eh_app.AWK.pdf_ersteller import PdfErsteller
  
  # Create your views here.
  
@@@ -27,22 -26,29 +27,25 @@@ def index(request, verein)
      template = loader.get_template("vbasis.html")
      return HttpResponse(template.render({"verein" : verein}, request))
  
 -def tex_bearbeiten(request, verein):
 -    template = loader.get_template("brief.tex")
 -    tex_bearbeitet = template.render({"Anrede" : 'Frau'}, {"Nachname" : 'Wagner'}, request)
 -                   
 -@login_required
 +#@login_required
  def kassenbrief(request, verein):
      fehlertext = ""
      # Hole Daten aus der Config
      vconf = config.getInstance(verein)
-     briefpapier    = vconf.getConfig("briefpapier")
      beitrag_basis  = vconf.getConfig("beitrag_basis", 0)
      beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
-     briefpapier_label = briefpapier
-     if not briefpapier:
-         briefpapier_label = "Kein Briefpapier ausgewäht"
+     # suche Templates
+     import os
+     dirlist = os.listdir("eh_app/templates/"+verein) # returns list
+     template_list = []
+     for t in dirlist:
+         template_list.append((t,t))
      
      # if this is a POST request we need to process the form data
      if request.method == 'POST':
          # create a form instance and populate it with data from the request:
-         form = KassenbriefForm(request.POST, request.FILES)
+         form = KassenbriefForm(request.POST, request.FILES, dirlist)
          # check whether it's valid:
          if form.is_valid():
              # bei Änderungen Konfiguration aktualisieren
              
              # wenn Werte gefüllt 
              else:
 -                routines.erstellepdf('Hallo Welt')
 +                routines.pdfs_erstellen(request, verein)
                  
                  # redirect to a new URL:
                  return HttpResponseRedirect('erfolg')
  
      # if a GET (or any other method) we'll create a blank form
      else:
-         form = KassenbriefForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
+         form = KassenbriefForm(templates=template_list, initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
+         #form = KassenbriefForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
  
-     return render(request, 'kassenbrief.html', {'form': form, 'verein': verein, 'briefpapier': briefpapier_label, 'fehlertext' : fehlertext})
+     return render(request, 'kassenbrief.html', {'form': form, 'verein': verein, 'fehlertext' : fehlertext})
      
      '''
      template = loader.get_template("kassenbrief.html")
index 0517206a20140e21455460496df94a6047a96a88,ccd8d18d13f9cdab94a98894aa524c0f5001598b..57fc9fa3065741212433b260079990260ea48005
@@@ -57,7 -57,7 +57,7 @@@ ROOT_URLCONF = 'eh_util.urls
  TEMPLATES = [
      {
          'BACKEND': 'django.template.backends.django.DjangoTemplates',
-         'DIRS': ["eh_util/templates", "/opt/eh_util/eh_util/templates"],
+         'DIRS': ["eh_util/templates", "eh_utils/eh_app/templates/svbal"],
          'APP_DIRS': True,
          'OPTIONS': {
              'context_processors': [
@@@ -79,7 -79,7 +79,7 @@@ WSGI_APPLICATION = 'eh_util.wsgi.applic
  DATABASES = {
      'default': {
          'ENGINE': 'django.db.backends.sqlite3',
 -        'NAME': 'db.sqlite3',
 +        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
      }
  }
  
  # https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
  
  AUTH_PASSWORD_VALIDATORS = [
-     {
-         'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
-     },
-     {
-         'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
-     },
-     {
-         'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
-     },
-     {
-         'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
-     },
+     #{
+     #    'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+     #},
+     #{
+     #    'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+     #},
+     #{
+     #    'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+     #},
+     #{
+     #    'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+     #},
  ]