import os
+from eh_app.AWK import config
'''
def handle_uploaded_file(csv_file):
csv_file_name = str(csv_file)
destination.write(chunk)
'''
def aktualisiere_config(config, data, file):
-
+
if file:
uploaded_file = file.name
data_path = config.requireConfig("data_path")
for chunk in file.chunks():
destination.write(chunk)
config.setConfig("briefpapier", uploaded_file)
-
+
if data["basisbeitrag"]:
config.setConfig("beitrag_basis", data["basisbeitrag"])
-
+
if data["zusatzbeitrag"]:
config.setConfig("beitrag_zusatz", data["zusatzbeitrag"])
-def erstellepdf(text):
- with open(r'G:\SVBaL\python\eh_util\eh_app\test.tex', 'w') as f: # öffnet ein neues Dokument mit dem Namen test.tex
- f.write(text) # schreibt in dieses neue Dokument
-
- # TODO: AUfruf PDF latex tex -> pdf
-
def erstelle_ehmeldung(data):
from PyPDF2 import PdfFileWriter, PdfFileReader
from datetime import date
can = canvas.Canvas(packet, pagesize=letter)
# Adressfeld
+ can.setFont("Helvetica", 14)
+ can.drawString(80, 770, "Siedlervereinigung Berg am Laim")
can.setFont("Helvetica", 12)
can.drawString(205, 618, data["VorZuname"])
can.drawString(205, 600, data["VorZunamePartner"])
can.drawString(205, 500, versichertes_object)
can.drawString(193, 466, str(data["AnzahlWohnungen"]))
if data["Selbstgenutzt"]:
- can.drawString(350, 466, "X")
+ can.drawString(360, 466, "X")
if data["Eigentumswohnung"]:
- can.drawString(188, 449, "X")
+ can.drawString(192, 449, "X")
if data["Gewerblich"]:
- can.drawString(350, 449, "X")
+ can.drawString(360, 449, "X")
can.drawString(140, 376, date.today().strftime('%d.%m.%Y'))
can.drawString(350, 376, "Maschinell erstellt.")
output.write(output_stream)
output_stream.close()
+def pdfs_erstellen(request, verein):
+ from django.template import loader
+
+ # lese alle Miglieder
+ cf = config.getInstance("svbal")
+ cf.setConfig("DataFile", "../../Test/etc/Export.csv")
+ from eh_app.qmodels import Mitglied
+ mm = Mitglied.objects.all()
+ template = loader.get_template("brief.tex")
+
+ from eh_app.AWK.pdf_ersteller import PdfErsteller
+ pe = PdfErsteller(request, template, "../../latex")
+
+ # Erstelle PDFs
+ for m in mm:
+ pe.erstellepdf(m)
+
@author: sparky2021
'''
+ from q import QError
from qif import QIF
from .AWK import config
H (header line): yes
'''
self.file_name = config.getInstance().requireConfig("DataFile")
- self.att_list = "`Mitglieds-Nr`, Anrede, Vorname, Nachname, `Straße`, PLZ, Ort, Geburtsdatum, Eintrittsdatum, Austrittsdatum, Zahlungsart, Iban, Bic, Kontoinhaber, Mandatsreferenz, `KommE-Mail_P1`"
+ self.att_list = "`Mitglieds-Nr`, Anrede, Vorname, Nachname, `Straße`, PLZ, Ort, Geburtsdatum, Eintrittsdatum, Austrittsdatum, Zahlungsart, Iban, Bic, Kontoinhaber, Mandatsreferenz, `E-Mail`"
# 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
def all(self):
import datetime
- data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE Abteilung_1 = 'Standard'")
+ data_set = self.data_source.request(f"SELECT {self.att_list} FROM {self.file_name} WHERE Abteilungen LIKE 'Standard%'")
+ if type(data_set) is QError:
+ raise RuntimeError(data_set)
mm = []
for data in data_set:
eintrittsdatum = datetime.datetime.strptime(data[8], '%d.%m.%Y')
def VersicherteGrundstucke(self, mitglied):
# Hole Basiseintrag
- data_set = self.data_source.request(f"SELECT Freifeldwert_2 FROM {self.file_name} WHERE `Mitglieds-Nr` = {mitglied.mitgliedsnr}")
++
+ data_set = self.data_source.request(f"SELECT VersichertesObjekt FROM {self.file_name} WHERE `Mitglieds-Nr` = {mitglied.mitgliedsnr}")
+ if type(data_set) is QError:
+ raise RuntimeError(data_set)
if data_set[0][0]:
gr = data_set[0][0]
else:
gst = [gr]
# Suche nach weiteren Grunstücken
- data_set = self.data_source.request(f"SELECT Freifeldwert_2 FROM {self.file_name} WHERE Freifeldname_1 = 'Partnernummer' AND Freifeldwert_1 = {mitglied.mitgliedsnr}")
+ data_set = self.data_source.request(f"SELECT VersichertesObjekt FROM {self.file_name} WHERE Zahlungsart LIKE '%(AZ: {mitglied.nachname}, {mitglied.vorname})'")
+ if type(data_set) is QError:
+ raise RuntimeError(data_set)
for data in data_set:
if len(data[0]) > 0:
gst.append(data[0])
from .AWK import config, routines
#import .forms
from .forms import EhmeldungForm, KassenbriefForm
+from eh_app.AWK.pdf_ersteller import PdfErsteller
# Create your views here.
template = loader.get_template("vbasis.html")
return HttpResponse(template.render({"verein" : verein}, request))
-def tex_bearbeiten(request, verein):
- template = loader.get_template("brief.tex")
- tex_bearbeitet = template.render({"Anrede" : 'Frau'}, {"Nachname" : 'Wagner'}, request)
-
-@login_required
+#@login_required
def kassenbrief(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 = os.listdir("eh_app/templates/"+verein) # returns list
+ 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':
# create a form instance and populate it with data from the request:
- form = KassenbriefForm(request.POST, request.FILES)
+ form = KassenbriefForm(request.POST, request.FILES, dirlist)
# check whether it's valid:
if form.is_valid():
# bei Änderungen Konfiguration aktualisieren
# wenn Werte gefüllt
else:
- routines.erstellepdf('Hallo Welt')
+ 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
else:
- form = KassenbriefForm(initial={'basisbeitrag': beitrag_basis, 'zusatzbeitrag': beitrag_zusatz})
+ 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, 'briefpapier': briefpapier_label, 'fehlertext' : fehlertext})
+ return render(request, 'kassenbrief.html', {'form': form, 'verein': verein, 'fehlertext' : fehlertext})
'''
template = loader.get_template("kassenbrief.html")
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
- 'DIRS': ["eh_util/templates", "/opt/eh_util/eh_util/templates"],
+ 'DIRS': ["eh_util/templates", "eh_utils/eh_app/templates/svbal"],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': 'db.sqlite3',
+ 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
- {
- 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
- },
- {
- 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
- },
- {
- 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
- },
- {
- 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
- },
+ #{
+ # 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
+ #},
+ #{
+ # 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
+ #},
+ #{
+ # 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
+ #},
+ #{
+ # 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
+ #},
]