Refactoring of routes
group functionalities working
This commit is contained in:
44
server/routes/clients.py
Normal file
44
server/routes/clients.py
Normal file
@@ -0,0 +1,44 @@
|
||||
import sys
|
||||
sys.path.append('/workspace')
|
||||
from flask import Blueprint, request, jsonify
|
||||
from models import Client, ClientGroup
|
||||
from database import Session
|
||||
|
||||
clients_bp = Blueprint("clients", __name__, url_prefix="/api/clients")
|
||||
|
||||
|
||||
@clients_bp.route("", methods=["GET"])
|
||||
def get_clients():
|
||||
session = Session()
|
||||
clients = session.query(Client).all()
|
||||
result = [
|
||||
{
|
||||
"uuid": c.uuid,
|
||||
"location": c.location,
|
||||
"hardware_hash": c.hardware_hash,
|
||||
"ip_address": c.ip_address,
|
||||
"last_alive": c.last_alive.isoformat() if c.last_alive else None,
|
||||
"group_id": c.group_id,
|
||||
}
|
||||
for c in clients
|
||||
]
|
||||
session.close()
|
||||
return jsonify(result)
|
||||
|
||||
|
||||
@clients_bp.route("/group", methods=["PUT"])
|
||||
def update_clients_group():
|
||||
data = request.get_json()
|
||||
client_ids = data.get("client_ids", [])
|
||||
group_name = data.get("group_name")
|
||||
session = Session()
|
||||
group = session.query(ClientGroup).filter_by(name=group_name).first()
|
||||
if not group:
|
||||
session.close()
|
||||
return jsonify({"error": "Gruppe nicht gefunden"}), 404
|
||||
session.query(Client).filter(Client.uuid.in_(client_ids)).update(
|
||||
{Client.group_id: group.id}, synchronize_session=False
|
||||
)
|
||||
session.commit()
|
||||
session.close()
|
||||
return jsonify({"success": True})
|
||||
33
server/routes/events.py
Normal file
33
server/routes/events.py
Normal file
@@ -0,0 +1,33 @@
|
||||
import sys
|
||||
sys.path.append('/workspace')
|
||||
from flask import Blueprint, request, jsonify
|
||||
from models import Event
|
||||
from sqlalchemy import and_
|
||||
from database import Session
|
||||
|
||||
events_bp = Blueprint("events", __name__, url_prefix="/api/events")
|
||||
|
||||
|
||||
@events_bp.route("", methods=["GET"])
|
||||
def get_events():
|
||||
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),
|
||||
"Subject": e.title,
|
||||
"StartTime": e.start.isoformat() if e.start else None,
|
||||
"EndTime": e.end.isoformat() if e.end else None,
|
||||
"IsAllDay": False,
|
||||
})
|
||||
session.close()
|
||||
return jsonify(result)
|
||||
128
server/routes/groups.py
Normal file
128
server/routes/groups.py
Normal file
@@ -0,0 +1,128 @@
|
||||
from database import Session
|
||||
from models import ClientGroup
|
||||
from flask import Blueprint, request, jsonify
|
||||
import sys
|
||||
sys.path.append('/workspace')
|
||||
|
||||
groups_bp = Blueprint("groups", __name__, url_prefix="/api/groups")
|
||||
|
||||
|
||||
@groups_bp.route("", methods=["POST"])
|
||||
def create_group():
|
||||
data = request.get_json()
|
||||
name = data.get("name")
|
||||
if not name or not name.strip():
|
||||
return jsonify({"error": "Gruppenname erforderlich"}), 400
|
||||
|
||||
session = Session()
|
||||
if session.query(ClientGroup).filter_by(name=name).first():
|
||||
session.close()
|
||||
return jsonify({"error": "Gruppe existiert bereits"}), 409
|
||||
|
||||
group = ClientGroup(name=name, is_active=True)
|
||||
session.add(group)
|
||||
session.commit()
|
||||
result = {
|
||||
"id": group.id,
|
||||
"name": group.name,
|
||||
"created_at": group.created_at.isoformat() if group.created_at else None,
|
||||
"is_active": group.is_active,
|
||||
}
|
||||
session.close()
|
||||
return jsonify(result), 201
|
||||
|
||||
|
||||
@groups_bp.route("", methods=["GET"])
|
||||
def get_groups():
|
||||
session = Session()
|
||||
groups = session.query(ClientGroup).all()
|
||||
result = [
|
||||
{
|
||||
"id": g.id,
|
||||
"name": g.name,
|
||||
"created_at": g.created_at.isoformat() if g.created_at else None,
|
||||
"is_active": g.is_active,
|
||||
}
|
||||
for g in groups
|
||||
]
|
||||
session.close()
|
||||
return jsonify(result)
|
||||
|
||||
|
||||
@groups_bp.route("/<int:group_id>", methods=["PUT"])
|
||||
def update_group(group_id):
|
||||
data = request.get_json()
|
||||
session = Session()
|
||||
group = session.query(ClientGroup).filter_by(id=group_id).first()
|
||||
if not group:
|
||||
session.close()
|
||||
return jsonify({"error": "Gruppe nicht gefunden"}), 404
|
||||
if "name" in data:
|
||||
group.name = data["name"]
|
||||
if "is_active" in data:
|
||||
group.is_active = bool(data["is_active"])
|
||||
session.commit()
|
||||
result = {
|
||||
"id": group.id,
|
||||
"name": group.name,
|
||||
"created_at": group.created_at.isoformat() if group.created_at else None,
|
||||
"is_active": group.is_active,
|
||||
}
|
||||
session.close()
|
||||
return jsonify(result)
|
||||
|
||||
|
||||
@groups_bp.route("/<int:group_id>", methods=["DELETE"])
|
||||
def delete_group(group_id):
|
||||
session = Session()
|
||||
group = session.query(ClientGroup).filter_by(id=group_id).first()
|
||||
if not group:
|
||||
session.close()
|
||||
return jsonify({"error": "Gruppe nicht gefunden"}), 404
|
||||
session.delete(group)
|
||||
session.commit()
|
||||
session.close()
|
||||
return jsonify({"success": True})
|
||||
|
||||
|
||||
@groups_bp.route("/byname/<string:group_name>", methods=["DELETE"])
|
||||
def delete_group_by_name(group_name):
|
||||
session = Session()
|
||||
group = session.query(ClientGroup).filter_by(name=group_name).first()
|
||||
if not group:
|
||||
session.close()
|
||||
return jsonify({"error": "Gruppe nicht gefunden"}), 404
|
||||
session.delete(group)
|
||||
session.commit()
|
||||
session.close()
|
||||
return jsonify({"success": True})
|
||||
|
||||
|
||||
@groups_bp.route("/byname/<string:old_name>", methods=["PUT"])
|
||||
def rename_group_by_name(old_name):
|
||||
data = request.get_json()
|
||||
new_name = data.get("newName")
|
||||
if not new_name or not new_name.strip():
|
||||
return jsonify({"error": "Neuer Name erforderlich"}), 400
|
||||
|
||||
session = Session()
|
||||
group = session.query(ClientGroup).filter_by(name=old_name).first()
|
||||
if not group:
|
||||
session.close()
|
||||
return jsonify({"error": "Gruppe nicht gefunden"}), 404
|
||||
|
||||
# Prüfe, ob der neue Name schon existiert
|
||||
if session.query(ClientGroup).filter_by(name=new_name).first():
|
||||
session.close()
|
||||
return jsonify({"error": "Gruppe mit diesem Namen existiert bereits"}), 409
|
||||
|
||||
group.name = new_name
|
||||
session.commit()
|
||||
result = {
|
||||
"id": group.id,
|
||||
"name": group.name,
|
||||
"created_at": group.created_at.isoformat() if group.created_at else None,
|
||||
"is_active": group.is_active,
|
||||
}
|
||||
session.close()
|
||||
return jsonify(result)
|
||||
Reference in New Issue
Block a user