3 from django.contrib.auth.decorators import login_required
4 from django.http import HttpResponse, HttpResponseRedirect, FileResponse
5 from django.shortcuts import render
6 from django.template import loader
8 from .AWK import config, routines, util
11 from .forms import EhmeldungForm, VorlagenForm, BeitragForm, VorlagenVerwaltungForm, MitgliederForm, MitgliederAuswahlForm
12 from eh_app.AWK.pdf_ersteller import PdfErsteller
14 # Create your views here.
17 home = os.environ["HOME"]
18 if os.path.exists(f"{home}/.eclipse/org.eclipse.platform_4.18.0_1473617060_linux_gtk_x86_64/plugins/org.python.pydev.core_8.3.0.202104101217/pysrc/"):
19 # its a eclipse development environment
20 sys.path.append(f"{home}/.eclipse/org.eclipse.platform_4.18.0_1473617060_linux_gtk_x86_64/plugins/org.python.pydev.core_8.3.0.202104101217/pysrc/")
27 def index(request, verein):
28 template = loader.get_template("vbasis.html")
29 #raise RuntimeError("blub")
30 return HttpResponse(template.render({"verein" : verein}, request))
32 def vorlagen_verwalten(request, verein):
33 # TODO vorlagen_liste durch Dateioperationen aufbauen. S. kassenbrief_alt
34 # Die finale Liste muss dann folgende Form haben:
35 vorlagen_liste = [("vorlage1.tex","vorlage1"),("vorlage2.tex","vorlage2")]
37 if request.method == 'POST':
39 # Verarbeitung in routines.py aufrufen
41 # Wenn alles gut gegangen, zurück zum Kassenbrief
42 return HttpResponseRedirect(f'/{verein}/kassenbrief')
44 vorlagen_form = VorlagenVerwaltungForm(vorlagen=vorlagen_liste)
46 template = loader.get_template("vorlagen_verwalten.html")
47 return HttpResponse(template.render(
50 "vorlagen_form" : vorlagen_form },
53 ---------------------------------------------------------------
54 Neue Templates installieren
60 def mitglieder_auswahlen(request, verein):
61 # TODO mitglieder aus DB holen
62 #from eh_app.qmodels import Mitglied
63 #mm = Mitglied.objects.all()
64 #mitglieder_liste = []
66 # mitglieder_liste.append(Mitglied.mitgliedsnr, Mitglied.nachname)
67 # Die finale Liste muss dann folgende Form haben:
68 mitglieder_liste = [("12","Wagler"),("13","Maier")]
70 if request.method == 'POST':
72 # Auswahl in Cookie schreiben, s. util.py
73 util.write_http_data("m_liste", "mitglieder_liste")
74 test = util.lese_http_data("m_liste")
77 # Wenn alles gut gegangen, zurück zum Kassenbrief
78 return HttpResponseRedirect(f'/{verein}/kassenbrief')
80 mausw_form = MitgliederAuswahlForm(mitglieder=mitglieder_liste)
82 template = loader.get_template("mitglieder_auswahlen.html")
83 return HttpResponse(template.render(
86 "mausw_form" : mausw_form },
89 ---------------------------------------------------------------
90 Neue Templates installieren
97 def kassenbrief(request, verein):
100 Diese Methode liest aus der Config die Einstellungen und zeigt sie an.
104 Diese Methode bearbeitet den finalen "Erstellen"
106 Die Unterformulare (z.B. Beitrag ändern) landen in einer eigenen Methode, die die
107 Einstellungen in der Config ändert und dann diese hier mit GET aufruft.
110 ---------------------------------------------------------------
113 Ausgewähltes Template: <Wert aus Config>
114 Klappliste <Knopf"Template ändern">
115 Link -> Neue Templates installieren
116 ---------------------------------------------------------------
118 fehlertext_vorlage = ""
119 fehlertext_beitrag = ""
120 vconf = config.getInstance(verein)
121 beitrag_basis = vconf.getConfig("beitrag_basis", 0)
122 beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
123 #TODO: aus Cookie lesen
124 mitglieder_liste = util.lese_http_data("m_liste")
125 print (mitglieder_liste)
127 if os.path.isdir("eh_app/templates/"+verein):
128 dirlist = os.listdir("eh_app/templates/"+verein) # returns list
130 vorlagen_liste.append((t,t))
131 vorlagen_form = VorlagenForm(vorlagen=vorlagen_liste)
132 beitrag_form = BeitragForm
133 mitglieder_form = MitgliederForm(zul=mitglieder_liste)
134 if request.method == 'POST':
135 vorlagen_form = VorlagenForm(request.POST, request.FILES)
136 beitrag_form = BeitragForm(request.POST, request.FILES)
137 mausw_form = MitgliederForm(request.POST, request.FILES)
138 if vorlagen_form.is_valid() and beitrag_form.is_valid():
139 routines.aktualisiere_config(vconf, vorlagen_form.cleaned_data, beitrag_form.cleaned_data)
140 if not vorlagen_liste:
141 fehlertext_vorlage = "Bitte Kassenbriefvorlage auswählen"
143 routines.pdfs_erstellen(request, verein)
144 return HttpResponseRedirect('erfolg')
147 #beitrag_basis = vconf.getConfig("beitrag_basis", 0)
148 #beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
149 #if vorlage_selected == "":
150 #fehlertext_vorlage = "Bitte Vorlage auswählen"
151 if not vorlagen_liste:
152 fehlertext_vorlage = "Bitte Vorlagen in Vorlagenverzeichnis einfügen"
153 if beitrag_basis == 0 or beitrag_zusatz == 0:
154 fehlertext_beitrag = "Bitte Eingaben zu Basis- und Zusatzbeitrag vornehmen"
155 #vorlagen_form = VorlagenForm(vorlagen=vorlagen_liste, initial={'vorlage':vorlage_selected})
156 #beitrag_form = BeitragForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
157 #mitglieder_form = MitgliederForm()
159 return render(request,
161 {'vorlagen_form': vorlagen_form,
162 'beitrag_form': beitrag_form,
163 'mausw_form': mitglieder_form,
165 'fehlertext_vorlage' : fehlertext_vorlage,
166 'fehlertext_beitrag' : fehlertext_beitrag})
169 def kassenbrief_alt(request, verein):
171 # Hole Daten aus der Config
172 vconf = config.getInstance(verein)
173 beitrag_basis = vconf.getConfig("beitrag_basis", 0)
174 beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
179 if os.path.isdir("eh_app/templates/"+verein):
180 dirlist = os.listdir("eh_app/templates/"+verein) # returns list
184 template_list.append((t,t))
186 # if this is a POST request we need to process the form data
187 if request.method == 'POST':
188 # create a form instance and populate it with data from the request:
189 form = KassenbriefForm(request.POST, request.FILES, dirlist)
190 # check whether it's valid:
192 # bei Änderungen Konfiguration aktualisieren
193 routines.aktualisiere_config(vconf, form.cleaned_data, request.FILES.get('briefpapier_neu', None))
195 #Stammdaten neu aus Datenbank lesen und prüfen
196 briefpapier = vconf.getConfig("briefpapier")
197 beitrag_basis = int(vconf.getConfig("beitrag_basis", 0))
198 beitrag_zusatz = int(vconf.getConfig("beitrag_zusatz", 0))
199 briefpapier_label = briefpapier
201 briefpapier_label = "Kein Briefpapier ausgewäht"
203 # prüfen ob Werte gefüllt
204 if briefpapier is None:
205 fehlertext = "Bitte Briefpapier auswählen."
206 elif beitrag_basis == 0 and beitrag_zusatz == 0:
207 fehlertext = "Bitte Basisbeitrag und Zusatzbeitrag ausfüllen."
208 elif beitrag_basis == 0:
209 fehlertext = "Bitte Basisbeitrag ausfüllen."
210 elif beitrag_zusatz == 0:
211 fehlertext = "Bitte Zusatzbeitrag ausfüllen."
215 routines.pdfs_erstellen(request, verein)
217 # redirect to a new URL:
218 return HttpResponseRedirect('erfolg')
221 # if a GET (or any other method) we'll create a blank form
223 form = KassenbriefForm(templates=template_list, initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
224 #form = KassenbriefForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
225 return render(request, 'kassenbrief.html', {'form': form, 'verein': verein, 'fehlertext' : fehlertext})
227 fehlertext = "Bitte Templates anlegen."
228 return render(request, 'fehler.html', {'verein': verein, 'fehlertext' : fehlertext})
232 template = loader.get_template("kassenbrief.html")
233 return HttpResponse(template.render({
235 "briefpapier" : briefpapier,
236 "beitrag_basis" : beitrag_basis,
237 "beitrag_zusatz" : beitrag_zusatz
242 def kassenbrief_erfolg(request, verein):
245 print (request.FILES)
246 return HttpResponse("xxx")
248 def kassenbrief_download(request, verein):
249 response = FileResponse(open(r'G:\SVBaL\python\eh_util\eh_app\test.pdf', 'rb'))
252 def ehmeldung(request, verein):
253 # if this is a POST request we need to process the form data
254 if request.method == 'POST':
255 # create a form instance and populate it with data from the request:
256 form = EhmeldungForm(request.POST, request.FILES)
257 # check whether it's valid:
259 # bei Änderungen Konfiguration aktualisieren
260 routines.erstelle_ehmeldung(form.cleaned_data)
261 # redirect to a new URL:
262 return HttpResponseRedirect('/thanks/')
264 # if a GET (or any other method) we'll create a blank form
266 form = EhmeldungForm()
268 return render(request, 'ehmeldung.html', {'form': form, 'verein': verein})