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
10 from .forms import EhmeldungForm, VorlagenForm, BeitragForm, VorlagenVerwaltungForm, MitgliederForm, MitgliederAuswahlForm
11 from eh_app.AWK.pdf_ersteller import PdfErsteller
13 # Create your views here.
16 home = os.environ["HOME"]
17 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/"):
18 # its a eclipse development environment
19 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/")
26 def index(request, verein):
27 template = loader.get_template("vbasis.html")
28 raise RuntimeError("blub")
29 return HttpResponse(template.render({"verein" : verein}, request))
31 def vorlagen_verwalten(request, verein):
32 # TODO vorlagen_liste durch Dateioperationen aufbauen. S. kassenbrief_alt
33 # Die finale Liste muss dann folgende Form haben:
34 vorlagen_liste = [("vorlage1.tex","vorlage1"),("vorlage2.tex","vorlage2")]
36 if request.method == 'POST':
38 # Verarbeitung in routines.py aufrufen
40 # Wenn alles gut gegangen, zurück zum Kassenbrief
41 return HttpResponseRedirect(f'/{verein}/kassenbrief')
43 vorlagen_form = VorlagenVerwaltungForm(vorlagen=vorlagen_liste)
45 template = loader.get_template("vorlagen_verwalten.html")
46 return HttpResponse(template.render(
49 "vorlagen_form" : vorlagen_form },
52 ---------------------------------------------------------------
53 Neue Templates installieren
59 def mitglieder_auswahlen(request, verein):
60 # TODO vorlagen_liste durch Dateioperationen aufbauen. S. kassenbrief_alt
61 # Die finale Liste muss dann folgende Form haben:
62 mitglieder_liste = [("12","Wagler"),("13","Maier")]
64 if request.method == 'POST':
66 # Auswahl in Cookie schreiben, s. util.py
68 # Wenn alles gut gegangen, zurück zum Kassenbrief
69 return HttpResponseRedirect(f'/{verein}/kassenbrief')
71 mausw_form = MitgliederAuswahlForm(mitglieder=mitglieder_liste)
73 template = loader.get_template("mitglieder_auswahlen.html")
74 return HttpResponse(template.render(
77 "mausw_form" : mausw_form },
80 ---------------------------------------------------------------
81 Neue Templates installieren
88 def kassenbrief(request, verein):
91 Diese Methode liest aus der Config die Einstellungen und zeigt sie an.
94 Diese Methode bearbeitet den finalen "Erstellen"
96 Die Unterformulare (z.B. Beitrag ändern) landen in einer eigenen Methode, die die
97 Einstellungen in der Config ändert und dann diese hier mit GET aufruft.
100 ---------------------------------------------------------------
103 Ausgewähltes Template: <Wert aus Config>
104 Klappliste <Knopf"Template ändern">
105 Link -> Neue Templates installieren
106 ---------------------------------------------------------------
108 fehlertext_vorlage = ""
109 vconf = config.getInstance(verein)
110 beitrag_basis = vconf.getConfig("beitrag_basis", 0)
111 beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
112 vorlagen_liste = ['T1']
113 vorlagen_form = VorlagenForm(templates=vorlagen_liste)
114 beitrag_form = BeitragForm
115 mausw_form = MitgliederForm(zul="12,45,334")
116 if request.method == 'POST':
117 vorlagen_form = VorlagenForm(request.POST, request.FILES)
118 beitrag_form = BeitragForm(request.POST, request.FILES)
119 mausw_form = MitgliederForm(request.POST, request.FILES)
120 if vorlagen_form.is_valid() and beitrag_form.is_valid():
121 routines.aktualisiere_config(vconf, vorlagen_form.cleaned_data, beitrag_form.cleaned_data)
122 if not vorlagen_liste:
123 fehlertext_vorlage = "Bitte Kassenbriefvorlage auswählen"
125 routines.pdfs_erstellen(request, verein)
126 return HttpResponseRedirect('erfolg')
127 return render(request, 'kassenbrief.html', {'vorlagen_form': vorlagen_form, 'beitrag_form': beitrag_form, 'mausw_form': mausw_form, 'verein': verein, 'fehlertext' : fehlertext_vorlage})
129 def kassenbrief_alt(request, verein):
131 # Hole Daten aus der Config
132 vconf = config.getInstance(verein)
133 beitrag_basis = vconf.getConfig("beitrag_basis", 0)
134 beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
139 if os.path.isdir("eh_app/templates/"+verein):
140 dirlist = os.listdir("eh_app/templates/"+verein) # returns list
144 template_list.append((t,t))
146 # if this is a POST request we need to process the form data
147 if request.method == 'POST':
148 # create a form instance and populate it with data from the request:
149 form = KassenbriefForm(request.POST, request.FILES, dirlist)
150 # check whether it's valid:
152 # bei Änderungen Konfiguration aktualisieren
153 routines.aktualisiere_config(vconf, form.cleaned_data, request.FILES.get('briefpapier_neu', None))
155 #Stammdaten neu aus Datenbank lesen und prüfen
156 briefpapier = vconf.getConfig("briefpapier")
157 beitrag_basis = int(vconf.getConfig("beitrag_basis", 0))
158 beitrag_zusatz = int(vconf.getConfig("beitrag_zusatz", 0))
159 briefpapier_label = briefpapier
161 briefpapier_label = "Kein Briefpapier ausgewäht"
163 # prüfen ob Werte gefüllt
164 if briefpapier is None:
165 fehlertext = "Bitte Briefpapier auswählen."
166 elif beitrag_basis == 0 and beitrag_zusatz == 0:
167 fehlertext = "Bitte Basisbeitrag und Zusatzbeitrag ausfüllen."
168 elif beitrag_basis == 0:
169 fehlertext = "Bitte Basisbeitrag ausfüllen."
170 elif beitrag_zusatz == 0:
171 fehlertext = "Bitte Zusatzbeitrag ausfüllen."
175 routines.pdfs_erstellen(request, verein)
177 # redirect to a new URL:
178 return HttpResponseRedirect('erfolg')
181 # if a GET (or any other method) we'll create a blank form
183 form = KassenbriefForm(templates=template_list, initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
184 #form = KassenbriefForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
185 return render(request, 'kassenbrief.html', {'form': form, 'verein': verein, 'fehlertext' : fehlertext})
187 fehlertext = "Bitte Templates anlegen."
188 return render(request, 'fehler.html', {'verein': verein, 'fehlertext' : fehlertext})
192 template = loader.get_template("kassenbrief.html")
193 return HttpResponse(template.render({
195 "briefpapier" : briefpapier,
196 "beitrag_basis" : beitrag_basis,
197 "beitrag_zusatz" : beitrag_zusatz
202 def kassenbrief_erfolg(request, verein):
205 print (request.FILES)
206 return HttpResponse("xxx")
208 def kassenbrief_download(request, verein):
209 response = FileResponse(open(r'G:\SVBaL\python\eh_util\eh_app\test.pdf', 'rb'))
212 def ehmeldung(request, verein):
213 # if this is a POST request we need to process the form data
214 if request.method == 'POST':
215 # create a form instance and populate it with data from the request:
216 form = EhmeldungForm(request.POST, request.FILES)
217 # check whether it's valid:
219 # bei Änderungen Konfiguration aktualisieren
220 routines.erstelle_ehmeldung(form.cleaned_data)
221 # redirect to a new URL:
222 return HttpResponseRedirect('/thanks/')
224 # if a GET (or any other method) we'll create a blank form
226 form = EhmeldungForm()
228 return render(request, 'ehmeldung.html', {'form': form, 'verein': verein})