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 # .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() 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="Schulwebsite Update", description="Neue Inhalte auf der Schulwebsite.", start=now + timedelta(days=2, hours=10), end=now + timedelta(days=2, hours=11), event_type=EventType.website, created_by=created_by, updated_by=None, is_active=True ), Event( client_uuid=client_uuid, title="Lehrvideo ansehen", description="Video zum Thema Photosynthese.", start=now + timedelta(days=3, hours=9), end=now + timedelta(days=3, hours=10), event_type=EventType.video, created_by=created_by, updated_by=None, is_active=True ), Event( client_uuid=client_uuid, title="Nachricht vom Lehrer", description="Wichtige Mitteilung zum Unterricht.", start=now + timedelta(days=4, hours=13), end=now + timedelta(days=4, hours=14), event_type=EventType.message, created_by=created_by, updated_by=None, is_active=True ), Event( client_uuid=client_uuid, title="Sonstiges Event", description="Allgemeines Event ohne Kategorie.", start=now + timedelta(days=5, hours=11), end=now + timedelta(days=5, hours=12), event_type=EventType.other, created_by=created_by, updated_by=None, is_active=True ), Event( client_uuid=client_uuid, title="WebUntis Termin", description="Termin aus WebUntis importiert.", start=now + timedelta(days=6, hours=8), end=now + timedelta(days=6, hours=9), event_type=EventType.webuntis, created_by=created_by, updated_by=None, is_active=True ), Event( client_uuid=client_uuid, title="Englisch Präsentation", description="Präsentation zu Shakespeare.", start=now + timedelta(days=8, hours=10), end=now + timedelta(days=8, hours=11), event_type=EventType.presentation, created_by=created_by, updated_by=None, is_active=True ), Event( client_uuid=client_uuid, title="Website Relaunch", description="Vorstellung der neuen Schulwebsite.", start=now + timedelta(days=10, hours=9), end=now + timedelta(days=10, hours=10), event_type=EventType.website, created_by=created_by, updated_by=None, is_active=True ), Event( client_uuid=client_uuid, title="Videoanalyse", description="Analyse eines Lehrvideos.", start=now + timedelta(days=12, hours=14), end=now + timedelta(days=12, hours=15), event_type=EventType.video, created_by=created_by, updated_by=None, is_active=True ), Event( client_uuid=client_uuid, title="WebUntis Info", description="Weitere Termine aus WebUntis.", start=now + timedelta(days=14, hours=8), end=now + timedelta(days=14, hours=9), event_type=EventType.webuntis, created_by=created_by, updated_by=None, is_active=True ), ] # Events anlegen und speichern for event in events: session.add(event) session.commit() # Jetzt haben alle Events eine ID # EventMedia mit den richtigen event_id-Werten anlegen 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/update", order=1 ), EventMedia( event_id=events[2].id, media_type=EventType.video, url="https://example.com/photosynthese-video.mp4", order=1 ), EventMedia( event_id=events[3].id, media_type=EventType.message, url="https://example.com/lehrer-nachricht", order=1 ), EventMedia( event_id=events[4].id, media_type=EventType.other, url="https://example.com/sonstiges-event.pdf", order=1 ), EventMedia( event_id=events[5].id, media_type=EventType.webuntis, url="https://webuntis.example.com/termin", order=1 ), EventMedia( event_id=events[6].id, media_type=EventType.presentation, url="https://example.com/praesentation-englisch.pdf", order=1 ), EventMedia( event_id=events[7].id, media_type=EventType.website, url="https://schule.example.com/relaunch", order=1 ), EventMedia( event_id=events[8].id, media_type=EventType.video, url="https://example.com/videoanalyse.mp4", order=1 ), EventMedia( event_id=events[9].id, media_type=EventType.webuntis, url="https://webuntis.example.com/info", order=1 ), ] for media in event_media: session.add(media) session.commit() print("Test-Events und EventMedia wurden angelegt.")