Add display deletion endpoint and admin UI tweaks
This commit is contained in:
@@ -498,3 +498,32 @@ def update_display_name(display_id: int):
|
||||
db.session.commit()
|
||||
flash("Display name updated", "success")
|
||||
return redirect(url_for("admin.company_detail", company_id=display.company_id))
|
||||
|
||||
|
||||
@bp.post("/displays/<int:display_id>/delete")
|
||||
@login_required
|
||||
def delete_display(display_id: int):
|
||||
"""Admin: delete a display."""
|
||||
|
||||
admin_required()
|
||||
|
||||
display = db.session.get(Display, display_id)
|
||||
if not display:
|
||||
abort(404)
|
||||
|
||||
company_id = display.company_id
|
||||
display_name = display.name
|
||||
|
||||
# If FK constraints are enabled, delete in a safe order.
|
||||
# 1) Unassign playlist
|
||||
display.assigned_playlist_id = None
|
||||
|
||||
# 2) Delete active sessions for this display
|
||||
DisplaySession.query.filter_by(display_id=display.id).delete(synchronize_session=False)
|
||||
|
||||
# 3) Delete display
|
||||
db.session.delete(display)
|
||||
db.session.commit()
|
||||
|
||||
flash(f"Display '{display_name}' deleted.", "success")
|
||||
return redirect(url_for("admin.company_detail", company_id=company_id))
|
||||
|
||||
Reference in New Issue
Block a user