Commit Graph

35 Commits

Author SHA1 Message Date
fcc0dfbb0f feat(conversions): end-to-end PPT/PPTX/ODP -> PDF pipeline with RQ worker + Gotenberg
DB/model

Add Conversion model + ConversionStatus enum (pending, processing, ready, failed)
Alembic migrations: create conversions table, indexes, unique (source_event_media_id, target_format, file_hash), and NOT NULL on file_hash
API

Enqueue on upload (ppt|pptx|odp) in routes/eventmedia.py: compute sha256, upsert Conversion, enqueue job
New routes:
POST /api/conversions/<media_id>/pdf — ensure/enqueue conversion
GET /api/conversions/<media_id>/status — latest status/details
GET /api/files/converted/<path> — serve converted PDFs
Register conversions blueprint in wsgi
Worker

server/worker.py: convert_event_media_to_pdf
Calls Gotenberg /forms/libreoffice/convert, writes to server/media/converted/
Updates Conversion status, timestamps, error messages
Fix media root resolution to /server/media
Prefer function enqueue over string path; expose server.worker in package init for RQ string compatibility
Queue/infra

server/task_queue.py: RQ queue helper (REDIS_URL, default redis://redis:6379/0)
docker-compose:
Add redis and gotenberg services
Add worker service (rq worker conversions)
Pass REDIS_URL and GOTENBERG_URL to server/worker
Mount shared media volume in prod for API/worker parity
docker-compose.override:
Add dev redis/gotenberg/worker services
Ensure PYTHONPATH + working_dir allow importing server.worker
Use rq CLI instead of python -m rq for worker
Dashboard dev: run as appropriate user/root and pre-create/chown caches to avoid EACCES
Dashboard dev UX

Vite: set cacheDir .vite to avoid EACCES in node_modules
Disable Node inspector by default to avoid port conflicts
Docs

Update copilot-instructions.md with conversion system: flow, services, env vars, endpoints, storage paths, and data model
2025-10-07 19:06:09 +00:00
eaf6e32446 feat(academic-periods): period selector, active period
API, holiday indicators; UI polish; bump version

Dashboard:

Add Syncfusion academic period dropdown next to group selector
Navigate scheduler to today's month/day within selected period year on change
Show adjacent holiday plan badge; keep "holidays in view" counter on the right
Compact dropdown widths for a tighter toolbar
Default blocking of scheduling on holidays; block entries styled like all-day; black text styling
API:

Add academic periods routes: list, get active, set active (POST), for_date
Register blueprint in wsgi
Holidays:

Support TXT/CSV upload; headerless TXT uses columns 2-4; region remains null
Docs:

Update shared Copilot instructions with academic periods endpoints and dashboard integration details
2025-09-21 14:35:38 +00:00
41194000a4 feat: Add academic periods system for educational institutions
- Add AcademicPeriod model with support for schuljahr/semester/trimester
- Extend Event and EventMedia models with optional academic_period_id
- Create Alembic migration (8d1df7199cb7) for academic periods system
- Add init script for Austrian school year defaults (2024/25-2026/27)
- Maintain full backward compatibility for existing events/media
- Update program-info.json to version 2025.1.0-alpha.6

Database changes:
- New academic_periods table with unique name constraint
- Foreign key relationships with proper indexing
- Support for multiple period types with single active period

This lays the foundation for period-based organization of events
and media content, specifically designed for school environments
with future extensibility for universities.
2025-09-20 11:16:56 +00:00
89d1748100 add nginx.dev.conf for development environment
add functionality of scheduler to send right event
data to the clients
added route for file download
2025-09-17 06:36:37 +00:00
e8d71b8349 Complete Redesign of Backend Handling for Client Group Assignments 2025-09-14 05:20:49 +00:00
4c44b98d53 make listener robust to bad data 2025-09-05 08:47:31 +00:00
76629b8e30 additions and corrections for
deployment instructions
2025-09-04 16:45:29 +00:00
e30723da0a Preparation for first deployment-test 2025-09-03 19:47:16 +00:00
4e74f72c9f multiple corrections on docker-compose and Dockerfile
robust start sequence
avoid scrolling of main content
2025-08-31 07:30:53 +00:00
270bad5980 introduce icons in events 2025-07-24 14:11:27 +00:00
8bbda836b3 prevent saving past events
add function to show inactive events
2025-07-24 09:35:57 +00:00
4e6451ce80 group color shown in CustomEventModal
add functionality for edit of events
2025-07-24 07:43:32 +00:00
7f4800496a implement functionality to delete clients in
clients and SetupMode components
2025-07-22 16:04:26 +00:00
2e9f22f5cc test communication scheduler<->simclient 2025-07-18 14:49:53 +00:00
4e525e4bae Automatic detect of clients 2025-07-17 06:31:50 +00:00
1a6faaa104 separation of production and development
environments
Adding new migrations for renaming and adding fields
to the database schema
persistent uuid for simclient
2025-07-16 08:50:42 +00:00
84a92ab9c2 functional system simclient<-> listener<->server 2025-07-15 15:37:16 +00:00
f37744b31e models.py moved to models/models.py
refactor all imports
2025-07-15 10:45:56 +00:00
6e6e5c383a Create and save custom events in database 2025-07-14 16:58:00 +00:00
16581a974f Basic version of eventmedia-management (upload,
save in database)
2025-07-10 09:32:35 +00:00
43306130f7 First version of media manager 2025-07-07 14:48:37 +00:00
2127c3a753 Refactor database schema and update event media
handling
2025-07-05 05:24:00 +00:00
7d773739d5 Implement Delete Event Feature 2025-07-01 18:49:25 +00:00
95b823ae3d Migration of events to use group_id instead of
group_name
2025-06-30 19:45:04 +00:00
7d7204e7c6 Toast-feedback feature for dashboard 2025-06-29 08:25:19 +00:00
6639006d65 Refactoring of routes
group functionalities working
2025-06-29 06:58:23 +00:00
f176c40a02 first kanban-view integration for client groups 2025-06-27 08:22:01 +00:00
9b78db8223 Link events to SchedulerComponent 2025-06-23 19:41:48 +00:00
2e8c852ee6 dynamic appointments loading 2025-06-14 15:08:43 +00:00
16bcef42aa Dummy Events for Event Management 2025-06-10 23:07:14 +02:00
ea20905466 event database migration 2025-06-10 23:07:14 +02:00
e3c9d1b19b Finetuning prove of concept for the dashboard 2025-06-10 22:55:13 +02:00
628a3b1fe9 introduce nginex-proxy
use host ip if working in wsl
2025-06-10 22:55:13 +02:00
138c5b1e8c minor changes to overview callbacks 2025-06-10 22:55:13 +02:00
6ab9ceed4b initial commit 2025-06-10 22:54:55 +02:00