Add Vorlagen editor, upload portal, onboarding, and participant import command
- Dokument-Vorlagen-Editor: create/edit/reset document templates (admin) - Upload-Portal: public portal for Nachweis uploads via token - Onboarding: invite Destinatäre via email with multi-step wizard - Bestätigungsschreiben: preview and send confirmation letters - Email settings: SMTP configuration UI - Management command: import_veranstaltung_teilnehmer for bulk participant import Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -118,8 +118,11 @@ MEDIA_URL = "/media/"
|
||||
MEDIA_ROOT = BASE_DIR / "media"
|
||||
|
||||
# Celery
|
||||
CELERY_BROKER_URL = os.getenv("REDIS_URL", "redis://redis:6379/0")
|
||||
CELERY_RESULT_BACKEND = os.getenv("REDIS_URL", "redis://redis:6379/0")
|
||||
CELERY_BROKER_URL = os.getenv("CELERY_REDIS_URL", os.getenv("REDIS_URL", "redis://redis:6379/2"))
|
||||
CELERY_RESULT_BACKEND = os.getenv("CELERY_REDIS_URL", os.getenv("REDIS_URL", "redis://redis:6379/2"))
|
||||
CELERY_TASK_SERIALIZER = "json"
|
||||
CELERY_RESULT_SERIALIZER = "json"
|
||||
CELERY_ACCEPT_CONTENT = ["json"]
|
||||
|
||||
# Celery Beat – periodische Tasks
|
||||
from celery.schedules import crontab # noqa: E402
|
||||
@@ -130,6 +133,11 @@ CELERY_BEAT_SCHEDULE = {
|
||||
"task": "stiftung.tasks.poll_emails",
|
||||
"schedule": crontab(minute="*/15"),
|
||||
},
|
||||
# Täglich um 08:00 Uhr: Ablaufende Upload-Tokens prüfen und Erinnerungen versenden
|
||||
"check-ablaufende-tokens": {
|
||||
"task": "stiftung.tasks.check_ablaufende_tokens",
|
||||
"schedule": crontab(hour="8", minute="0"),
|
||||
},
|
||||
}
|
||||
|
||||
# IMAP-Konfiguration für E-Mail-Eingang (Destinatäre)
|
||||
@@ -141,6 +149,16 @@ IMAP_PASSWORD = os.getenv("IMAP_PASSWORD", "")
|
||||
IMAP_FOLDER = os.getenv("IMAP_FOLDER", "INBOX")
|
||||
IMAP_USE_SSL = os.getenv("IMAP_USE_SSL", "true").lower() == "true"
|
||||
|
||||
# SMTP-Konfiguration für E-Mail-Ausgang (Nachweis-Aufforderungen, Einladungen)
|
||||
# Pflichtfelder: EMAIL_HOST_USER, EMAIL_HOST_PASSWORD
|
||||
EMAIL_HOST = os.getenv("EMAIL_HOST", "smtp.ionos.de")
|
||||
EMAIL_PORT = int(os.getenv("EMAIL_PORT") or "465")
|
||||
EMAIL_USE_SSL = os.getenv("EMAIL_USE_SSL", "true").lower() == "true"
|
||||
EMAIL_HOST_USER = os.getenv("EMAIL_HOST_USER", "")
|
||||
EMAIL_HOST_PASSWORD = os.getenv("EMAIL_HOST_PASSWORD", "")
|
||||
DEFAULT_FROM_EMAIL = os.getenv("DEFAULT_FROM_EMAIL", "stiftung@vhtv-stiftung.de")
|
||||
EMAIL_SUBJECT_PREFIX = "[vHTV-Stiftung] "
|
||||
|
||||
|
||||
# Authentication
|
||||
LOGIN_URL = "/login/"
|
||||
|
||||
@@ -8,6 +8,8 @@ from stiftung.views import home
|
||||
|
||||
urlpatterns = [
|
||||
path("api/v1/", include("stiftung.api_urls")),
|
||||
# Öffentliches Portal (kein Login erforderlich – tokenbasiert)
|
||||
path("portal/", include("stiftung.portal_urls")),
|
||||
path("", include("stiftung.urls")),
|
||||
path("admin/", admin.site.urls),
|
||||
# Authentication URLs
|
||||
|
||||
Reference in New Issue
Block a user