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.")