]> wagnertech.de Git - SVBaL.git/blob - python/eh_util/eh_app/views.py
Mitglieder auswählen, aber ohne Mitgliederliste aus Datenbank
[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, util
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 mitglieder aus DB holen
62     #from eh_app.qmodels import Mitglied
63     #mm = Mitglied.objects.all()
64     #mitglieder_liste = []
65     #for Mitglied in mm:
66     #    mitglieder_liste.append(Mitglied.mitgliedsnr, Mitglied.nachname)
67     # Die finale Liste muss dann folgende Form haben:
68     mitglieder_liste = [("12","Wagler"),("13","Maier")]
69
70     if request.method == 'POST':
71         # Form auswerten
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")
75         print (test)
76
77         # Wenn alles gut gegangen, zurück zum Kassenbrief
78         return HttpResponseRedirect(f'/{verein}/kassenbrief')
79     else:
80         mausw_form = MitgliederAuswahlForm(mitglieder=mitglieder_liste)
81         
82     template = loader.get_template("mitglieder_auswahlen.html")
83     return HttpResponse(template.render(
84         {
85             "verein" : verein, 
86             "mausw_form" : mausw_form }, 
87         request))
88     '''
89     ---------------------------------------------------------------
90     Neue Templates installieren
91     
92     <Dateiauswahlknopf>
93     <Knopf"Installieren">
94     '''
95
96 #@login_required
97 def kassenbrief(request, verein):
98     '''
99     GET:
100     Diese Methode liest aus der Config die Einstellungen und zeigt sie an.
101     
102     POST: 
103
104     Diese Methode bearbeitet den finalen "Erstellen"
105     
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.
108     '''
109     '''
110     ---------------------------------------------------------------
111     Templateauswahl
112     
113     Ausgewähltes Template: <Wert aus Config>
114     Klappliste <Knopf"Template ändern">
115     Link -> Neue Templates installieren
116     ---------------------------------------------------------------
117     '''
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)
126     vorlagen_liste = []
127     if os.path.isdir("eh_app/templates/"+verein):
128         dirlist = os.listdir("eh_app/templates/"+verein) # returns list
129         for t in dirlist:
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"
142             else:   
143                 routines.pdfs_erstellen(request, verein)
144                 return HttpResponseRedirect('erfolg')
145     else:
146         # GET request
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()
158         
159     return render(request, 
160                   'kassenbrief.html', 
161                   {'vorlagen_form': vorlagen_form, 
162                    'beitrag_form': beitrag_form,
163                    'mausw_form': mitglieder_form,
164                    'verein': verein, 
165                    'fehlertext_vorlage' : fehlertext_vorlage, 
166                    'fehlertext_beitrag' : fehlertext_beitrag})
167
168    
169 def kassenbrief_alt(request, verein):
170     fehlertext = ""
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)
175
176     # suche Templates
177     import os
178     dirlist = None
179     if os.path.isdir("eh_app/templates/"+verein):
180         dirlist = os.listdir("eh_app/templates/"+verein) # returns list
181     if dirlist:
182         template_list = []
183         for t in dirlist:
184             template_list.append((t,t))
185     
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:
191             if form.is_valid():
192                 # bei Änderungen Konfiguration aktualisieren
193                 routines.aktualisiere_config(vconf, form.cleaned_data, request.FILES.get('briefpapier_neu', None))
194             
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
200                 if not briefpapier:
201                     briefpapier_label = "Kein Briefpapier ausgewäht"
202             
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."
212             
213                 # wenn Werte gefüllt 
214                 else:
215                     routines.pdfs_erstellen(request, verein)
216                 
217                     # redirect to a new URL:
218                     return HttpResponseRedirect('erfolg')
219
220
221         # if a GET (or any other method) we'll create a blank form
222         else:
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})
226     else:
227         fehlertext = "Bitte Templates anlegen."
228         return render(request, 'fehler.html', {'verein': verein, 'fehlertext' : fehlertext})
229
230     
231     '''
232     template = loader.get_template("kassenbrief.html")
233     return HttpResponse(template.render({
234         "verein"         : verein,
235         "briefpapier"    : briefpapier,
236         "beitrag_basis"  : beitrag_basis,
237         "beitrag_zusatz" : beitrag_zusatz
238         }, request))
239
240     '''
241
242 def kassenbrief_erfolg(request, verein):
243     # Hole Formulardaten
244     print (request.POST)
245     print (request.FILES)
246     return HttpResponse("xxx")
247
248 def kassenbrief_download(request, verein):
249     response = FileResponse(open(r'G:\SVBaL\python\eh_util\eh_app\test.pdf', 'rb'))
250     return response
251
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:
258         if form.is_valid():
259             # bei Änderungen Konfiguration aktualisieren
260             routines.erstelle_ehmeldung(form.cleaned_data)
261             # redirect to a new URL:
262             return HttpResponseRedirect('/thanks/')
263
264     # if a GET (or any other method) we'll create a blank form
265     else:
266         form = EhmeldungForm()
267
268     return render(request, 'ehmeldung.html', {'form': form, 'verein': verein})
269     
270