feat: add CRUD functionality for classes with API endpoints and UI integration
All checks were successful
Build & Push / Build & Push image (push) Successful in 41s
All checks were successful
Build & Push / Build & Push image (push) Successful in 41s
This commit is contained in:
@@ -460,6 +460,52 @@ def set_my_classes():
|
||||
|
||||
|
||||
|
||||
|
||||
# ── Klassen CRUD (directeur) ───────────────────────────────────────────────────
|
||||
|
||||
@api_bp.route('/classes', methods=['GET'])
|
||||
@login_required
|
||||
@director_required
|
||||
def list_classes():
|
||||
"""Alle klassen van de school."""
|
||||
classes = Class.query.filter_by(school_id=current_user.school_id) .order_by(Class.name).all()
|
||||
return jsonify({'classes': [
|
||||
{'id': c.id, 'name': c.name,
|
||||
'teachers': [{'id': t.id, 'full_name': t.full_name} for t in c.teachers]}
|
||||
for c in classes
|
||||
]})
|
||||
|
||||
|
||||
@api_bp.route('/classes', methods=['POST'])
|
||||
@login_required
|
||||
@director_required
|
||||
def create_class():
|
||||
"""Nieuwe klas aanmaken."""
|
||||
data = request.get_json() or {}
|
||||
name = data.get('name', '').strip()
|
||||
if not name:
|
||||
return jsonify({'error': 'Naam is verplicht'}), 400
|
||||
if Class.query.filter_by(school_id=current_user.school_id, name=name).first():
|
||||
return jsonify({'error': 'Een klas met deze naam bestaat al'}), 409
|
||||
klas = Class(name=name, school_id=current_user.school_id)
|
||||
db.session.add(klas)
|
||||
audit_log('class.create', 'class', detail={'name': name})
|
||||
db.session.commit()
|
||||
return jsonify({'class': {'id': klas.id, 'name': klas.name, 'teachers': []}}), 201
|
||||
|
||||
|
||||
@api_bp.route('/classes/<int:class_id>', methods=['DELETE'])
|
||||
@login_required
|
||||
@director_required
|
||||
def delete_class(class_id):
|
||||
"""Klas verwijderen (enkel eigen school)."""
|
||||
klas = Class.query.filter_by(id=class_id, school_id=current_user.school_id).first_or_404()
|
||||
name = klas.name
|
||||
db.session.delete(klas)
|
||||
audit_log('class.delete', 'class', target_id=str(class_id), detail={'name': name})
|
||||
db.session.commit()
|
||||
return jsonify({'deleted': class_id})
|
||||
|
||||
# ── Klas-leerkracht koppeling (directeur) ──────────────────────────────────────
|
||||
|
||||
@api_bp.route('/classes/<int:class_id>/teachers', methods=['PUT'])
|
||||
|
||||
Reference in New Issue
Block a user