]> wagnertech.de Git - SVBaL.git/commitdiff
pydev-s6git
authorMichael Wagner <mail@wagnertech.de>
Mon, 31 Mar 2025 15:17:44 +0000 (17:17 +0200)
committerMichael Wagner <mail@wagnertech.de>
Mon, 31 Mar 2025 15:17:44 +0000 (17:17 +0200)
python/eh_util/eh_app/forms.py
python/eh_util/eh_app/qmodels.py
python/eh_util/eh_app/templates/kassenbrief.html
python/eh_util/eh_util/settings.py
python/eh_util/eh_util/urls.py
python/eh_util/eh_util/views.py

index 396bbe268aed8b952d24c68f42ec52c771f59797..0b71c693e90190669dec985f642fcf626bc09195 100644 (file)
@@ -24,9 +24,14 @@ https://docs.djangoproject.com/en/2.2/topics/forms/
 https://docs.djangoproject.com/en/2.2/ref/forms/fields/
 '''
 class KassenbriefForm(forms.Form):
 https://docs.djangoproject.com/en/2.2/ref/forms/fields/
 '''
 class KassenbriefForm(forms.Form):
-    briefpapier   = forms.FileField(label='Briefpapier ändern:', required=False)
+    #briefpapier   = forms.FileField(label='Briefpapier ändern:', required=False)
+    template      = forms.ChoiceField(choices=[('AB', 'ab'),('BC','bc')])
     basisbeitrag  = forms.IntegerField()
     zusatzbeitrag = forms.IntegerField(label="Beitrag für Zusatzgrundstück")
     basisbeitrag  = forms.IntegerField()
     zusatzbeitrag = forms.IntegerField(label="Beitrag für Zusatzgrundstück")
+    def __init__(self, *args, templates=[('AB', 'ab'),('BC','bc')], **kwargs):
+        self.templates = templates
+        KassenbriefForm.template      = forms.ChoiceField(choices=templates)
+        super().__init__(*args, **kwargs)
 
 class EhmeldungForm(forms.Form):
     VorZuname = forms.CharField(
 
 class EhmeldungForm(forms.Form):
     VorZuname = forms.CharField(
index b50354680b2f0538e55190d2b5d29bc910b92301..bfa577c4dc2a4f046b8f50cb449375364a02e703 100644 (file)
@@ -3,6 +3,7 @@ Created on 04.12.2024
 
 @author: sparky2021
 '''
 
 @author: sparky2021
 '''
+from q import QError
 from qif import QIF
 from .AWK import config
 
 from qif import QIF
 from .AWK import config
 
@@ -20,6 +21,8 @@ class MitgliederQuery:
         import datetime
         
         data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE Abteilung_1 = 'Standard'")
         import datetime
         
         data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE Abteilung_1 = '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')
         mm = []
         for data in data_set:
             eintrittsdatum = datetime.datetime.strptime(data[8], '%d.%m.%Y')
@@ -46,7 +49,7 @@ class MitgliederQuery:
             # m.geburtsdatum   = data[7]
             # "Austrittsgrund"
             # m.zahlungsart    = data[16]
             # m.geburtsdatum   = data[7]
             # "Austrittsgrund"
             # m.zahlungsart    = data[16]
-            # m.iban           = data[17]
+            m.iban           = data[11]
             # m.bic            = data[18]
             # "Kontonummer"
             # "Bankleitzahl"
             # m.bic            = data[18]
             # "Kontonummer"
             # "Bankleitzahl"
@@ -82,7 +85,7 @@ class MitgliederQuery:
     
     def VersicherteGrundstucke(self, mitglied):
         # Hole Basiseintrag
     
     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}")
+        data_set = self.data_source.request(f"SELECT Freifeldwert_2 FROM {self.file_name} WHERE `Mitglieds-Nr` = {mitglied.mitgliedsnr}")
         if data_set[0][0]:
             gr = data_set[0][0]
         else:
         if data_set[0][0]:
             gr = data_set[0][0]
         else:
@@ -92,7 +95,11 @@ class MitgliederQuery:
         # 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:
         # 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])
+            if len(data[0]) > 0:
+                gst.append(data[0])
+            else:
+                gst.append(f"{mitglied.strasse}, {mitglied.plz} {mitglied.ort}")
+                
         return gst
     
 class Mitglied:
         return gst
     
 class Mitglied:
