dynamic appointments loading
This commit is contained in:
@@ -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)
|
||||
Reference in New Issue
Block a user