This commit is contained in:
@@ -0,0 +1,242 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import markdown as markdown_lib
|
||||
import bleach
|
||||
|
||||
SITE_CONTENT_IMPRESSUM = 'impressum'
|
||||
SITE_CONTENT_PRIVACY = 'datenschutz'
|
||||
|
||||
DEFAULT_SITE_CONTENT_MARKDOWN = {
|
||||
SITE_CONTENT_IMPRESSUM: """# Impressum
|
||||
|
||||
Bitte vor dem produktiven Einsatz im Admin-Bereich vollständig ausfüllen.
|
||||
|
||||
## Diensteanbieter
|
||||
|
||||
Firmenname / Name
|
||||
Straße und Hausnummer
|
||||
PLZ Ort
|
||||
Land
|
||||
|
||||
## Kontakt
|
||||
|
||||
E-Mail: [kontakt@example.com](mailto:kontakt@example.com)
|
||||
|
||||
## Verantwortlich für den Inhalt nach § 18 Abs. 2 MStV
|
||||
|
||||
Name der verantwortlichen Person
|
||||
Straße und Hausnummer
|
||||
PLZ Ort
|
||||
Land
|
||||
""",
|
||||
SITE_CONTENT_PRIVACY: """# Datenschutzerklärung
|
||||
|
||||
## 1. Verantwortlicher
|
||||
|
||||
Bitte vor dem produktiven Einsatz im Admin-Bereich prüfen und anpassen.
|
||||
|
||||
Verantwortlich für die Verarbeitung personenbezogener Daten im Zusammenhang mit dieser Website und Anwendung ist:
|
||||
|
||||
Firmenname / Name
|
||||
Straße und Hausnummer
|
||||
PLZ Ort
|
||||
Land
|
||||
E-Mail: [kontakt@example.com](mailto:kontakt@example.com)
|
||||
|
||||
## 2. Allgemeines zur Datenverarbeitung
|
||||
|
||||
Ich verarbeite personenbezogene Daten nur, soweit dies zur Bereitstellung einer funktionsfähigen Website und Anwendung, zur Bearbeitung von Anfragen, zur Sicherheit des Dienstes sowie zur Erbringung der angebotenen Funktionen erforderlich ist.
|
||||
|
||||
## 3. Aufruf der Website
|
||||
|
||||
Beim Aufruf der Website werden technisch erforderliche Daten verarbeitet, um die Seite auszuliefern und die Stabilität und Sicherheit des Dienstes zu gewährleisten.
|
||||
|
||||
Dabei können insbesondere folgende Daten verarbeitet werden:
|
||||
|
||||
- IP-Adresse
|
||||
- Datum und Uhrzeit des Abrufs
|
||||
- aufgerufene Seite bzw. Ressource
|
||||
- Informationen über Browser und Betriebssystem
|
||||
- Referrer-Informationen
|
||||
- Protokolldaten zu Sicherheits- und Fehlervorgängen
|
||||
|
||||
Die Verarbeitung erfolgt zur technischen Bereitstellung, Systemsicherheit und Missbrauchserkennung.
|
||||
|
||||
## 4. Registrierung und Benutzerkonto
|
||||
|
||||
Wenn du ein Benutzerkonto anlegst, verarbeite ich die von dir angegebenen Registrierungsdaten, insbesondere:
|
||||
|
||||
- E-Mail-Adresse
|
||||
- Passwort in gehashter Form
|
||||
- von dir hinterlegte Einstellungen innerhalb der Anwendung
|
||||
|
||||
Die Verarbeitung erfolgt zum Zweck der Einrichtung und Verwaltung deines Benutzerkontos sowie zur Nutzung der Funktionen von Stundenfuchs.
|
||||
|
||||
## 5. Nutzung der Anwendung
|
||||
|
||||
Im Rahmen der Nutzung von Stundenfuchs verarbeite ich die von dir eingegebenen oder erzeugten Inhalte, insbesondere:
|
||||
|
||||
- Arbeitszeiteinträge
|
||||
- Pausenangaben
|
||||
- Urlaubs-, Krankheits- und Feiertagseinträge
|
||||
- Stundenausgleich
|
||||
- Einstellungen zu Wochenstunden, relevanten Arbeitstagen und Auswertungen
|
||||
- Backup-, Export- und Importdaten
|
||||
- Angaben im Arbeitsstunden-Counter
|
||||
|
||||
Diese Daten werden verarbeitet, um dir die Funktionen der Anwendung bereitzustellen.
|
||||
|
||||
## 6. Anmeldung, Sitzungen und Sicherheit
|
||||
|
||||
Zur Anmeldung und sicheren Nutzung der Anwendung werden technisch notwendige Sitzungsdaten verarbeitet. Außerdem können sicherheitsrelevante Daten verarbeitet werden, insbesondere zur:
|
||||
|
||||
- Login-Verwaltung
|
||||
- Erkennung missbräuchlicher Zugriffe
|
||||
- Durchsetzung von Sicherheitsmaßnahmen
|
||||
- Begrenzung fehlerhafter Login- oder Formularversuche
|
||||
|
||||
## 7. E-Mail-Funktionen
|
||||
|
||||
Im Zusammenhang mit der Nutzung von Stundenfuchs können E-Mails versendet werden, insbesondere für:
|
||||
|
||||
- E-Mail-Bestätigung
|
||||
- Passwort-Reset
|
||||
- sicherheitsrelevante Hinweise
|
||||
- Benachrichtigungen innerhalb der Anwendung
|
||||
- Kontaktanfragen bzw. Tickets
|
||||
|
||||
Dafür werden insbesondere E-Mail-Adresse und die jeweils zur Nachricht erforderlichen Metadaten verarbeitet.
|
||||
|
||||
## 8. Zwei-Faktor-Authentifizierung
|
||||
|
||||
Wenn du die Zwei-Faktor-Authentifizierung aktivierst, werden die dafür erforderlichen Sicherheitsdaten verarbeitet, um die zusätzliche Anmeldung per Authenticator-App zu ermöglichen.
|
||||
|
||||
## 9. Kontaktformular und Ticketsystem
|
||||
|
||||
Wenn du das Kontaktformular nutzt oder ein Ticket erstellst, verarbeite ich die von dir übermittelten Angaben, insbesondere:
|
||||
|
||||
- Name
|
||||
- E-Mail-Adresse
|
||||
- Kategorie der Anfrage
|
||||
- Betreff
|
||||
- Nachricht
|
||||
- technische Missbrauchsschutzdaten
|
||||
|
||||
Die Verarbeitung erfolgt zur Bearbeitung deiner Anfrage, zur Kommunikation mit dir sowie zur Abwehr von Missbrauch und Spam.
|
||||
|
||||
## 10. Export und Backup
|
||||
|
||||
Wenn du Export- oder Backup-Funktionen nutzt, werden die von dir innerhalb der Anwendung gespeicherten Daten zusammengestellt und zum Download bereitgestellt. Diese Verarbeitung erfolgt ausschließlich zur Durchführung der von dir ausgelösten Funktion.
|
||||
|
||||
## 11. Rechtsgrundlagen
|
||||
|
||||
Soweit die Verarbeitung zur Bereitstellung und Durchführung der Funktionen von Stundenfuchs erforderlich ist, erfolgt sie auf Grundlage von Art. 6 Abs. 1 lit. b DSGVO.
|
||||
|
||||
Soweit die Verarbeitung zur Gewährleistung der Sicherheit, Stabilität und Missbrauchsvermeidung erfolgt, beruht sie auf Art. 6 Abs. 1 lit. f DSGVO. Das berechtigte Interesse liegt in der sicheren, funktionsfähigen und wirtschaftlichen Bereitstellung des Dienstes.
|
||||
|
||||
Soweit du mich kontaktierst, erfolgt die Verarbeitung je nach Inhalt deiner Anfrage auf Art. 6 Abs. 1 lit. b DSGVO oder Art. 6 Abs. 1 lit. f DSGVO.
|
||||
|
||||
## 12. Empfänger von Daten
|
||||
|
||||
Personenbezogene Daten werden nur insoweit weitergegeben, wie dies für den Betrieb der Anwendung technisch erforderlich ist oder eine gesetzliche Verpflichtung besteht.
|
||||
|
||||
Hosting-, E-Mail- und sonstige Empfängerangaben müssen für den konkreten Produktivbetrieb ergänzt werden.
|
||||
|
||||
## 13. Speicherdauer
|
||||
|
||||
Personenbezogene Daten werden nur so lange gespeichert, wie dies für die jeweiligen Zwecke erforderlich ist oder gesetzliche Aufbewahrungspflichten bestehen.
|
||||
|
||||
Kontodaten und in der Anwendung gespeicherte Inhalte werden grundsätzlich so lange gespeichert, wie dein Benutzerkonto besteht, sofern keine gesetzlichen Pflichten entgegenstehen.
|
||||
|
||||
Kontaktanfragen und Tickets werden gespeichert, soweit dies zur Bearbeitung, Dokumentation und Missbrauchsabwehr erforderlich ist.
|
||||
|
||||
## 14. Deine Rechte
|
||||
|
||||
Du hast nach Maßgabe der gesetzlichen Vorschriften das Recht auf:
|
||||
|
||||
- Auskunft über die verarbeiteten personenbezogenen Daten
|
||||
- Berichtigung unrichtiger Daten
|
||||
- Löschung
|
||||
- Einschränkung der Verarbeitung
|
||||
- Datenübertragbarkeit
|
||||
- Widerspruch gegen Verarbeitungen auf Grundlage berechtigter Interessen
|
||||
|
||||
Wenn eine Verarbeitung auf einer Einwilligung beruht, kannst du diese jederzeit mit Wirkung für die Zukunft widerrufen.
|
||||
|
||||
## 15. Beschwerderecht
|
||||
|
||||
Du hast das Recht, dich bei einer Datenschutzaufsichtsbehörde zu beschweren.
|
||||
|
||||
## 16. Pflicht zur Bereitstellung von Daten
|
||||
|
||||
Soweit personenbezogene Daten für die Registrierung, Anmeldung oder Nutzung der Anwendung erforderlich sind, ist die Bereitstellung dieser Daten notwendig. Ohne diese Daten kann Stundenfuchs ganz oder teilweise nicht genutzt werden.
|
||||
|
||||
## 17. Keine automatisierte Entscheidungsfindung
|
||||
|
||||
Eine automatisierte Entscheidungsfindung einschließlich Profiling im Sinne von Art. 22 DSGVO findet nicht statt.
|
||||
|
||||
## 18. Keine Analyse- oder Drittinhalte
|
||||
|
||||
Es werden keine Analyse- oder Trackingdienste eingesetzt.
|
||||
|
||||
Es werden keine externen Schriftarten, kein externes Fehlertracking und keine eingebetteten Drittinhalte verwendet.
|
||||
|
||||
## 19. Stand
|
||||
|
||||
Stand: März 2026
|
||||
""",
|
||||
}
|
||||
|
||||
_ALLOWED_TAGS = [
|
||||
'a', 'blockquote', 'br', 'code', 'em', 'h1', 'h2', 'h3', 'h4', 'li', 'ol', 'p', 'pre', 'strong', 'ul'
|
||||
]
|
||||
_ALLOWED_ATTRIBUTES = {
|
||||
'a': ['href', 'title', 'rel', 'target'],
|
||||
}
|
||||
_ALLOWED_PROTOCOLS = ['http', 'https', 'mailto']
|
||||
|
||||
|
||||
def default_site_content_markdown(key: str) -> str:
|
||||
return DEFAULT_SITE_CONTENT_MARKDOWN.get(key, '')
|
||||
|
||||
|
||||
def render_safe_markdown(markdown_text: str) -> str:
|
||||
raw_html = markdown_lib.markdown(
|
||||
markdown_text or '',
|
||||
extensions=['extra', 'sane_lists'],
|
||||
output_format='html5',
|
||||
)
|
||||
cleaned = bleach.clean(
|
||||
raw_html,
|
||||
tags=_ALLOWED_TAGS,
|
||||
attributes=_ALLOWED_ATTRIBUTES,
|
||||
protocols=_ALLOWED_PROTOCOLS,
|
||||
strip=True,
|
||||
)
|
||||
return bleach.linkify(cleaned)
|
||||
|
||||
|
||||
def normalize_markdown_input(value: str) -> str:
|
||||
return (value or '').strip()
|
||||
|
||||
|
||||
def ticket_status_label(status: str) -> str:
|
||||
return {
|
||||
'open': 'Offen',
|
||||
'closed': 'Geschlossen',
|
||||
}.get(status, status)
|
||||
|
||||
|
||||
def ticket_category_options() -> list[dict[str, str]]:
|
||||
return [
|
||||
{'value': 'problem', 'label': 'Problem'},
|
||||
{'value': 'feature', 'label': 'Featurerequest'},
|
||||
{'value': 'other', 'label': 'Sonstiges'},
|
||||
]
|
||||
|
||||
|
||||
def ticket_category_label(value: str) -> str:
|
||||
for item in ticket_category_options():
|
||||
if item['value'] == value:
|
||||
return item['label']
|
||||
return value
|
||||
Reference in New Issue
Block a user