index f1d906bd1ecbcb345d4f1070b803a8ba5ed76a8a..08cdd2711dc5c06d0b032d2421be0e90747d8f31 100644 (file)
@@ -4,11 +4,14 @@
 </head>
 <body>
 <h1>Erstellung Kassenbrief</h1>
 </head>
 <body>
 <h1>Erstellung Kassenbrief</h1>
-<p>Überprüfen Sie folgende Eingabedaten</p>
+<p>Überprüfen Sie folgende Eingabedaten:</p>
+<hr>
+
+<h2>Template</h2>
+
 <form action="/{{verein}}/kassenbrief/" method="post" enctype="multipart/form-data">
 {% csrf_token %}
 <table>
 <form action="/{{verein}}/kassenbrief/" method="post" enctype="multipart/form-data">
 {% csrf_token %}
 <table>
-<tr><th>Briefpapier:</th><td>{{briefpapier}}</td></tr>
 {{form}}
 </table>
 {{fehlertext}}
 {{form}}
 </table>
 {{fehlertext}}
index 1264b3cef16f50749adc82d595cc9b1c3bcd3ffd..6a67c6e00be2dc61d1598c7ad1fee7e00967cc64 100644 (file)
@@ -79,7 +79,7 @@ WSGI_APPLICATION = 'eh_util.wsgi.application'
 DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.sqlite3',
 DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.sqlite3',
-        'NAME': '/var/django/eh_util.sqlite3',
+        'NAME': 'db.sqlite3',
     }
 }
 
     }
 }
 
@@ -88,18 +88,18 @@ DATABASES = {
 # https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
 
 AUTH_PASSWORD_VALIDATORS = [
 # 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',
+    #},
 ]
 
 
 ]
 
 
index 2cb5b2a1b6c522d0377637e08c37fdbba6d79a31..0d8d93c19135112f003f8ec1205dab70c7675d5c 100644 (file)
@@ -20,6 +20,7 @@ from . import views
 
 urlpatterns = [
     path('', views.index),
 
 urlpatterns = [
     path('', views.index),
+    path('accounts/login/', views.login),
     path('admin/', admin.site.urls),
     path('eh-abgleich/', include('eh_abgleich.urls')),
 #    path('<slug:verein>/', views.vbasis),
     path('admin/', admin.site.urls),
     path('eh-abgleich/', include('eh_abgleich.urls')),
 #    path('<slug:verein>/', views.vbasis),
index 990de52c2fc2eb165aad1c03c18a2a67e2013642..e4e8444b52975d88f3cb3726969c74db76804936 100644 (file)
@@ -7,8 +7,45 @@ def index(request):
     template = loader.get_template('index.html')
     return HttpResponse(template.render({}, request))    
 
     template = loader.get_template('index.html')
     return HttpResponse(template.render({}, request))    
 
+def login(request):
+    from django.contrib.auth import authenticate
+    from .forms import LoginForm
+
+    fehlertext = ""
+    # 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 = LoginForm(request.POST, request.FILES)
+        # check whether it's valid:
+        if form.is_valid():
+            user = authenticate(
+                username = request.POST["name"], 
+                password = request.POST["password"],
+            )
+        if user is None:
+            # login fehlgeschlagen
+            fehlertext = "Login fehlgeschlagen"
+            
+        else:
+            next = request.POST.get("next", None)
+            if next:
+                return HttpResponseRedirect(next)
+            else:
+                return HttpResponseRedirect('/')
+
+    # if a GET (or any other method) we'll create a blank form
+    else:
+        next   = None
+        verein = ""
+        next = request.GET.get("next", None)
+        if next:
+            path_elems = next.split("/")
+            verein = path_elems[1]
+        form = LoginForm(initial={'next': next, 'verein': verein})
+
+    return render(request, 'login.html', {'form': form, 'fehlertext': fehlertext})
+    
 def vbasis(request, verein):
     template = loader.get_template("vbasis.html")
     return HttpResponse(template.render({"verein" : verein}, request))
 
 def vbasis(request, verein):
     template = loader.get_template("vbasis.html")
     return HttpResponse(template.render({"verein" : verein}, request))
 
-    
\ No newline at end of file