]> wagnertech.de Git - SVBaL.git/blob - python/eh_util/eh_app/views.py
commit
[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
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     return HttpResponse(template.render({"verein" : verein}, request))
29
30 def vorlagen_verwalten(request, verein):
31     # TODO vorlagen_liste durch Dateioperationen aufbauen. S. kassenbrief_alt
32     # Die finale Liste muss dann folgende Form haben:
33     vorlagen_liste = [("vorlage1.tex","vorlage1"),("vorlage2.tex","vorlage2")]
34
35     if request.method == 'POST':
36         # Form auswerten
37         # Verarbeitung in routines.py aufrufen
38
39         # Wenn alles gut gegangen, zurück zum Kassenbrief
40         return HttpResponseRedirect(f'/{verein}/kassenbrief')
41     else:
42         vorlagen_form = VorlagenVerwaltungForm(vorlagen=vorlagen_liste)
43         
44     template = loader.get_template("vorlagen_verwalten.html")
45     return HttpResponse(template.render(
46         {
47             "verein" : verein, 
48             "vorlagen_form" : vorlagen_form }, 
49         request))
50     '''
51     ---------------------------------------------------------------
52     Neue Templates installieren
53     
54     <Dateiauswahlknopf>
55     <Knopf"Installieren">
56     '''
57
58 #@login_required
59 def kassenbrief(request, verein):
60     '''
61     GET:
62     Diese Methode liest aus der Config die Einstellungen und zeigt sie an.
63     
64     POST: 
65     Diese Methode 
66     - überprüft, ob an den Einstellungen was verändert wurde und falls ja, ändert die Config 
67     - bearbeitet den finalen "Erstellen"
68     
69     '''
70     fehlertext_vorlage = ""
71     fehlertext_beitrag = ""
72     vconf = config.getInstance(verein)
73     beitrag_basis  = vconf.getConfig("beitrag_basis", 0)
74     beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
75     vorlage_selected = vconf.getConfig("vorlage", "")
76     vorlagen_liste = []
77     if os.path.isdir("eh_app/templates/"+verein):
78         dirlist = os.listdir("eh_app/templates/"+verein) # returns list
79         for t in dirlist:
80             vorlagen_liste.append((t,t))
81     if request.method == 'POST':
82         vorlagen_form = VorlagenForm(request.POST, request.FILES, vorlagen=vorlagen_liste)
83         beitrag_form = BeitragForm(request.POST, request.FILES)
84         if vorlagen_form.is_valid() and beitrag_form.is_valid():
85             routines.aktualisiere_config(vconf, vorlagen_form.cleaned_data, beitrag_form.cleaned_data)
86             return HttpResponseRedirect('erfolg')
87             '''
88             if not vorlagen_liste:
89                 fehlertext_vorlage = "Bitte Kassenbriefvorlage auswählen"
90             else:   
91                 routines.pdfs_erstellen(request, verein)
92                 return HttpResponseRedirect('erfolg')
93             '''
94     else:
95         beitrag_basis  = vconf.getConfig("beitrag_basis", 0)
96         beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
97         # GET request
98         if vorlage_selected == "":
99             fehlertext_vorlage = "Bitte Vorlage auswählen"
100         if not vorlagen_liste:
101             fehlertext_vorlage = "Bitte Vorlagen in Vorlagenverzeichnis einfügen"
102         if beitrag_basis == 0 or beitrag_zusatz == 0:
103             fehlertext_beitrag = "Bitte Eingaben zu Basis- und Zusatzbeitrag vornehmen"
104         vorlagen_form = VorlagenForm(vorlagen=vorlagen_liste, initial={'vorlage':vorlage_selected})
105         beitrag_form = BeitragForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
106         mitglieder_form = MitgliederForm()
107         
108     return render(request, 
109                   'kassenbrief.html', 
110                   {'vorlagen_form': vorlagen_form, 
111                    'beitrag_form': beitrag_form,
112                    'mitglieder_form': mitglieder_form,
113                    'verein': verein, 
114                    'fehlertext_vorlage' : fehlertext_vorlage, 
115                    'fehlertext_beitrag' : fehlertext_beitrag})
116    
117 def kassenbrief_alt(request, verein):
118     fehlertext = ""
119     # Hole Daten aus der Config
120     vconf = config.getInstance(verein)
121     beitrag_basis  = vconf.getConfig("beitrag_basis", 0)
122     beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
123
124     # suche Templates
125     import os
126     dirlist = None
127     if os.path.isdir("eh_app/templates/"+verein):
128         dirlist = os.listdir("eh_app/templates/"+verein) # returns list
129     if dirlist:
130         template_list = []
131         for t in dirlist:
132             template_list.append((t,t))
133     
134             # if this is a POST request we need to process the form data
135         if request.method == 'POST':
136         # create a form instance and populate it with data from the request:
137             form = KassenbriefForm(request.POST, request.FILES, dirlist)
138             # check whether it's valid:
139             if form.is_valid():
140                 # bei Änderungen Konfiguration aktualisieren
141                 routines.aktualisiere_config(vconf, form.cleaned_data, request.FILES.get('briefpapier_neu', None))
142             
143                 #Stammdaten neu aus Datenbank lesen und prüfen
144                 briefpapier    = vconf.getConfig("briefpapier")
145                 beitrag_basis  = int(vconf.getConfig("beitrag_basis", 0))
146                 beitrag_zusatz = int(vconf.getConfig("beitrag_zusatz", 0))
147                 briefpapier_label = briefpapier
148                 if not briefpapier:
149                     briefpapier_label = "Kein Briefpapier ausgewäht"
150             
151                     # prüfen ob Werte gefüllt
152                 if briefpapier is None:
153                     fehlertext = "Bitte Briefpapier auswählen."
154                 elif beitrag_basis == 0 and beitrag_zusatz == 0:
155                     fehlertext = "Bitte Basisbeitrag und Zusatzbeitrag ausfüllen."
156                 elif beitrag_basis == 0:
157                     fehlertext = "Bitte Basisbeitrag ausfüllen."
158                 elif beitrag_zusatz == 0:
159                     fehlertext = "Bitte Zusatzbeitrag ausfüllen."
160             
161                 # wenn Werte gefüllt 
162                 else:
163                     routines.pdfs_erstellen(request, verein)
164                 
165                     # redirect to a new URL:
166                     return HttpResponseRedirect('erfolg')
167
168
169         # if a GET (or any other method) we'll create a blank form
170         else:
171             form = KassenbriefForm(templates=template_list, initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
172             #form = KassenbriefForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
173             return render(request, 'kassenbrief.html', {'form': form, 'verein': verein, 'fehlertext' : fehlertext})
174     else:
175         fehlertext = "Bitte Templates anlegen."
176         return render(request, 'fehler.html', {'verein': verein, 'fehlertext' : fehlertext})
177
178     
179     '''
180     template = loader.get_template("kassenbrief.html")
181     return HttpResponse(template.render({
182         "verein"         : verein,
183         "briefpapier"    : briefpapier,
184         "beitrag_basis"  : beitrag_basis,
185         "beitrag_zusatz" : beitrag_zusatz
186         }, request))
187
188     '''
189
190 def kassenbrief_erfolg(request, verein):
191     # Hole Formulardaten
192     print (request.POST)
193     print (request.FILES)
194     return HttpResponse("xxx")
195
196 def kassenbrief_download(request, verein):
197     response = FileResponse(open(r'G:\SVBaL\python\eh_util\eh_app\test.pdf', 'rb'))
198     return response
199
200 def ehmeldung(request, verein):
201     # if this is a POST request we need to process the form data
202     if request.method == 'POST':
203         # create a form instance and populate it with data from the request:
204         form = EhmeldungForm(request.POST, request.FILES)
205         # check whether it's valid:
206         if form.is_valid():
207             # bei Änderungen Konfiguration aktualisieren
208             routines.erstelle_ehmeldung(form.cleaned_data)
209             # redirect to a new URL:
210             return HttpResponseRedirect('/thanks/')
211
212     # if a GET (or any other method) we'll create a blank form
213     else:
214         form = EhmeldungForm()
215
216     return render(request, 'ehmeldung.html', {'form': form, 'verein': verein})
217     
218