diff --git a/docker-compose.yml b/docker-compose.yml index ada2fca..100a9c6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -4,7 +4,7 @@ networks: services: proxy: - image: nginx:1.25 + image: nginx:1.27 container_name: infoscreen-proxy ports: - "80:80" diff --git a/server/dummy_events.py b/server/dummy_events.py new file mode 100644 index 0000000..f23008c --- /dev/null +++ b/server/dummy_events.py @@ -0,0 +1,137 @@ +from sqlalchemy import create_engine +from sqlalchemy.orm import sessionmaker +from models import Event, EventMedia, EventType +from dotenv import load_dotenv +import os +from datetime import datetime, timedelta, timezone + +# .env laden +load_dotenv() + +DB_USER = os.getenv("DB_USER") +DB_PASSWORD = os.getenv("DB_PASSWORD") +DB_HOST = os.getenv("DB_HOST") +DB_NAME = os.getenv("DB_NAME") + +db_conn_str = f"mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}/{DB_NAME}" +engine = create_engine(db_conn_str) +Session = sessionmaker(bind=engine) +session = Session() + +# Beispiel-Events (client_uuid und created_by müssen existieren!) +client_uuid = "36671351-7a90-44af-bfef-a192c541373b" +created_by = 1 # ID eines existierenden Users + +# --- Alte Testdaten löschen --- +# Zuerst alle EventMedia zu den Events dieses Clients löschen +event_ids = [e.id for e in session.query(Event.id).filter_by(client_uuid=client_uuid).all()] +if event_ids: + session.query(EventMedia).filter(EventMedia.event_id.in_(event_ids)).delete(synchronize_session=False) +# Dann alle Events dieses Clients löschen +session.query(Event).filter_by(client_uuid=client_uuid).delete() +session.commit() +# --- Ende Löschungen --- + +now = datetime.now(timezone.utc) + +events = [ + Event( + client_uuid=client_uuid, + title="Mathe Präsentation", + description="Präsentation zum Thema Algebra.", + start=now + timedelta(days=1, hours=8), + end=now + timedelta(days=1, hours=9), + event_type=EventType.presentation, + created_by=created_by, + updated_by=None, + is_active=True + ), + Event( + client_uuid=client_uuid, + title="Webseite: Schulhomepage", + description="Zeigt die Schulhomepage an.", + start=now + timedelta(days=1, hours=10), + end=now + timedelta(days=1, hours=11), + event_type=EventType.website, + created_by=created_by, + updated_by=None, + is_active=True + ), + Event( + client_uuid=client_uuid, + title="Video: Sicherheitsunterweisung", + description="Video zur Sicherheit im Chemieunterricht.", + start=now + timedelta(days=2, hours=8), + end=now + timedelta(days=2, hours=8, minutes=30), + event_type=EventType.video, + created_by=created_by, + updated_by=None, + is_active=True + ), + Event( + client_uuid=client_uuid, + title="Nachricht: Vertretungsplan", + description="Aktuelle Vertretungen werden angezeigt.", + start=now + timedelta(days=2, hours=9), + end=now + timedelta(days=2, hours=9, minutes=15), + event_type=EventType.message, + created_by=created_by, + updated_by=None, + is_active=True + ), + Event( + client_uuid=client_uuid, + title="WebUntis Stundenplan", + description="Automatisch importierter Stundenplan.", + start=now + timedelta(days=3, hours=7), + end=now + timedelta(days=3, hours=8), + event_type=EventType.webuntis, + created_by=created_by, + updated_by=None, + is_active=True + ), +] + +session.add_all(events) +session.commit() + +# EventMedia zuordnen (IDs müssen jetzt existieren) +event_media = [ + EventMedia( + event_id=events[0].id, + media_type=EventType.presentation, + url="https://example.com/praesentation-mathe.pdf", + order=1 + ), + EventMedia( + event_id=events[1].id, + media_type=EventType.website, + url="https://schule.example.com", + order=1 + ), + EventMedia( + event_id=events[2].id, + media_type=EventType.video, + url="https://videos.example.com/sicherheit.mp4", + order=1, + autoplay=True, + loop=False, + volume=0.8 + ), + EventMedia( + event_id=events[3].id, + media_type=EventType.message, + url="https://schule.example.com/vertretungsplan", + order=1 + ), + EventMedia( + event_id=events[4].id, + media_type=EventType.webuntis, + url="https://webuntis.example.com/stundenplan", + order=1 + ), +] + +session.add_all(event_media) +session.commit() +print("Test-Events und EventMedia wurden angelegt.") \ No newline at end of file