--- /dev/null
+!|test.util.CallScript|
+|call script|!-rm -r ~/test |true-!|
+|call script|mkdir -p ~/test/python/eh_util/eh_app|
+|call script|cp ../python/eh_util/eh_app/tests.py ~/test/python/eh_util/eh_app/|
+|call script|cp ../python/eh_util/manage.py ~/test/python/eh_util/|
+|call script|cd ~/test/python/eh_util/; ./manage.py test|
--- /dev/null
+<?xml version="1.0"?>
+<properties>
+ <Edit>true</Edit>
+ <Files>true</Files>
+ <Properties>true</Properties>
+ <RecentChanges>true</RecentChanges>
+ <Refactor>true</Refactor>
+ <Search>true</Search>
+ <Test>true</Test>
+ <Versions>true</Versions>
+ <WhereUsed>true</WhereUsed>
+</properties>
--- /dev/null
+"Anrede";"Vorname";"Nachname";"Straße";"Zusatzadresse";"PLZ";"Ort";"Land";"Titel";"Geschlecht";"Familienstand";"Mitglieds-Nr";"Geburtsdatum";"Eintrittsdatum";"Austrittsdatum";"Austrittsgrund";"Zahlungsart";"IBAN";"BIC";"Kontonummer";"Bankleitzahl";"Kreditinstitut";"Kontoinhaber";"Mandatsreferenz";"Debitorenkonto-Nr";"Status";"Branche";"Notfallnummer";"Notfallkontakt";"KommE-Mail_P1";"KommFax_P1";"KommMobil_P1";"KommWeb_P1";"KommTelefon_P1";"KommSkype_P1";"Abteilung_1";"Abteilungseintritt_1";"Abteilungsaustritt_1";"Abteilungsstatus_1";"Abteilungsstatus DFB_1";"Abteilungsaustrittsgrund_1";"Abteilung_2";"Abteilungseintritt_2";"Abteilungsaustritt_2";"Abteilungsstatus_2";"Abteilungsstatus DFB_2";"Abteilungsaustrittsgrund_2";"Beitragsbezeichnung_1_1";"Beitragsstart_1_1";"Beitragsende_1_1";"BeitragBerechnetBis_1_1";"BeitragZahlweise_1_1";"BeitragFälligkeitsdatum_1_1";"BeitragVariabel_1_1";"BeitragFormel_1_1";"BeitragGrundbetrag1_1_1";"BeitragGB1Gesperrt_1_1";"BeitragGrundbetrag2_1_1";"BeitragGB2Gesperrt_1_1";"BeitragGrundbetrag3_1_1";"BeitragGB3Gesperrt_1_1";"BeitragGrundbetrag4_1_1";"BeitragGB4Gesperrt_1_1";"BeitragGrundbetrag5_1_1";"BeitragGB5Gesperrt_1_1";"BeitragZahlweiseGesperrt_1_1";"Freifeldname_1";"Freifeldwert_1";"Freifeldname_2";"Freifeldwert_2";"Freifeldname_3";"Freifeldwert_3";"NotizArt_1";"NotizPrio_1";"NotizBetreff_1";"NotizInhalt_1";"NotizDatum_1"
+Herr;Horsti;Acktu;"Blombergstr. 30";"";81825;München;Deutschland;;;;"14962";25.04.1948;01.01.1998;31.12.2050;;;DE24700202701780047001;HYVEDEMMXXX;"1780047000";"70020270";"UniCredit Bank - HypoVereinsbank";Acktun Horst;"10058";"10253";Aktiv;;;;;"";"";;"4317535";;Standard;01.01.1998;;Aktiv;;;;;;;;;Standard;01.01.1998;;;Jahr;;nein;;;;;;;;;;;;;;"";;"";Zeitung;"Ja";;;;;
+Herr;Horsti;Acktu;"Blombergstr. 30";"";81825;München;Deutschland;;;;"14963";25.04.1948;01.01.1998;31.12.2023;;;DE24700202701780047001;HYVEDEMMXXX;"1780047000";"70020270";"UniCredit Bank - HypoVereinsbank";Acktun Horst;"10058";"10253";Aktiv;;;;;"";"";;"4317535";;Standard;01.01.1998;;Aktiv;;;;;;;;;Standard;01.01.1998;;;Jahr;;nein;;;;;;;;;;;;;;"";;"";Zeitung;"Ja";;;;;
+Herr und Frau;Dr. Michael und Ingrid;Wagner;"Turfstr. 18 a";"";81929;München;Deutschland;;Jur. Person oder sächlich;;"14964";;01.04.2024;;;Lastschrift;DE54700905000004428285;GENODEF1S04;"4428285";"70090500";"Sparda-Bank München";Wagner Dr. Michael und Ingrid;"10255";"10255";Aktiv;;;;;;;;;;;;;;;;Zusatzgrundstück;01.04.2024;;Aktiv;;;;;;;;;;;;;;;;;;;;;;Partnernummer;"76736";VersichertesObjekt;"Gleiwitzer Str. 26, 81929 München";Zeitung;"Nein";;;;;
+Herr und Frau;Dr. Michael und Ingrid;Wagner;"Turfstr. 18 a";"";81929;München;Deutschland;;;;"14965";;01.04.2024;;;Lastschrift;DE54700905000004428285;GENODEF1S04;"4428285";"70090500";"Sparda-Bank München";Wagner Dr. Michael und Ingrid;"10256";"10256";Aktiv;;;;;;;;;;;;;;;;Zusatzgrundstück;01.04.2024;;Aktiv;;;;;;;;;;;;;;;;;;;;;;Partnernummer;"76736";VersichertesObjekt;"Finkenweg 5, 83556 Griesstätt";Zeitung;"Nein";;;;;
+Herr und Frau;Dr. Michael und Ingrid;Wagner;"Turfstr. 18 a";"";81929;München;Deutschland;;;;"76736";25.05.1965;01.12.2012;;;Lastschrift;DE54700905000004428285;GENODEF1S04;"4428285";"70090500";"Sparda-Bank München";Wagner Dr. Michael und Ingrid;"10218";"10218";Aktiv;;;;bonzius@vindelicia.de;"";"";;"99 75 94 94";;Standard;01.12.2012;;Aktiv;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"";VersichertesObjekt;"81929 München, Gleiwitzerstr. 28";Zeitung;"Ja";;;;;
+Frau;Elke;Söller;"Argula-von-Grumbach-Sr. 5";"";92345;Dietfurt;Deutschland;;;;"77912";08.05.1979;01.07.2008;;;;;;;;;;"10193";"10193";Aktiv;;;;;"";"";;"084 64 / 64 21 79";;Standard;01.07.2008;;Aktiv;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"";VersichertesObjekt;"92363 Breitenbrunn, Breitenegg 1 a";Zeitung;"Ja";;;;;
+Frau;Marianne;Söller;"Böhmerbrunnenstr. 27";"";92345;Dietfurt;Deutschland;;;;"76441";;01.01.1995;;;;DE98760520800570713611;BYLADEM1NMA;"570713610";"76052080";"Sparkasse Neumarkt i d OPf-Parsberg";Söllner2 Marianne;"10249";"10249";Aktiv;;;;;;;;;;;;;;;;Zusatzgrundstück;01.01.1995;;Aktiv;;;;;;;;;;;;;;;;;;;;;;Partnernummer;"75987";;"";Zeitung;"Nein";;;;;
+Frau;Marianne;Söller;"Böhmerbrunnenstr. 27";"";92354;Dietfurt;Deutschland;;;;"75987";;01.01.1985;;;;DE98760520800570713611;BYLADEM1NMA;"570713610";"76052080";"Sparkasse Neumarkt i d OPf-Parsberg";Söllner Marianne;"10194";"10194";Aktiv;;;;;"";"";;"084 64 / 15 42";;Standard;01.01.1985;;Aktiv;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"";VersichertesObjekt;"92345 Dietfurt 2, Böhmerbrunnenstr. 21";Zeitung;"Ja";;;;;
+Frau;Marianne;Söller;"Böhmerbrunnenstr. 27";"";92345;Dietfurt;Deutschland;;;;"76491";;01.09.1992;;;;DE98760520800570713611;BYLADEM1NMA;"570713610";"76052080";"Sparkasse Neumarkt i d OPf-Parsberg";Söllner3 Marianne;"10250";"10250";Aktiv;;;;;;;;;;;;;;;;Zusatzgrundstück;01.09.1992;;Aktiv;;;;;;;;;;;;;;;;;;;;;;Partnernummer;"75987";VersichertesObjekt;"92363 Breitbrunn, Tannenweg 6";Zeitung;"Nein";;;;;
--- /dev/null
+#/bin/bash
+
+cd /home/sparky2021/SVBaL/latex
+pdflatex $1
\hypersetup{pdfpagemode=None}
\KOMAoptions{
paper=a4,
- pagenumber=botcenter,
+ pagenumber=false,
% fromalign=right,
% fromrule=afteraddress,
% fromphone,
% fromfax,
-% fromlogo,fromurl,fromemail,
+ fromlogo,
+% fromurl,fromemail,
% backaddress,
foldmarks,
% headsepline,footsepline,
+ headsepline=true, % Linie unter dem Header der Folgeseite
enlargefirstpage,
parskip=half
}
\setkomavar{frombank}{Eine Bank\\IBAN~123\,45\,678}
\setkomavar{place}{München}
\setkomavar{signature}{Michael Wagner\\1.Vorsitzender}
-\setkomavar{fromlogo}{\parbox[b]{8cm}{\usekomafont{fromaddress}%
- {\mbox{\LARGE \bfseries Dr.\ rer.\ nat.\ Joachim~Schlosser}}
- \smallskip}
-}
+%\setkomavar{fromlogo}{\parbox[b]{8cm}{\usekomafont{fromaddress}%
+% {\mbox{\LARGE \bfseries Dr.\ rer.\ nat.\ Joachim~Schlosser}}
+% \smallskip}
+%}
\setkomafont{backaddress}{\sffamily}
\setkomafont{fromaddress}{\sffamily}
-\addtokomafont{fromname}{\scriptsize}
+%\setkomavar{fromlogo}{\parbox[b]{8cm}{\includegraphics[width=2cm]{logo.jpeg}}}
+\setkomavar{fromlogo}{\includegraphics[width=2cm]{logo.jpeg}}
+\setkomavar{nexthead}{\mbox{\textbf{Siedlervereinigung Berg am Laim}} \usekomavar{fromlogo}}
+\headheight=2cm
+\setkomafont{fromname}{\sffamily}
\addtokomafont{fromaddress}{\scriptsize}
\pagestyle{headings}
%\CenterWallPaper{1}{MitgliederausweisSVBaLVorlage_leer_v2.pdf}
+++ /dev/null
-\documentclass{scrlttr2}
-\LoadLetterOption{brief}
-\setkomavar{date}{\vspace*{-6\baselineskip}\today}
-\begin{document}
-\begin{letter}{
- %\today \par \vspace*{2\baselineskip}
- \vspace*{11 mm}\small{Frau\\Erika Schwarze\\Wildenholzenerstr. 14\\81617 München}}
-
-\opening{\par \vspace*{3\baselineskip}Liebe Vereinsmitglieder!}
-\CenterWallPaper{1}{../Aktuell/BriefpapierSVBaLVorlage.pdf}
-Lass mich Dir die Welt zeigen,\\
-wie ich sie sehe ...\\
-Lass mich Deine Gefühle spüren,\\
-sodass ich sie verstehe ...\\
-Lass Dich in meine Arme sinken,\\
-Du bist nicht allein ...\\
-Lass Dich von meinen Träumen berühren,\\
-ich will bei dir sein.
-
-Ulrich Stamm
-
-\vspace*{1 cm}\hrule
-\vspace*{2 cm}
-In ungewissen Zeiten schafft die Beziehung zu einem geliebten Menschen uns Sicherheit, mit der wir voll Zuversicht ins neue Jahr gehen können.
-
-Der Vorstand der Siedlervereinigung Berg am Laim wünscht Ihnen gesegnete Weihnacht und viel Zuversicht im neuen Jahr.
-
-\pagebreak
-\ClearWallPaper
-
-\textbf{Nachrichten aus dem Verband}
-\begin{itemize}
-\item Baumschutzverordnung und Wärmeplan
-
- Die Vorstände der Siedlervereine des Münchner Ostens sind zu diesen im Gespräch mit Stadträten und Ausschüssen. Gerne halten wir Sie bei neuen Entwicklungen auf dem Laufenden.
-
- Am 6.2.2025 um 18:00h hat der Eigenheimer Waldperlach-Neubiberg das Referat für Klima- und Umweltschutz im Leiberheim zu Gast. In einem Tandemvortrag soll die Wärmeplanung für dieses Stadtgebiet vorgestellt und im Anschluss diskutiert werden. Auch interessierte Vereinsmitglieder sind herzlich eingeladen.
-
-\item Neuer Justitiar Karl Schmelzing
-
- Nach langjähriger Tätigkeit für den Verband ist Rainer Schmidt in den Ruhestand gegangen. Für rechtliche Fragen steht nun sein Nachfolger Hr. Karl Schmelzing zur Verfügung.
-
-\item Wärmepumpen und Wallboxen
-
- Wärmepumpen und Wallboxen benötigen viel Strom, der durch das existierende Stromnetz den Verbrauchern zur Verfügung gestellt werden muss. Wir hören bereits von Fällen, dass die Stadtwerke die Installation solcher Einrichtungen ablehnen, da sie sonst eine Überlastung der Netze befürchten.
-
- Bitte teilen Sie uns Ihre Erfahrungen zu diesen Themen mit, damit wir einen Überblick über die Situation erhalten.
- Vergünstigungen
-
-\item Wir weisen nochmal auf die bereits im Sommerrundbrief beschriebenen Vergünstigungen für die Mitglieder des Eihenheimerverbandes hin: Da sind zum einen Handelsunternehmen im Münchner Osten, die uns Rabatte gewähren, zum anderen gibt es die "Eigenheimervergünstigungen" auf der Internetseite des Verbands. Auf Rückfrage teile ich Ihnen Gerne nochmal die Möglichkeiten mit.
-
-
-\item Mitglieder werben Mitglieder
-
- Ich darf Sie an die 20.- EUR Prämie für die Werbung neuer Mitglieder erinnern.
-\end{itemize}
-%\closing{Viele Grüße}
-\end{letter}
-\end{document}
--- /dev/null
+brief_202503.tex
\ No newline at end of file
--- /dev/null
+class PdfErsteller(object):
+ '''
+ Klasse zur Erstellung von PDFs
+ '''
+
+
+ def __init__(self, request, template, pfad):
+ self.request = request
+ self.template = template
+ self.pfad = pfad
+
+ def erstellepdf(self, m):
+ gg = m.VersicherteGrundstucke()
+ g1 = gg[0]
+ gn = gg[1:]
+ beitrag = 39 + 32*len(gn)
+ konto = None
+ if len(m.iban) > 0:
+ konto = m.iban[0:4]+" xxxx xxxx xxxx "+m.iban[-2:]
+
+ tex_bearbeitet = self.template.render(
+ {"vorname" : m.vorname,
+ "nachname" : m.nachname,
+ "strasse" : m.strasse,
+ "plz" : m.plz,
+ "ort" : m.ort,
+ "anrede" : m.anrede,
+ "grundstuck1" : g1,
+ "basisbeitrag" : 39,
+ "g_weitere" : gn,
+ "zusatzbeitrag": 32,
+ "beitrag" : beitrag,
+ "konto" : konto,
+ "m_nr" : m.mitgliedsnr
+ }, self.request)
+
+ with open(f'{self.pfad}/{m.nachname}_{m.mitgliedsnr}_brief.tex', 'w') as f: # öffnet ein neues Dokument mit dem Namen test.tex
+ f.write(tex_bearbeitet) # schreibt in dieses neue Dokument
+
+ # AUfruf PDF latex tex -> pdf
+ import subprocess
+ subprocess.run(["bash", "../../bin/pdfersteller", f'{m.nachname}_{m.mitgliedsnr}_brief.tex'])
import os
+from eh_app.AWK import config
'''
def handle_uploaded_file(csv_file):
csv_file_name = str(csv_file)
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
import io
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import letter
-
+
packet = io.BytesIO()
can = canvas.Canvas(packet, pagesize=letter)
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)
+
- 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 VorlagenVerwaltungForm(forms.Form):
+ vorlagen_zu_loschen = forms.MultipleChoiceField(
+ widget=forms.CheckboxSelectMultiple,
+ choices=(),
+ label="Vorlagen zum Löschen vormerken:"
+ )
+ vorlage_neu = forms.FileField(label='Neue Vorlage installieren:', required=False)
+ def __init__(self, *args, vorlagen=[('AB', 'ab'),('BC','bc')], **kwargs):
+ self.vorlagen = vorlagen
+ super().__init__(*args, **kwargs)
+ self.fields['vorlagen_zu_loschen'].choices = vorlagen
+
+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()
def VersicherteGrundstucke(self, mitglied):
# Hole Basiseintrag
+
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)
<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>
--- /dev/null
+<html>
+<head>
+ <title>Siedlerverein-Verwaltung by WagnerTech UG</title>
+</head>
+<body>
+<h1>Vorlagen verwalten</h1>
+<form action="/{{verein}}/vorlagen_verwalten/" method="post" enctype="multipart/form-data">
+{% csrf_token %}
+<table>
+{{vorlagen_form}}
+</table>
+<p><input type="submit" value="Ändern"/>
+</form>
+</body>
+</html>
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),
from .AWK import config, routines
#import .forms
-from .forms import EhmeldungForm, KassenbriefForm
+from .forms import EhmeldungForm, VorlagenForm, BeitragForm, VorlagenVerwaltungForm
+from eh_app.AWK.pdf_ersteller import PdfErsteller
# Create your views here.
raise RuntimeError("blub")
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
+def vorlagen_verwalten(request, verein):
+ # TODO vorlagen_liste durch Dateioperationen aufbauen. S. kassenbrief_alt
+ # Die finale Liste muss dann folgende Form haben:
+ vorlagen_liste = [("vorlage1.tex","vorlage1"),("vorlage2.tex","vorlage2")]
+
+ if request.method == 'POST':
+ # Form auswerten
+ # Verarbeitung in routines.py aufrufen
+
+ # Wenn alles gut gegangen, zurück zum Kassenbrief
+ return HttpResponseRedirect(f'/{verein}/kassenbrief')
+ else:
+ vorlagen_form = VorlagenVerwaltungForm(vorlagen=vorlagen_liste)
+
+ template = loader.get_template("vorlagen_verwalten.html")
+ return HttpResponse(template.render(
+ {
+ "verein" : verein,
+ "vorlagen_form" : vorlagen_form },
+ request))
+ '''
+ ---------------------------------------------------------------
+ Neue Templates installieren
+
+ <Dateiauswahlknopf>
+ <Knopf"Installieren">
+ '''
+
+#@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)
# 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.erstellepdf('Hallo Welt')
+ # 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")