-from django.http import HttpResponse
+import os,sys
+
+from django.contrib.auth.decorators import login_required
+from django.http import HttpResponse, HttpResponseRedirect, FileResponse
from django.shortcuts import render
from django.template import loader
-from .AWK import config, routines
+from .AWK import config, routines, util
#import .forms
-from .forms import KassenbriefForm
+
+from .forms import EhmeldungForm, VorlagenForm, BeitragForm, VorlagenVerwaltungForm, MitgliederForm, MitgliederAuswahlForm
+from eh_app.AWK.pdf_ersteller import PdfErsteller
# Create your views here.
+try:
+ home = os.environ["HOME"]
+ 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/"):
+ # its a eclipse development environment
+ 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/")
+ import pydevd
+ pydevd.settrace()
+
+except:
+ pass
+
def index(request, verein):
template = loader.get_template("vbasis.html")
+ #raise RuntimeError("blub")
return HttpResponse(template.render({"verein" : verein}, request))
+def vorlagen_verwalten(request, verein):
+ # TODO vorlagen_liste durch Dateioperationen aufbauen. S. kassenbrief_alt
+ # Die finale Liste muss dann folgende Form haben:
+ vorlagen_liste = [("vorlage1.tex","vorlage1"),("vorlage2.tex","vorlage2")]
+
+ if request.method == 'POST':
+ # Form auswerten
+ # Verarbeitung in routines.py aufrufen
+
+ # Wenn alles gut gegangen, zurück zum Kassenbrief
+ return HttpResponseRedirect(f'/{verein}/kassenbrief')
+ else:
+ vorlagen_form = VorlagenVerwaltungForm(vorlagen=vorlagen_liste)
+
+ template = loader.get_template("vorlagen_verwalten.html")
+ return HttpResponse(template.render(
+ {
+ "verein" : verein,
+ "vorlagen_form" : vorlagen_form },
+ request))
+ '''
+ ---------------------------------------------------------------
+ Neue Templates installieren
+
+ <Dateiauswahlknopf>
+ <Knopf"Installieren">
+ '''
+
+def mitglieder_auswahlen(request, verein):
+ # TODO mitglieder aus DB holen
+ #from eh_app.qmodels import Mitglied
+ #mm = Mitglied.objects.all()
+ #mitglieder_liste = []
+ #for Mitglied in mm:
+ # mitglieder_liste.append(Mitglied.mitgliedsnr, Mitglied.nachname)
+ # Die finale Liste muss dann folgende Form haben:
+ mitglieder_liste = [("12","Wagler"),("13","Maier")]
+
+ if request.method == 'POST':
+ # Form auswerten
+ # Auswahl in Cookie schreiben, s. util.py
+ util.write_http_data("m_liste", "mitglieder_liste")
+ test = util.lese_http_data("m_liste")
+ print (test)
+
+ # Wenn alles gut gegangen, zurück zum Kassenbrief
+ return HttpResponseRedirect(f'/{verein}/kassenbrief')
+ else:
+ mausw_form = MitgliederAuswahlForm(mitglieder=mitglieder_liste)
+
+ template = loader.get_template("mitglieder_auswahlen.html")
+ return HttpResponse(template.render(
+ {
+ "verein" : verein,
+ "mausw_form" : mausw_form },
+ request))
+ '''
+ ---------------------------------------------------------------
+ Neue Templates installieren
+
+ <Dateiauswahlknopf>
+ <Knopf"Installieren">
+ '''
+
+#@login_required
def kassenbrief(request, verein):
+ '''
+ GET:
+ Diese Methode liest aus der Config die Einstellungen und zeigt sie an.
+
+ POST:
+
+ Diese Methode bearbeitet den finalen "Erstellen"
+
+ Die Unterformulare (z.B. Beitrag ändern) landen in einer eigenen Methode, die die
+ Einstellungen in der Config ändert und dann diese hier mit GET aufruft.
+ '''
+ '''
+ ---------------------------------------------------------------
+ Templateauswahl
+
+ Ausgewähltes Template: <Wert aus Config>
+ Klappliste <Knopf"Template ändern">
+ Link -> Neue Templates installieren
+ ---------------------------------------------------------------
+ '''
+ fehlertext_vorlage = ""
+ fehlertext_beitrag = ""
+ vconf = config.getInstance(verein)
+ beitrag_basis = vconf.getConfig("beitrag_basis", 0)
+ beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
+ #TODO: aus Cookie lesen
+ mitglieder_liste = util.lese_http_data("m_liste")
+ print (mitglieder_liste)
+ vorlagen_liste = []
+ if os.path.isdir("eh_app/templates/"+verein):
+ dirlist = os.listdir("eh_app/templates/"+verein) # returns list
+ for t in dirlist:
+ vorlagen_liste.append((t,t))
+ vorlagen_form = VorlagenForm(vorlagen=vorlagen_liste)
+ beitrag_form = BeitragForm
+ mitglieder_form = MitgliederForm(zul=mitglieder_liste)
+ if request.method == 'POST':
+ vorlagen_form = VorlagenForm(request.POST, request.FILES)
+ beitrag_form = BeitragForm(request.POST, request.FILES)
+ mausw_form = MitgliederForm(request.POST, request.FILES)
+ if vorlagen_form.is_valid() and beitrag_form.is_valid():
+ routines.aktualisiere_config(vconf, vorlagen_form.cleaned_data, beitrag_form.cleaned_data)
+ if not vorlagen_liste:
+ fehlertext_vorlage = "Bitte Kassenbriefvorlage auswählen"
+ else:
+ routines.pdfs_erstellen(request, verein)
+ return HttpResponseRedirect('erfolg')
+ else:
+ # GET request
+ #beitrag_basis = vconf.getConfig("beitrag_basis", 0)
+ #beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
+ #if vorlage_selected == "":
+ #fehlertext_vorlage = "Bitte Vorlage auswählen"
+ if not vorlagen_liste:
+ fehlertext_vorlage = "Bitte Vorlagen in Vorlagenverzeichnis einfügen"
+ if beitrag_basis == 0 or beitrag_zusatz == 0:
+ fehlertext_beitrag = "Bitte Eingaben zu Basis- und Zusatzbeitrag vornehmen"
+ #vorlagen_form = VorlagenForm(vorlagen=vorlagen_liste, initial={'vorlage':vorlage_selected})
+ #beitrag_form = BeitragForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
+ #mitglieder_form = MitgliederForm()
+
+ return render(request,
+ 'kassenbrief.html',
+ {'vorlagen_form': vorlagen_form,
+ 'beitrag_form': beitrag_form,
+ 'mausw_form': mitglieder_form,
+ 'verein': verein,
+ 'fehlertext_vorlage' : fehlertext_vorlage,
+ 'fehlertext_beitrag' : fehlertext_beitrag})
+
+
+def kassenbrief_alt(request, verein):
+ fehlertext = ""
# Hole Daten aus der Config
vconf = config.getInstance(verein)
- briefpapier = vconf.getConfig("briefpapier")
beitrag_basis = vconf.getConfig("beitrag_basis", 0)
beitrag_zusatz = vconf.getConfig("beitrag_zusatz", 0)
- briefpapier_label = briefpapier
- if not briefpapier:
- briefpapier_label = "Kein Briefpapier ausgewäht"
+
+ # suche Templates
+ import os
+ dirlist = None
+ if os.path.isdir("eh_app/templates/"+verein):
+ dirlist = os.listdir("eh_app/templates/"+verein) # returns list
+ if dirlist:
+ template_list = []
+ for t in dirlist:
+ template_list.append((t,t))
- # if this is a POST request we need to process the form data
- if request.method == 'POST':
+ # if this is a POST request we need to process the form data
+ if request.method == 'POST':
# create a form instance and populate it with data from the request:
- form = KassenbriefForm(request.POST, request.FILES)
- # check whether it's valid:
- if form.is_valid():
- # bei Änderungen Konfiguration aktualisieren
- routines.aktualisiere_config(vconf, form.cleaned_data)
- # redirect to a new URL:
- return HttpResponseRedirect('/thanks/')
+ form = KassenbriefForm(request.POST, request.FILES, dirlist)
+ # check whether it's valid:
+ if form.is_valid():
+ # bei Änderungen Konfiguration aktualisieren
+ routines.aktualisiere_config(vconf, form.cleaned_data, request.FILES.get('briefpapier_neu', None))
+
+ #Stammdaten neu aus Datenbank lesen und prüfen
+ briefpapier = vconf.getConfig("briefpapier")
+ beitrag_basis = int(vconf.getConfig("beitrag_basis", 0))
+ beitrag_zusatz = int(vconf.getConfig("beitrag_zusatz", 0))
+ briefpapier_label = briefpapier
+ if not briefpapier:
+ briefpapier_label = "Kein Briefpapier ausgewäht"
+
+ # prüfen ob Werte gefüllt
+ if briefpapier is None:
+ fehlertext = "Bitte Briefpapier auswählen."
+ elif beitrag_basis == 0 and beitrag_zusatz == 0:
+ fehlertext = "Bitte Basisbeitrag und Zusatzbeitrag ausfüllen."
+ elif beitrag_basis == 0:
+ fehlertext = "Bitte Basisbeitrag ausfüllen."
+ elif beitrag_zusatz == 0:
+ fehlertext = "Bitte Zusatzbeitrag ausfüllen."
+
+ # wenn Werte gefüllt
+ else:
+ routines.pdfs_erstellen(request, verein)
+
+ # redirect to a new URL:
+ return HttpResponseRedirect('erfolg')
- # if a GET (or any other method) we'll create a blank form
+
+ # if a GET (or any other method) we'll create a blank form
+ else:
+ form = KassenbriefForm(templates=template_list, initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
+ #form = KassenbriefForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
+ return render(request, 'kassenbrief.html', {'form': form, 'verein': verein, 'fehlertext' : fehlertext})
else:
- form = KassenbriefForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
+ fehlertext = "Bitte Templates anlegen."
+ return render(request, 'fehler.html', {'verein': verein, 'fehlertext' : fehlertext})
- return render(request, 'kassenbrief.html', {'form': form, 'verein': verein, 'briefpapier': briefpapier_label})
'''
template = loader.get_template("kassenbrief.html")
'''
-def kassenbrief_exec(request, verein):
+def kassenbrief_erfolg(request, verein):
# Hole Formulardaten
print (request.POST)
print (request.FILES)
return HttpResponse("xxx")
+
+def kassenbrief_download(request, verein):
+ response = FileResponse(open(r'G:\SVBaL\python\eh_util\eh_app\test.pdf', 'rb'))
+ return response
+
+def ehmeldung(request, verein):
+ # if this is a POST request we need to process the form data
+ if request.method == 'POST':
+ # create a form instance and populate it with data from the request:
+ form = EhmeldungForm(request.POST, request.FILES)
+ # check whether it's valid:
+ if form.is_valid():
+ # bei Änderungen Konfiguration aktualisieren
+ routines.erstelle_ehmeldung(form.cleaned_data)
+ # redirect to a new URL:
+ return HttpResponseRedirect('/thanks/')
+
+ # if a GET (or any other method) we'll create a blank form
+ else:
+ form = EhmeldungForm()
+
+ return render(request, 'ehmeldung.html', {'form': form, 'verein': verein})
+
\ No newline at end of file