]> wagnertech.de Git - SVBaL.git/blob - python/eh_app/AWK/pdf_ersteller.py
Erste Version
[SVBaL.git] / python / eh_app / AWK / pdf_ersteller.py
1 import os
2
3 class PdfErsteller(object):
4     '''
5     Klasse zur Erstellung von PDFs
6     Diese Klasse verwaltet Resourcen. Mit "with" verwenden!
7     '''
8
9     def __init__(self, request, template, basisbtr: int, zusatzbtr: int, pfad, pdfersteller):
10         self.request        = request
11         self.template       = template
12         self.pfad           = pfad
13         self.pdfersteller   = pdfersteller
14         self.basisbtr       = basisbtr
15         self.zusatzbtr      = zusatzbtr
16         self.gesamtbetrag   = 0
17         self.anzahl         = 0
18         self.csvfile        = open(os.path.join(pfad, "ergebnis", "rechnungen.csv"), "w")
19         print("Name", "Vorname", "Straße", "PLZ", "Ort", "Anz. Grundstück", "Betrag", sep=";", file=self.csvfile )
20         
21     def __enter__(self):
22         return self
23     
24     def __exit__(self, exc_type, exc_value, traceback):
25         print ("Gesamt", self.gesamtbetrag, sep=";", file=self.csvfile )
26         self.csvfile.close()
27         
28     def erstellepdf(self, m):
29         gg      = m.VersicherteGrundstucke()
30         g1      = gg[0]
31         gn      = gg[1:]
32         beitrag = self.basisbtr + self.zusatzbtr*len(gn)
33         konto   = None
34         if len(m.iban) > 0:
35             konto = m.iban[0:4]+" xxxx xxxx xxxx "+m.iban[-2:]
36         
37         # Hinweise zur Templateerstellung:
38         # https://docs.djangoproject.com/en/2.2/ref/templates/builtins/#ref-templates-builtins-tags
39         
40         tex_bearbeitet = self.template.render(
41             {"vorname"      : m.vorname, 
42              "nachname"     : m.nachname,
43              "strasse"      : m.strasse,
44              "plz"          : m.plz,
45              "ort"          : m.ort,
46              "anrede"       : m.anrede,
47              "grundstuck1"  : g1,
48              "basisbeitrag" : self.basisbtr,
49              "g_weitere"    : gn,
50              "zusatzbeitrag": self.zusatzbtr,
51              "beitrag"      : beitrag,
52              "konto"        : konto,
53              "m_nr"         : m.mitgliedsnr
54             }, self.request)
55     
56         with open(f'{self.pfad}/{m.nachname}_{m.mitgliedsnr}_brief.tex', 'w') as f:
57             f.write(tex_bearbeitet) # schreibt in dieses neue Dokument
58             
59         # AUfruf PDF latex tex -> pdf
60         import subprocess
61         rc = subprocess.call(["bash", self.pdfersteller, self.pfad, f'{m.nachname}_{m.mitgliedsnr}_brief.tex'])
62         if rc != 0:
63             raise RuntimeError(f"pdfersteller.sh failed: {rc}")
64         
65         # schreibe Eintrag in Ergebnisdatei und erhöhe Gesamzbetrag
66         print(m.nachname, m.vorname, m.strasse, m.plz, m.ort, len(gg), beitrag, sep=";", file=self.csvfile )
67         self.gesamtbetrag += beitrag
68         self.anzahl       += 1