dynamic appointments loading

This commit is contained in:
2025-06-14 15:08:43 +00:00
parent 4738740292
commit 2e8c852ee6
10 changed files with 187 additions and 52 deletions

View File

@@ -1,10 +1,10 @@
# server/wsgi.py
import glob
import os
from flask import Flask, jsonify, send_from_directory
from flask import Flask, jsonify, send_from_directory, request
from sqlalchemy.orm import sessionmaker
from sqlalchemy import create_engine
from models import Client, Base
from sqlalchemy import create_engine, and_
from models import Client, Base, Event
DB_USER = os.getenv("DB_USER")
DB_PASSWORD = os.getenv("DB_PASSWORD")
@@ -63,5 +63,41 @@ def get_clients():
session.close()
return jsonify(result)
@app.route("/api/events")
def get_events():
"""
Liefert Events für einen Zeitraum (start, end) als FullCalendar-kompatible Objekte.
Query-Parameter: start, end (ISO-Format), optional: client_uuid
"""
session = Session()
start = request.args.get("start")
end = request.args.get("end")
client_uuid = request.args.get("client_uuid")
query = session.query(Event).filter(Event.is_active == True)
if start and end:
query = query.filter(and_(Event.start < end, Event.end > start))
if client_uuid:
query = query.filter(Event.client_uuid == client_uuid)
events = query.all()
result = []
for e in events:
result.append({
"id": str(e.id),
"title": e.title,
"start": e.start.isoformat() if e.start else None,
"end": e.end.isoformat() if e.end else None,
"allDay": False,
"classNames": [e.event_type.value] if e.event_type else [],
"extendedProps": {
"description": e.description,
"client_uuid": e.client_uuid,
"event_type": e.event_type.value if e.event_type else None,
"created_by": e.created_by,
"updated_by": e.updated_by,
}
})
session.close()
return jsonify(result)
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000, debug=True)