From 327cb5a79072b2966d92fbd0db8dfa81a73f19ea Mon Sep 17 00:00:00 2001 From: Maciej Pienczyn Date: Wed, 18 Mar 2026 17:22:18 +0100 Subject: [PATCH] feat(calendar): add attachment support to events Adds file attachment capability to NordaEvent model (attachment_filename, attachment_path columns). Admin can upload PDF/DOCX when creating events. Users see a download link on the event detail page. Co-Authored-By: Claude Opus 4.6 (1M context) --- blueprints/admin/routes.py | 13 +++++++++++++ database.py | 4 ++++ database/migrations/085_event_attachments.sql | 6 ++++++ templates/calendar/admin_new.html | 8 +++++++- templates/calendar/event.html | 15 +++++++++++++++ 5 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 database/migrations/085_event_attachments.sql diff --git a/blueprints/admin/routes.py b/blueprints/admin/routes.py index 3118256..f215fc9 100644 --- a/blueprints/admin/routes.py +++ b/blueprints/admin/routes.py @@ -957,6 +957,19 @@ def admin_calendar_new(): source='manual' ) + # Handle file attachment + attachment = request.files.get('attachment') + if attachment and attachment.filename: + from werkzeug.utils import secure_filename + import uuid + filename = secure_filename(attachment.filename) + stored_name = f"{uuid.uuid4().hex}_{filename}" + upload_dir = os.path.join('static', 'uploads', 'events') + os.makedirs(upload_dir, exist_ok=True) + attachment.save(os.path.join(upload_dir, stored_name)) + event.attachment_filename = filename + event.attachment_path = f"static/uploads/events/{stored_name}" + db.add(event) db.commit() diff --git a/database.py b/database.py index 6da51f8..255af00 100644 --- a/database.py +++ b/database.py @@ -2170,6 +2170,10 @@ class NordaEvent(Base): # Media image_url = Column(String(1000)) # Banner/header image URL + # Attachment + attachment_filename = Column(String(255)) # Original filename + attachment_path = Column(String(1000)) # Server path (static/uploads/events/...) + # Relationships speaker_company = relationship('Company') creator = relationship('User', foreign_keys=[created_by]) diff --git a/database/migrations/085_event_attachments.sql b/database/migrations/085_event_attachments.sql new file mode 100644 index 0000000..8eaf7bc --- /dev/null +++ b/database/migrations/085_event_attachments.sql @@ -0,0 +1,6 @@ +-- Migration: 085_event_attachments.sql +-- Description: Add attachment support to norda_events (filename + server path) +-- Date: 2026-03-18 + +ALTER TABLE norda_events ADD COLUMN IF NOT EXISTS attachment_filename VARCHAR(255); +ALTER TABLE norda_events ADD COLUMN IF NOT EXISTS attachment_path VARCHAR(1000); diff --git a/templates/calendar/admin_new.html b/templates/calendar/admin_new.html index 7921dcb..9791f35 100755 --- a/templates/calendar/admin_new.html +++ b/templates/calendar/admin_new.html @@ -103,7 +103,7 @@
-
+
@@ -183,6 +183,12 @@
+
+ + +
Opcjonalny plik do pobrania przez uczestników (np. zaproszenie, agenda)
+
+
Anuluj diff --git a/templates/calendar/event.html b/templates/calendar/event.html index 3411f04..30830da 100755 --- a/templates/calendar/event.html +++ b/templates/calendar/event.html @@ -508,6 +508,21 @@
{% endif %} + {% if event.attachment_filename %} +
+ + + + + + +
+
Załącznik
+ {{ event.attachment_filename }} +
+
+ {% endif %} + {% if not event.is_past %} {% if event.can_user_attend(current_user) %}