"""
PDF Service - Inline HTML Templates.
Fallback templates when external template files don't exist.
"""
def get_letter_template_html() -> str:
"""Inline HTML-Template für Elternbriefe."""
return """
{{ data.subject }}
{{ data.date }}
{{ data.recipient_name }}
{{ data.recipient_address | replace('\\n', '
') | safe }}
Betreff: {{ data.subject }}
Schüler/in: {{ data.student_name }} | Klasse: {{ data.student_class }}
{{ data.content | replace('\\n', '
') | safe }}
{% if data.gfk_principles_applied %}
{% for principle in data.gfk_principles_applied %}
✓ {{ principle }}
{% endfor %}
{% endif %}
Mit freundlichen Grüßen
{{ data.teacher_name }}
{% if data.teacher_title %}
{{ data.teacher_title }}{% endif %}
{% if data.legal_references %}
Rechtliche Grundlagen:
{% for ref in data.legal_references %}
• {{ ref.law }} {{ ref.paragraph }}: {{ ref.title }}
{% endfor %}
{% endif %}
Erstellt mit BreakPilot | {{ generated_at }}
"""
def get_certificate_template_html() -> str:
"""Inline HTML-Template für Zeugnisse."""
return """
Zeugnis - {{ data.student_name }}
| Name: {{ data.student_name }} |
Geburtsdatum: {{ data.student_birthdate }} |
| Klasse: {{ data.student_class }} |
|
Leistungen
| Fach |
Note |
Punkte |
{% for subject in data.subjects %}
| {{ subject.name }} |
{{ subject.grade }}
|
{{ subject.points | default('-') }} |
{% endfor %}
{% if data.social_behavior or data.work_behavior %}
Verhalten
{% if data.social_behavior %}
| Sozialverhalten |
{{ data.social_behavior }} |
{% endif %}
{% if data.work_behavior %}
| Arbeitsverhalten |
{{ data.work_behavior }} |
{% endif %}
{% endif %}
Versäumte Tage: {{ data.attendance.days_absent | default(0) }}
(davon entschuldigt: {{ data.attendance.days_excused | default(0) }},
unentschuldigt: {{ data.attendance.days_unexcused | default(0) }})
{% if data.remarks %}
Bemerkungen:
{{ data.remarks }}
{% endif %}
Ausgestellt am: {{ data.issue_date }}
{{ data.class_teacher }}
Klassenlehrer/in
{{ data.principal }}
Schulleiter/in
"""
def get_correction_template_html() -> str:
"""Inline HTML-Template für Korrektur-Übersichten."""
return """
Korrektur - {{ data.exam_title }}
{{ data.student.name }} | Klasse {{ data.student.class_name }}
Note: {{ data.grade }}
{{ data.achieved_points }} von {{ data.max_points }} Punkten
({{ data.percentage | round(1) }}%)
Detaillierte Auswertung
{% for item in data.corrections %}
{{ item.question }}
{% if item.answer %}
Antwort: {{ item.answer }}
{% endif %}
Punkte: {{ item.points }}
{% if item.feedback %}
{{ item.feedback }}
{% endif %}
{% endfor %}
{% if data.teacher_notes %}
Lehrerkommentar:
{{ data.teacher_notes }}
{% endif %}
{% if data.ai_feedback %}
KI-Feedback:
{{ data.ai_feedback }}
{% endif %}
{% if data.class_average or data.grade_distribution %}
Klassenstatistik
{% if data.class_average %}
| Klassendurchschnitt: |
{{ data.class_average }} |
{% endif %}
{% if data.grade_distribution %}
| Notenverteilung: |
{% for grade, count in data.grade_distribution.items() %}
Note {{ grade }}: {{ count }}x{% if not loop.last %}, {% endif %}
{% endfor %}
|
{% endif %}
{% endif %}
Erstellt mit BreakPilot | {{ generated_at }}
"""