change of the dat4e managment
This commit is contained in:
@@ -163,7 +163,6 @@ def send_register_token(email: str, token: str) -> bool:
|
||||
|
||||
def send_password_reset_token(email: str, token: str) -> bool:
|
||||
"""Sends a professionally styled password reset token to the user."""
|
||||
|
||||
subject = "Aktion erforderlich: Ihr Passwort-Zurücksetzungs-Code für Invario"
|
||||
|
||||
text_note = (
|
||||
@@ -199,49 +198,51 @@ def generate_main_contract_pdf(
|
||||
address: str,
|
||||
price: str,
|
||||
date: str,
|
||||
software_name: str,
|
||||
output_path: str
|
||||
output_path: str,
|
||||
software_name: str = "Invario Inventarsystem"
|
||||
):
|
||||
"""Generiert das komplette PDF des Hauptvertrages (HV) mit allen Paragraphen und dynamischen Feldern."""
|
||||
"""Generiert den Hauptvertrag mit zentrierter und aufeinander abgestimmter Kopf- und Fußzeilen-Formatierung."""
|
||||
from datetime import datetime
|
||||
pdf = FPDF()
|
||||
pdf.add_page()
|
||||
pdf.set_auto_page_break(auto=True, margin=15)
|
||||
|
||||
# Schriftart festlegen
|
||||
pdf.set_font("Helvetica", size=10)
|
||||
|
||||
# --- TITEL ---
|
||||
# --- KOPFBEREICH (ZENTRIERT & BÜNDIG UNTEREINANDER) ---
|
||||
pdf.set_font("Helvetica", style="B", size=13)
|
||||
pdf.cell(0, 6, "Vertrag über die Nutzung der Software-Lizenz", ln=True, align="C")
|
||||
pdf.cell(0, 6, f"{software_name}", ln=True, align="C")
|
||||
pdf.cell(0, 6, f'"{software_name}"', ln=True, align="C")
|
||||
pdf.ln(6)
|
||||
|
||||
# --- PARTEIEN ---
|
||||
pdf.set_font("Helvetica", style="B", size=10)
|
||||
pdf.cell(0, 5, "Zwischen", ln=True, align="C")
|
||||
pdf.set_font("Helvetica", size=10)
|
||||
parties_text = (
|
||||
"Zwischen\n\n"
|
||||
"Invario UG\nAm Sportplatz 10, 83052 Bruckmühl\n"
|
||||
"-- Anbieter / Lizenzgeber --\n\n"
|
||||
"und\n\n"
|
||||
f"{school_name}\n{address}\n"
|
||||
"-- Auftraggeber / Schule --"
|
||||
)
|
||||
pdf.multi_cell(0, 5, parties_text)
|
||||
pdf.ln(6)
|
||||
pdf.cell(0, 5, "Invario UG", ln=True, align="C")
|
||||
pdf.cell(0, 5, "Am Sportplatz 10, 83052 Bruckmühl", ln=True, align="C")
|
||||
pdf.set_font("Helvetica", style="I", size=9)
|
||||
pdf.cell(0, 5, "- Anbieter / Lizenzgeber -", ln=True, align="C")
|
||||
pdf.ln(4)
|
||||
|
||||
# --- 1. VERTRAGSGEGENSTAND ---
|
||||
pdf.set_font("Helvetica", style="B", size=10)
|
||||
pdf.cell(0, 5, "und", ln=True, align="C")
|
||||
pdf.set_font("Helvetica", size=10)
|
||||
pdf.cell(0, 5, f"{school_name}", ln=True, align="C")
|
||||
pdf.cell(0, 5, f"{address}", ln=True, align="C")
|
||||
pdf.set_font("Helvetica", style="I", size=9)
|
||||
pdf.cell(0, 5, "- Auftraggeber / Schule -", ln=True, align="C")
|
||||
pdf.ln(8)
|
||||
|
||||
# --- PARAGRAPHEN (1 BIS 8) ---
|
||||
pdf.set_font("Helvetica", style="B", size=10)
|
||||
pdf.cell(0, 6, "1. Vertragsgegenstand", ln=True)
|
||||
pdf.set_font("Helvetica", size=10)
|
||||
pdf.multi_cell(0, 5,
|
||||
f"(1) Der Anbieter stellt dem Auftraggeber die Software \"{software_name}\" (nachfolgend \"Software\") als webbasierte Anwendung im Wege des Software-as-a-Service (SaaS) zur Verfügung. Die Software wird auf der vom Anbieter genutzten Infrastruktur betrieben.\n"
|
||||
f'(1) Der Anbieter stellt dem Auftraggeber die Software "{software_name}" (nachfolgend "Software") als webbasierte Anwendung im Wege des Software-as-a-Service (SaaS) zur Verfügung. Die Software wird auf der vom Anbieter genutzten Infrastruktur betrieben.\n'
|
||||
"(2) Dieser Hauptvertrag wird durch folgende Dokumente ergänzt, die als integrale Bestandteile dieses Vertrages gelten:\n"
|
||||
"a) Anlage 1: Allgemeine Geschäftsbedingungen (AGB) und Lizenzbedingungen (EULA) des Anbieters\n"
|
||||
"b) Anlage 2: Auftragsverarbeitungsvertrag (AVV) gemäß Art. 28 DS-GVO nebst technischen und organisatorischen Maßnahmen (TOM)"
|
||||
)
|
||||
pdf.ln(4)
|
||||
|
||||
# --- 2. VERTRAGSBEGINN ---
|
||||
pdf.set_font("Helvetica", style="B", size=10)
|
||||
pdf.cell(0, 6, "2. Vertragsbeginn", ln=True)
|
||||
pdf.set_font("Helvetica", size=10)
|
||||
@@ -251,18 +252,16 @@ def generate_main_contract_pdf(
|
||||
)
|
||||
pdf.ln(4)
|
||||
|
||||
# --- 3. LAUFZEIT UND KÜNDIGUNG ---
|
||||
pdf.set_font("Helvetica", style="B", size=10)
|
||||
pdf.cell(0, 6, "3. Laufzeit und Kündigung", ln=True)
|
||||
pdf.set_font("Helvetica", size=10)
|
||||
pdf.multi_cell(0, 5,
|
||||
"(1) Der Vertrag wird zunächst für die Dauer von zwölf (12) Monaten geschlossen (Mindestlaufzeit).\n"
|
||||
"(2) Er verlängert sich automatisch um jeweils ein weiteres Jahr, sofern er nicht von einer Partei mit einer Frist von drei (3) Monaten zum Ende der jeweiligen Laufzeit gekündigt wird.\n"
|
||||
"(3) Die Kündigung kann in Textform (z. B. per E-Mail) oder über die dafür vorgesehenen Funktionen im Invario-Portal erfolgen. Das Recht zur außerordentlichen Kündigung aus wichtigem Grund bleibt unberührt."
|
||||
"(3) Die Kündigung kann in Textform (z. B. per E-Mail) oder über die dafür vorgesehene Funktion im Invario-Portal erfolgen. Das Recht zur außerordentlichen Kündigung aus wichtigem Grund bleibt unberührt."
|
||||
)
|
||||
pdf.ln(4)
|
||||
|
||||
# --- 4. VERGÜTUNG UND BEZAHLUNG ---
|
||||
pdf.set_font("Helvetica", style="B", size=10)
|
||||
pdf.cell(0, 6, "4. Vergütung und Bezahlung", ln=True)
|
||||
pdf.set_font("Helvetica", size=10)
|
||||
@@ -273,7 +272,6 @@ def generate_main_contract_pdf(
|
||||
)
|
||||
pdf.ln(4)
|
||||
|
||||
# --- 5. NUTZUNG UND SUPPORT ---
|
||||
pdf.set_font("Helvetica", style="B", size=10)
|
||||
pdf.cell(0, 6, "5. Nutzung und Support", ln=True)
|
||||
pdf.set_font("Helvetica", size=10)
|
||||
@@ -283,7 +281,6 @@ def generate_main_contract_pdf(
|
||||
)
|
||||
pdf.ln(4)
|
||||
|
||||
# --- 6. DATENSCHUTZ UND DATENSICHERHEIT ---
|
||||
pdf.set_font("Helvetica", style="B", size=10)
|
||||
pdf.cell(0, 6, "6. Datenschutz und Datensicherheit", ln=True)
|
||||
pdf.set_font("Helvetica", size=10)
|
||||
@@ -293,17 +290,15 @@ def generate_main_contract_pdf(
|
||||
)
|
||||
pdf.ln(4)
|
||||
|
||||
# --- 7. HAFTUNG ---
|
||||
pdf.set_font("Helvetica", style="B", size=10)
|
||||
pdf.cell(0, 6, "7. Haftung", ln=True)
|
||||
pdf.set_font("Helvetica", size=10)
|
||||
pdf.multi_cell(0, 5,
|
||||
"(1) Die Haftung des Anbieters richtet sich nach den Regelungen in Ziffer 7 der Allgemeinen Geschäftsbedingungen (Anlage 1).\n"
|
||||
"(2) Für Unterbrechungen der Verfügbarkeit durch höhere Gewalt, Störungen im Bereich außerhalb des Übergabepunktes (z. B. Internet-Backbone) sowie für unvorhersehbare Sicherheitslücken, die nach dem aktuellen Stand der Technik zum Zeitpunkt des Auftretens noch nicht abwehrbar waren (Zero-Day-Exploits), haftet the Anbieter nur nach Maßgabe der Haftungsregelungen in den AGB, es sei denn, ihn trifft ein Verschulden an der verzögerten Behebung. Gesetzliche Datenschutzpflichten und Meldepflichten bleiben unberührt."
|
||||
"(2) Für Unterbrechungen der Verfügbarkeit durch höhere Gewalt, Störungen im Bereich außerhalb des Übergabepunktes (z. B. Internet-Backbone) sowie für unvorhersehbare Sicherheitslücken, die nach dem aktuellen Stand der Technik zum Zeitpunkt des Auftretens noch nicht abwehrbar waren (Zero-Day-Exploits), haftet der Anbieter nur nach Maßgabe der Haftungsregelungen in den AGB, es sei denn, ihn trifft ein Verschulden an der verzögerten Behebung. Gesetzliche Datenschutzpflichten und Meldepflichten bleiben unberührt."
|
||||
)
|
||||
pdf.ln(4)
|
||||
|
||||
# --- 8. SCHLUSSBESTIMMUNGEN ---
|
||||
pdf.set_font("Helvetica", style="B", size=10)
|
||||
pdf.cell(0, 6, "8. Schlussbestimmungen", ln=True)
|
||||
pdf.set_font("Helvetica", size=10)
|
||||
@@ -314,24 +309,33 @@ def generate_main_contract_pdf(
|
||||
)
|
||||
pdf.ln(6)
|
||||
|
||||
# --- UNTERSCHRIFTEN ---
|
||||
# --- FUSSBEREICH / UNTERSCHRIFTEN (ZENTRIERT & SYMMETRISCH) ---
|
||||
pdf.set_font("Helvetica", style="B", size=10)
|
||||
pdf.cell(0, 6, "Unterschriften und Einverständnis", ln=True)
|
||||
pdf.cell(0, 6, "Unterschriften und Einverständnis", ln=True, align="C")
|
||||
pdf.set_font("Helvetica", size=9)
|
||||
pdf.multi_cell(0, 4, "Mit der Unterzeichnung bestätigen die Parteien den Abschluss des Hauptvertrages inklusive der beigefügten Anlagen (AGB, EULA und AVV).")
|
||||
pdf.multi_cell(0, 4, "Mit der Unterzeichnung bestätigen die Parteien den Abschluss des Hauptvertrages inklusive der beigefügten Anlagen (AGB, EULA und AVV).", align="C")
|
||||
pdf.ln(8)
|
||||
|
||||
# Unterschriften-Blöcke nebeneinander
|
||||
pdf.set_font("Helvetica", size=9)
|
||||
pdf.cell(95, 5, "Für den Auftraggeber", ln=False)
|
||||
pdf.cell(95, 5, "Für den Anbieter", ln=True)
|
||||
pdf.ln(8)
|
||||
pdf.cell(95, 5, f"{date} ____________________________________", ln=False)
|
||||
pdf.cell(95, 5, f"{date} ________________ ____________________", ln=True)
|
||||
pdf.cell(95, 5, "(Verantwortlicher)", ln=False)
|
||||
pdf.cell(95, 5, "(Simon Brieger)", ln=True)
|
||||
# Exakte Zentrierung der zwei Unterschriften-Blöcke
|
||||
col_width = 85
|
||||
start_x = (210 - (col_width * 2)) / 2 # Berechnet den exakten linken Rand für Symmetrie (20mm)
|
||||
|
||||
pdf.set_font("Helvetica", size=9)
|
||||
|
||||
pdf.set_x(start_x)
|
||||
pdf.cell(col_width, 5, "Für den Auftraggeber", align="C", ln=False)
|
||||
pdf.cell(col_width, 5, "Für den Anbieter", align="C", ln=True)
|
||||
|
||||
pdf.ln(8)
|
||||
|
||||
pdf.set_x(start_x)
|
||||
pdf.cell(col_width, 5, f"{datetime.today().strftime('%Y-%m-%d')} ________________________", align="C", ln=False)
|
||||
pdf.cell(col_width, 5, f"{datetime.today().strftime('%Y-%m-%d')} ________________________", align="C", ln=True)
|
||||
|
||||
pdf.set_x(start_x)
|
||||
pdf.cell(col_width, 5, "(Verantwortlicher)", align="C", ln=False)
|
||||
pdf.cell(col_width, 5, "(Simon Brieger)", align="C", ln=True)
|
||||
|
||||
# PDF speichern
|
||||
pdf.output(output_path)
|
||||
return output_path
|
||||
|
||||
|
||||
Reference in New Issue
Block a user