Implementierung des Veranstaltungsmoduls inkl. Serienbrief-PDF-Generator mit dynamischen, editierbaren Feldern für Betreff und Unterschriften. ### Veranstaltungsmodul (STI-35) - Neues Veranstaltungs-Modell: Titel, Datum, Uhrzeit, Ort, Gasthaus-Adresse, Briefvorlage, Gästeliste (VerstaltungsGast mit freien/Destinatär-Feldern) - Views: Veranstaltungsliste, -detail, Serienbrief-PDF-Generator - Templates: list.html, detail.html, serienbrief_pdf.html (A4, einseitig) - API: Serializer + Endpunkte für Veranstaltungen - Admin: Inline-Bearbeitung der Gästeliste - Migration: 0044_veranstaltungsmodul ### Serienbrief editierbare Felder + PDF-Fix (STI-39) - Neue Felder an Veranstaltung: betreff, unterschrift_1_name/titel, unterschrift_2_name/titel (mit Defaults: Katrin Kleinpaß / Jan Remmer Siebels) - PDF-CSS: Margins, Font-Sizes und Line-Heights reduziert für einseitigen Druck - Migration: 0045_add_serienbrief_editable_fields ### Infrastruktur - scripts/init-paperless-db.sh: Erstellt separate Paperless-DB beim DB-Init - compose.yml: init-paperless-db.sh eingebunden, PAPERLESS_DBNAME-Fix - .gitignore: .claude/ ausgeschlossen Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
115 lines
3.5 KiB
YAML
115 lines
3.5 KiB
YAML
services:
|
|
db:
|
|
image: postgres:16-alpine
|
|
environment:
|
|
POSTGRES_DB: stiftung_dev
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: postgres_dev
|
|
volumes:
|
|
- dbdata_dev:/var/lib/postgresql/data
|
|
- ./scripts/init-paperless-db.sh:/docker-entrypoint-initdb.d/init-paperless-db.sh
|
|
ports:
|
|
- "5433:5432"
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U postgres -d stiftung_dev"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
redis:
|
|
image: redis:7-alpine
|
|
ports:
|
|
- "6380:6379"
|
|
|
|
web:
|
|
build: ./app
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_started
|
|
environment:
|
|
- POSTGRES_DB=stiftung_dev
|
|
- POSTGRES_USER=postgres
|
|
- POSTGRES_PASSWORD=postgres_dev
|
|
- DB_HOST=db
|
|
- DB_PORT=5432
|
|
- DJANGO_SECRET_KEY=dev-secret-key-not-for-production
|
|
- DJANGO_DEBUG=1
|
|
- DJANGO_ALLOWED_HOSTS=localhost,127.0.0.1,100.81.230.53
|
|
- LANGUAGE_CODE=de
|
|
- TIME_ZONE=Europe/Berlin
|
|
- REDIS_URL=redis://redis:6379/0
|
|
- PAPERLESS_API_URL=http://paperless:8000
|
|
- PAPERLESS_API_TOKEN=1972509e25810d9ae7497c1c79ecfea9e942f18d
|
|
- PAPERLESS_REQUIRED_TAG=Stiftung_Destinatäre
|
|
- PAPERLESS_LAND_TAG=Stiftung_Land_und_Pächter
|
|
- PAPERLESS_ADMIN_TAG=Stiftung_Administration
|
|
- PAPERLESS_DESTINATAERE_TAG_ID=1
|
|
- PAPERLESS_LAND_TAG_ID=3
|
|
- PAPERLESS_ADMIN_TAG_ID=2
|
|
- GRAMPS_URL=http://grampsweb:5000
|
|
- GRAMPS_USERNAME=admin@localhost
|
|
- GRAMPS_PASSWORD=gramps_dev_password
|
|
ports:
|
|
- "18081:8000"
|
|
volumes:
|
|
- ./app:/app
|
|
command: ["python", "manage.py", "runserver", "0.0.0.0:8000"]
|
|
|
|
paperless:
|
|
image: ghcr.io/paperless-ngx/paperless-ngx:latest
|
|
ports:
|
|
- "8082:8000"
|
|
environment:
|
|
- PAPERLESS_REDIS=redis://redis:6379
|
|
- PAPERLESS_DBHOST=db
|
|
- PAPERLESS_DBPORT=5432
|
|
- PAPERLESS_DBNAME=paperless_dev
|
|
- PAPERLESS_DBUSER=postgres
|
|
- PAPERLESS_DBPASS=postgres_dev
|
|
- PAPERLESS_SECRET_KEY=dev-paperless-secret-key
|
|
- PAPERLESS_URL=http://localhost:8082
|
|
- PAPERLESS_ALLOWED_HOSTS=localhost,127.0.0.1,paperless
|
|
- PAPERLESS_CORS_ALLOWED_HOSTS=http://localhost:8082,http://localhost:8081
|
|
- PAPERLESS_ADMIN_USER=admin
|
|
- PAPERLESS_ADMIN_PASSWORD=admin123
|
|
- PAPERLESS_ADMIN_MAIL=admin@localhost
|
|
volumes:
|
|
- paperless_data_dev:/usr/src/paperless/data
|
|
- paperless_media_dev:/usr/src/paperless/media
|
|
- paperless_export_dev:/usr/src/paperless/export
|
|
- paperless_consume_dev:/usr/src/paperless/consume
|
|
depends_on:
|
|
- db
|
|
- redis
|
|
|
|
grampsweb:
|
|
image: ghcr.io/gramps-project/grampsweb:latest
|
|
ports:
|
|
- "18090:5000"
|
|
environment:
|
|
- GRAMPSWEB_SECRET_KEY=dev-grampsweb-secret-key-not-for-production
|
|
- GRAMPSWEB_ADMIN_EMAIL=admin@localhost
|
|
- GRAMPSWEB_ADMIN_PASSWORD=gramps_dev_password
|
|
- GRAMPSWEB_TREE=Stiftung
|
|
- GRAMPSWEB_BASE_URL=/ahnenforschung
|
|
- GRAMPSWEB_STATIC_PATH=/ahnenforschung/static
|
|
- GRAMPSWEB_STATIC_URL=/ahnenforschung/static/
|
|
- GRAMPSWEB_CELERY_CONFIG__broker_url=redis://redis:6379/0
|
|
- GRAMPSWEB_CELERY_CONFIG__result_backend=redis://redis:6379/0
|
|
- GRAMPSWEB_RATELIMIT_STORAGE_URI=redis://redis:6379/1
|
|
- GRAMPSWEB_NEW_DB_BACKEND=sqlite
|
|
volumes:
|
|
- gramps_data_dev:/app/data
|
|
depends_on:
|
|
- redis
|
|
|
|
volumes:
|
|
dbdata_dev:
|
|
paperless_data_dev:
|
|
paperless_media_dev:
|
|
paperless_export_dev:
|
|
paperless_consume_dev:
|
|
gramps_data_dev:
|