]> wagnertech.de Git - SVBaL.git/blob - python/eh_util/eh_app/views.py
Merge branch 'michael' of http://wagnertech.de/git/SVBaL into michael
[SVBaL.git] / python / eh_util / eh_app / views.py
1 import os,sys
2
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
7
8 from .AWK import config, routines
9 #import .forms 
10 from .forms import EhmeldungForm, VorlagenForm, BeitragForm, VorlagenVerwaltungForm, MitgliederForm, MitgliederAuswahlForm
11 from eh_app.AWK.pdf_ersteller import PdfErsteller
12
13 # Create your views here.
14
15 try:
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/")
20         import pydevd
21         pydevd.settrace()
22
23 except:
24     pass
25
26 def index(request, verein):
27     template = loader.get_template("vbasis.html")
28     raise RuntimeError("blub")
29     return HttpResponse(template.render({"verein" : verein}, request))
30
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")]
35
36     if request.method == 'POST':
37         # Form auswerten
38         # Verarbeitung in routines.py aufrufen
39
40         # Wenn alles gut gegangen, zurück zum Kassenbrief
41         return HttpResponseRedirect(f'/{verein}/kassenbrief')
42     else:
43         vorlagen_form = VorlagenVerwaltungForm(vorlagen=vorlagen_liste)
44         
45     template = loader.get_template("vorlagen_verwalten.html")
46     return HttpResponse(template.render(
47         {
48             "verein" : verein, 
49             "vorlagen_form" : vorlagen_form }, 
50         request))
51     '''
52     ---------------------------------------------------------------
53     Neue Templates installieren
54     
55     <Dateiauswahlknopf>
56     <Knopf"Installieren">
57     '''
58
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")]
63
64     if request.method == 'POST':
65         # Form auswerten
66         # Auswahl in Cookie schreiben, s. util.py
67
68         # Wenn alles gut gegangen, zurück zum Kassenbrief
69         return HttpResponseRedirect(f'/{verein}/kassenbrief')
70     else:
71         mausw_form = MitgliederAuswahlForm(mitglieder=mitglieder_liste)
72         
73     template = loader.get_template("mitglieder_auswahlen.html")
74     return HttpResponse(template.render(
75         {
76             "verein" : verein, 
77             "mausw_form" : mausw_form }, 
78         request))
79     '''
80     ---------------------------------------------------------------
81     Neue Templates installieren
82     
83     <Dateiauswahlknopf>
84     <Knopf"Installieren">
85     '''
86
87 #@login_required
88 def kassenbrief(request, verein):
89     '''
90     GET:
91     Diese Methode liest aus der Config die Einstellungen und zeigt sie an.
92     
93     POST: 
94     Diese Methode bearbeitet den finalen "Erstellen"
95     
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.
98     '''
99     '''
100     ---------------------------------------------------------------
101     Templateauswahl
102     
103     Ausgewähltes Template: <Wert aus Config>
104     Klappliste <Knopf"Template ändern">
105     Link -> Neue Templates installieren
106     ---------------------------------------------------------------
107     '''
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"
124             else:   
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})
128    
129 def kassenbrief_alt(request, verein):
130     fehlertext = ""
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)
135
136     # suche Templates
137     import os
138     dirlist = None
139     if os.path.isdir("eh_app/templates/"+verein):
140         dirlist = os.listdir("eh_app/templates/"+verein) # returns list
141     if dirlist:
142         template_list = []
143         for t in dirlist:
144             template_list.append((t,t))
145     
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:
151             if form.is_valid():
152                 # bei Änderungen Konfiguration aktualisieren
153                 routines.aktualisiere_config(vconf, form.cleaned_data, request.FILES.get('briefpapier_neu', None))
154             
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
160                 if not briefpapier:
161                     briefpapier_label = "Kein Briefpapier ausgewäht"
162             
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."
172             
173                 # wenn Werte gefüllt 
174                 else:
175                     routines.pdfs_erstellen(request, verein)
176                 
177                     # redirect to a new URL:
178                     return HttpResponseRedirect('erfolg')
179
180
181         # if a GET (or any other method) we'll create a blank form
182         else:
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})
186     else:
187         fehlertext = "Bitte Templates anlegen."
188         return render(request, 'fehler.html', {'verein': verein, 'fehlertext' : fehlertext})
189
190     
191     '''
192     template = loader.get_template("kassenbrief.html")
193     return HttpResponse(template.render({
194         "verein"         : verein,
195         "briefpapier"    : briefpapier,
196         "beitrag_basis"  : beitrag_basis,
197         "beitrag_zusatz" : beitrag_zusatz
198         }, request))
199
200     '''
201
202 def kassenbrief_erfolg(request, verein):
203     # Hole Formulardaten
204     print (request.POST)
205     print (request.FILES)
206     return HttpResponse("xxx")
207
208 def kassenbrief_download(request, verein):
209     response = FileResponse(open(r'G:\SVBaL\python\eh_util\eh_app\test.pdf', 'rb'))
210     return response
211
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:
218         if form.is_valid():
219             # bei Änderungen Konfiguration aktualisieren
220             routines.erstelle_ehmeldung(form.cleaned_data)
221             # redirect to a new URL:
222             return HttpResponseRedirect('/thanks/')
223
224     # if a GET (or any other method) we'll create a blank form
225     else:
226         form = EhmeldungForm()
227
228     return render(request, 'ehmeldung.html', {'form': form, 'verein': verein})
229     
230