]> wagnertech.de Git - SVBaL.git/commitdiff
vorlagen_verwalten:
authorSimon Wagner <simon@wagnertech.de>
Wed, 21 May 2025 12:40:35 +0000 (14:40 +0200)
committerSimon Wagner <simon@wagnertech.de>
Wed, 21 May 2025 12:40:35 +0000 (14:40 +0200)
-Installierte Vorlagen anzeigen
-Anklickbare Kästchen vor jedem Eintrag
-Löschen Knopf um alle ausgewählen Vorlagen zu löschen
-Filefield für neue Vorlagen

python/eh_util/eh_app/AWK/routines.py
python/eh_util/eh_app/forms.py
python/eh_util/eh_app/templates/kassenbrief.html
python/eh_util/eh_app/urls.py
python/eh_util/eh_app/views.py

index b0d8cd2382a19881dbb9e3d2d2f1e70ebecc9040..fffbfaa50962ec660ac72c9584364bf8b635ed2e 100644 (file)
@@ -32,7 +32,7 @@ def erstelle_ehmeldung(data):
     import io
     from reportlab.pdfgen import canvas
     from reportlab.lib.pagesizes import letter
-    
+   
     packet = io.BytesIO()
     can = canvas.Canvas(packet, pagesize=letter)
     
index bf19011018ec6ed8ee8f0ff10a9e84f1ad190ff5..63601f721f48e59b2908b7f03ba4cac73406d581 100644 (file)
@@ -23,7 +23,17 @@ https://docs.djangoproject.com/en/2.2/topics/forms/
 - Doku zu Fields:
 https://docs.djangoproject.com/en/2.2/ref/forms/fields/
 '''
-class KassenbriefForm(forms.Form):
+class VorlagenForm(forms.Form):
+    template      = forms.ChoiceField(choices=())
+    def __init__(self, *args, templates=[('AB', 'ab'),('BC','bc')], **kwargs):
+        #self.templates = templates
+        super().__init__(*args, **kwargs)
+        self.fields['template'].choices = templates
+
+class BeitragForm(forms.Form):
+    basisbeitrag  = forms.IntegerField()
+    zusatzbeitrag = forms.IntegerField(label="Beitrag für Zusatzgrundstück")
+class KassenbriefForm_alt(forms.Form):
     #briefpapier   = forms.FileField(label='Briefpapier ändern:', required=False)
     template      = forms.ChoiceField(choices=())
     basisbeitrag  = forms.IntegerField()
index 08cdd2711dc5c06d0b032d2421be0e90747d8f31..22e22f37a9c37a905428e3b2fd82c101da2e3dca 100644 (file)
@@ -7,14 +7,33 @@
 <p>Überprüfen Sie folgende Eingabedaten:</p>
 <hr>
 
-<h2>Template</h2>
+<h2>Kassenbriefvorlagen</h2>
+<p class="fehler">{{fehlertext_template}}</p>
 
-<form action="/{{verein}}/kassenbrief/" method="post" enctype="multipart/form-data">
+<form action="/{{verein}}/template_andern/" method="post" enctype="multipart/form-data">
 {% csrf_token %}
 <table>
-{{form}}
+{{vorlagen_form}}
+</table>
+<br>
+<a href = "/{{verein}}/vorlagen_verwalten/">Kassenbriefvorlagen verwalten</a>
+<p><input type="submit" value="Speichern"/>
+</form>
+
+<hr>
+<h2>Beiträge</h2>
+<form action="/{{verein}}/template_andern/" method="post" enctype="multipart/form-data">
+<table>
+{{beitrag_form}}
 </table>
-{{fehlertext}}
+<p><input type="submit" value="Speichern"/>
+</form>
+<hr>
+<hr>
+
+<form action="/{{verein}}/kassenbrief/" method="post" enctype="multipart/form-data">
+{% csrf_token %}
 <p><input type="submit" value="Erstellen"/>
 </form>
 </body>
index f94cf602a438141332aacaf860f4c275d00992fc..d991005fea78a02c577ed517ad935a505da041ac 100644 (file)
@@ -5,6 +5,7 @@ from . import views
 urlpatterns = [
     path('', views.index),
     path('kassenbrief/', views.kassenbrief),
+    path('vorlagen_verwalten/', views.vorlagen_verwalten),
     path('kassenbrief/erfolg', views.kassenbrief_erfolg),
     path('kassenbrief/download', views.kassenbrief_download),
     path('ehmeldung/', views.ehmeldung),
index d5f2080838f79ec3cc691fff9eb8d969d5643801..cfcd7c219f3064a67c4e7d1f76890bbf7600c71d 100644 (file)
@@ -7,8 +7,9 @@ from django.template import loader
 
 from .AWK import config, routines
 #import .forms 
-from .forms import EhmeldungForm, KassenbriefForm
+from .forms import EhmeldungForm, VorlagenForm, BeitragForm
 from eh_app.AWK.pdf_ersteller import PdfErsteller
+from test.test_codeccallbacks import NoEndUnicodeDecodeError
 
 # Create your views here.
 
@@ -27,8 +28,58 @@ def index(request, verein):
     template = loader.get_template("vbasis.html")
     return HttpResponse(template.render({"verein" : verein}, request))
 
+def vorlagen_verwalten(request, verein):
+    template = loader.get_template("vorlagen_verwalten.html")
+    return HttpResponse(template.render({"verein" : verein}, request))
+    '''
+    ---------------------------------------------------------------
+    Neue Templates installieren
+    
+    <Dateiauswahlknopf>
+    <Knopf"Installieren">
+    '''
+    pass
 #@login_required
 def kassenbrief(request, verein):
+    '''
+    GET:
+    Diese Methode liest aus der Config die Einstellungen und zeigt sie an.
+    
+    POST: 
+    Diese Methode bearbeitet den finalen "Erstellen"
+    
+    Die Unterformulare (z.B. Beitrag ändern) landen in einer eigenen Methode, die die 
+    Einstellungen in der Config ändert und dann diese hier mit GET aufruft.
+    '''
+    '''
+    ---------------------------------------------------------------
+    Templateauswahl
+    
+    Ausgewähltes Template: <Wert aus Config>
+    Klappliste <Knopf"Template ändern">
+    Link -> Neue Templates installieren
+    ---------------------------------------------------------------
+    '''
+    fehlertext_vorlage = ""
+    vconf = config.getInstance(verein)
+    beitrag_basis  = vconf.getConfig("beitrag_basis", 0)
+    beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
+    vorlagen_liste = ['T1']
+    vorlagen_form = VorlagenForm(templates=vorlagen_liste)
+    beitrag_form = BeitragForm
+    if request.method == 'POST':
+        vorlagen_form = VorlagenForm(request.POST, request.FILES)
+        beitrag_form = BeitragForm(request.POST, request.FILES)
+        if vorlagen_form.is_valid() and beitrag_form.is_valid():
+            routines.aktualisiere_config(vconf, vorlagen_form.cleaned_data, beitrag_form.cleaned_data)
+            if not vorlagen_liste:
+                fehlertext_vorlage = "Bitte Kassenbriefvorlage auswählen"
+            else:   
+                routines.pdfs_erstellen(request, verein)
+                return HttpResponseRedirect('erfolg')
+    return render(request, 'kassenbrief.html', {'vorlagen_form': vorlagen_form, 'beitrag_form': beitrag_form,'verein': verein, 'fehlertext' : fehlertext_vorlage})
+   
+def kassenbrief_alt(request, verein):
     fehlertext = ""
     # Hole Daten aus der Config
     vconf = config.getInstance(verein)
@@ -37,51 +88,58 @@ def kassenbrief(request, verein):
 
     # suche Templates
     import os
-    dirlist = os.listdir("eh_app/templates/"+verein) # returns list
-    template_list = []
-    for t in dirlist:
-        template_list.append((t,t))
+    dirlist = None
+    if os.path.isdir("eh_app/templates/"+verein):
+        dirlist = os.listdir("eh_app/templates/"+verein) # returns list
+    if dirlist:
+        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':
+            # 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, dirlist)
-        # check whether it's valid:
-        if form.is_valid():
-            # bei Änderungen Konfiguration aktualisieren
-            routines.aktualisiere_config(vconf, form.cleaned_data, request.FILES.get('briefpapier_neu', None))
+            form = KassenbriefForm(request.POST, request.FILES, dirlist)
+            # check whether it's valid:
+            if form.is_valid():
+                # bei Änderungen Konfiguration aktualisieren
+                routines.aktualisiere_config(vconf, form.cleaned_data, request.FILES.get('briefpapier_neu', None))
             
-            #Stammdaten neu aus Datenbank lesen und prüfen
-            briefpapier    = vconf.getConfig("briefpapier")
-            beitrag_basis  = int(vconf.getConfig("beitrag_basis", 0))
-            beitrag_zusatz = int(vconf.getConfig("beitrag_zusatz", 0))
-            briefpapier_label = briefpapier
-            if not briefpapier:
-                briefpapier_label = "Kein Briefpapier ausgewäht"
+                #Stammdaten neu aus Datenbank lesen und prüfen
+                briefpapier    = vconf.getConfig("briefpapier")
+                beitrag_basis  = int(vconf.getConfig("beitrag_basis", 0))
+                beitrag_zusatz = int(vconf.getConfig("beitrag_zusatz", 0))
+                briefpapier_label = briefpapier
+                if not briefpapier:
+                    briefpapier_label = "Kein Briefpapier ausgewäht"
             
-            # prüfen ob Werte gefüllt
-            if briefpapier is None:
-                fehlertext = "Bitte Briefpapier auswählen."
-            elif beitrag_basis == 0 and beitrag_zusatz == 0:
-                fehlertext = "Bitte Basisbeitrag und Zusatzbeitrag ausfüllen."
-            elif beitrag_basis == 0:
-                fehlertext = "Bitte Basisbeitrag ausfüllen."
-            elif beitrag_zusatz == 0:
-                fehlertext = "Bitte Zusatzbeitrag ausfüllen."
+                    # prüfen ob Werte gefüllt
+                if briefpapier is None:
+                    fehlertext = "Bitte Briefpapier auswählen."
+                elif beitrag_basis == 0 and beitrag_zusatz == 0:
+                    fehlertext = "Bitte Basisbeitrag und Zusatzbeitrag ausfüllen."
+                elif beitrag_basis == 0:
+                    fehlertext = "Bitte Basisbeitrag ausfüllen."
+                elif beitrag_zusatz == 0:
+                    fehlertext = "Bitte Zusatzbeitrag ausfüllen."
             
-            # wenn Werte gefüllt 
-            else:
-                routines.pdfs_erstellen(request, verein)
+                # wenn Werte gefüllt 
+                else:
+                    routines.pdfs_erstellen(request, verein)
                 
-                # redirect to a new URL:
-                return HttpResponseRedirect('erfolg')
+                    # redirect to a new URL:
+                    return HttpResponseRedirect('erfolg')
 
-    # if a GET (or any other method) we'll create a blank form
+
+        # if a GET (or any other method) we'll create a blank form
+        else:
+            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, 'fehlertext' : fehlertext})
     else:
-        form = KassenbriefForm(templates=template_list, initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
-        #form = KassenbriefForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
+        fehlertext = "Bitte Templates anlegen."
+        return render(request, 'fehler.html', {'verein': verein, 'fehlertext' : fehlertext})
 
-    return render(request, 'kassenbrief.html', {'form': form, 'verein': verein, 'fehlertext' : fehlertext})
     
     '''
     template = loader.get_template("kassenbrief.html")