]> wagnertech.de Git - SVBaL.git/blob - python/eh_util/eh_app/views.py
0cf81ab9ce1a0c393a4939eab743000241ffef9b
[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
11 from .forms import EhmeldungForm, VorlagenForm, BeitragForm, VorlagenVerwaltungForm, MitgliederForm, MitgliederAuswahlForm
12 from eh_app.AWK.pdf_ersteller import PdfErsteller
13
14 # Create your views here.
15
16 try:
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/")
21         import pydevd
22         pydevd.settrace()
23
24 except:
25     pass
26
27 def index(request, verein):
28     template = loader.get_template("vbasis.html")
29     raise RuntimeError("blub")
30     return HttpResponse(template.render({"verein" : verein}, request))
31
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")]
36
37     if request.method == 'POST':
38         # Form auswerten
39         # Verarbeitung in routines.py aufrufen
40
41         # Wenn alles gut gegangen, zurück zum Kassenbrief
42         return HttpResponseRedirect(f'/{verein}/kassenbrief')
43     else:
44         vorlagen_form = VorlagenVerwaltungForm(vorlagen=vorlagen_liste)
45         
46     template = loader.get_template("vorlagen_verwalten.html")
47     return HttpResponse(template.render(
48         {
49             "verein" : verein, 
50             "vorlagen_form" : vorlagen_form }, 
51         request))
52     '''
53     ---------------------------------------------------------------
54     Neue Templates installieren
55     
56     <Dateiauswahlknopf>
57     <Knopf"Installieren">
58     '''
59
60 def mitglieder_auswahlen(request, verein):
61     # TODO vorlagen_liste durch Dateioperationen aufbauen. S. kassenbrief_alt
62     # Die finale Liste muss dann folgende Form haben:
63     mitglieder_liste = [("12","Wagler"),("13","Maier")]
64
65     if request.method == 'POST':
66         # Form auswerten
67         # Auswahl in Cookie schreiben, s. util.py
68
69         # Wenn alles gut gegangen, zurück zum Kassenbrief
70         return HttpResponseRedirect(f'/{verein}/kassenbrief')
71     else:
72         mausw_form = MitgliederAuswahlForm(mitglieder=mitglieder_liste)
73         
74     template = loader.get_template("mitglieder_auswahlen.html")
75     return HttpResponse(template.render(
76         {
77             "verein" : verein, 
78             "mausw_form" : mausw_form }, 
79         request))
80     '''
81     ---------------------------------------------------------------
82     Neue Templates installieren
83     
84     <Dateiauswahlknopf>
85     <Knopf"Installieren">
86     '''
87
88 #@login_required
89 def kassenbrief(request, verein):
90     '''
91     GET:
92     Diese Methode liest aus der Config die Einstellungen und zeigt sie an.
93     
94     POST: 
95 <<<<<<< HEAD
96     Diese Methode 
97     - überprüft, ob an den Einstellungen was verändert wurde und falls ja, ändert die Config 
98     - bearbeitet den finalen "Erstellen"
99     
100     '''
101     fehlertext_vorlage = ""
102     fehlertext_beitrag = ""
103     vconf = config.getInstance(verein)
104     beitrag_basis  = vconf.getConfig("beitrag_basis", 0)
105     beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
106     vorlage_selected = vconf.getConfig("vorlage", "")
107     vorlagen_liste = []
108     if os.path.isdir("eh_app/templates/"+verein):
109         dirlist = os.listdir("eh_app/templates/"+verein) # returns list
110         for t in dirlist:
111             vorlagen_liste.append((t,t))
112     if request.method == 'POST':
113         vorlagen_form = VorlagenForm(request.POST, request.FILES, vorlagen=vorlagen_liste)
114         beitrag_form = BeitragForm(request.POST, request.FILES)
115         if vorlagen_form.is_valid() and beitrag_form.is_valid():
116             routines.aktualisiere_config(vconf, vorlagen_form.cleaned_data, beitrag_form.cleaned_data)
117             return HttpResponseRedirect('erfolg')
118             '''
119 =======
120     Diese Methode bearbeitet den finalen "Erstellen"
121     
122     Die Unterformulare (z.B. Beitrag ändern) landen in einer eigenen Methode, die die 
123     Einstellungen in der Config ändert und dann diese hier mit GET aufruft.
124     '''
125     '''
126     ---------------------------------------------------------------
127     Templateauswahl
128     
129     Ausgewähltes Template: <Wert aus Config>
130     Klappliste <Knopf"Template ändern">
131     Link -> Neue Templates installieren
132     ---------------------------------------------------------------
133     '''
134     fehlertext_vorlage = ""
135     vconf = config.getInstance(verein)
136     beitrag_basis  = vconf.getConfig("beitrag_basis", 0)
137     beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
138     vorlagen_liste = ['T1']
139     vorlagen_form = VorlagenForm(templates=vorlagen_liste)
140     beitrag_form = BeitragForm
141     mausw_form = MitgliederForm(zul="12,45,334")
142     if request.method == 'POST':
143         vorlagen_form = VorlagenForm(request.POST, request.FILES)
144         beitrag_form = BeitragForm(request.POST, request.FILES)
145         mausw_form = MitgliederForm(request.POST, request.FILES)
146         if vorlagen_form.is_valid() and beitrag_form.is_valid():
147             routines.aktualisiere_config(vconf, vorlagen_form.cleaned_data, beitrag_form.cleaned_data)
148             if not vorlagen_liste:
149                 fehlertext_vorlage = "Bitte Kassenbriefvorlage auswählen"
150             else:   
151                 routines.pdfs_erstellen(request, verein)
152                 return HttpResponseRedirect('erfolg')
153             '''
154     else:
155         beitrag_basis  = vconf.getConfig("beitrag_basis", 0)
156         beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
157         # GET request
158         if vorlage_selected == "":
159             fehlertext_vorlage = "Bitte Vorlage auswählen"
160         if not vorlagen_liste:
161             fehlertext_vorlage = "Bitte Vorlagen in Vorlagenverzeichnis einfügen"
162         if beitrag_basis == 0 or beitrag_zusatz == 0:
163             fehlertext_beitrag = "Bitte Eingaben zu Basis- und Zusatzbeitrag vornehmen"
164         vorlagen_form = VorlagenForm(vorlagen=vorlagen_liste, initial={'vorlage':vorlage_selected})
165         beitrag_form = BeitragForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
166         mitglieder_form = MitgliederForm()
167         
168     return render(request, 
169                   'kassenbrief.html', 
170                   {'vorlagen_form': vorlagen_form, 
171                    'beitrag_form': beitrag_form,
172                    'mitglieder_form': mitglieder_form,
173                    'verein': verein, 
174                    'fehlertext_vorlage' : fehlertext_vorlage, 
175                    'fehlertext_beitrag' : fehlertext_beitrag})
176 =======
177     return render(request, 'kassenbrief.html', {'vorlagen_form': vorlagen_form, 'beitrag_form': beitrag_form, 'mausw_form': mausw_form, 'verein': verein, 'fehlertext' : fehlertext_vorlage})
178 >>>>>>> origin/michael
179    
180 def kassenbrief_alt(request, verein):
181     fehlertext = ""
182     # Hole Daten aus der Config
183     vconf = config.getInstance(verein)
184     beitrag_basis  = vconf.getConfig("beitrag_basis", 0)
185     beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
186
187     # suche Templates
188     import os
189     dirlist = None
190     if os.path.isdir("eh_app/templates/"+verein):
191         dirlist = os.listdir("eh_app/templates/"+verein) # returns list
192     if dirlist:
193         template_list = []
194         for t in dirlist:
195             template_list.append((t,t))
196     
197             # if this is a POST request we need to process the form data
198         if request.method == 'POST':
199         # create a form instance and populate it with data from the request:
200             form = KassenbriefForm(request.POST, request.FILES, dirlist)
201             # check whether it's valid:
202             if form.is_valid():
203                 # bei Änderungen Konfiguration aktualisieren
204                 routines.aktualisiere_config(vconf, form.cleaned_data, request.FILES.get('briefpapier_neu', None))
205             
206                 #Stammdaten neu aus Datenbank lesen und prüfen
207                 briefpapier    = vconf.getConfig("briefpapier")
208                 beitrag_basis  = int(vconf.getConfig("beitrag_basis", 0))
209                 beitrag_zusatz = int(vconf.getConfig("beitrag_zusatz", 0))
210                 briefpapier_label = briefpapier
211                 if not briefpapier:
212                     briefpapier_label = "Kein Briefpapier ausgewäht"
213             
214                     # prüfen ob Werte gefüllt
215                 if briefpapier is None:
216                     fehlertext = "Bitte Briefpapier auswählen."
217                 elif beitrag_basis == 0 and beitrag_zusatz == 0:
218                     fehlertext = "Bitte Basisbeitrag und Zusatzbeitrag ausfüllen."
219                 elif beitrag_basis == 0:
220                     fehlertext = "Bitte Basisbeitrag ausfüllen."
221                 elif beitrag_zusatz == 0:
222                     fehlertext = "Bitte Zusatzbeitrag ausfüllen."
223             
224                 # wenn Werte gefüllt 
225                 else:
226                     routines.pdfs_erstellen(request, verein)
227                 
228                     # redirect to a new URL:
229                     return HttpResponseRedirect('erfolg')
230
231
232         # if a GET (or any other method) we'll create a blank form
233         else:
234             form = KassenbriefForm(templates=template_list, initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
235             #form = KassenbriefForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
236             return render(request, 'kassenbrief.html', {'form': form, 'verein': verein, 'fehlertext' : fehlertext})
237     else:
238         fehlertext = "Bitte Templates anlegen."
239         return render(request, 'fehler.html', {'verein': verein, 'fehlertext' : fehlertext})
240
241     
242     '''
243     template = loader.get_template("kassenbrief.html")
244     return HttpResponse(template.render({
245         "verein"         : verein,
246         "briefpapier"    : briefpapier,
247         "beitrag_basis"  : beitrag_basis,
248         "beitrag_zusatz" : beitrag_zusatz
249         }, request))
250
251     '''
252
253 def kassenbrief_erfolg(request, verein):
254     # Hole Formulardaten
255     print (request.POST)
256     print (request.FILES)
257     return HttpResponse("xxx")
258
259 def kassenbrief_download(request, verein):
260     response = FileResponse(open(r'G:\SVBaL\python\eh_util\eh_app\test.pdf', 'rb'))
261     return response
262
263 def ehmeldung(request, verein):
264     # if this is a POST request we need to process the form data
265     if request.method == 'POST':
266         # create a form instance and populate it with data from the request:
267         form = EhmeldungForm(request.POST, request.FILES)
268         # check whether it's valid:
269         if form.is_valid():
270             # bei Änderungen Konfiguration aktualisieren
271             routines.erstelle_ehmeldung(form.cleaned_data)
272             # redirect to a new URL:
273             return HttpResponseRedirect('/thanks/')
274
275     # if a GET (or any other method) we'll create a blank form
276     else:
277         form = EhmeldungForm()
278
279     return render(request, 'ehmeldung.html', {'form': form, 'verein': verein})
280     
281