# WebCriticity.py import PersistentData import CockpitITSM def init_criticity_interface(ui): """ Registers the bridge between Criticity.html and Python logic. Allows assigning a criticity level to each selected ticket priority. Criticity values: 1 = VERY_HIGH 2 = HIGH 3 = MEDIUM 4 = LOW 5 = INFORMATION """ def handle_get_ticket_criticity(_, __): """Syncs with API then returns ticket priorities with their criticity from DB.""" success = CockpitITSM.update_ticket_priorities() if not success: ui.send_message("criticity_response", { "success": False, "message": "Failed to refresh ticket priorities. Check API configuration." }) return priorities = PersistentData.get_ticket_priorities_with_criticity() ui.send_message("criticity_data", {"priorities": priorities}) def handle_save_ticket_criticity(_, data): """Persists the criticity level for each ticket priority.""" try: priorities = data.get("priorities", []) for p in priorities: criticity = int(p.get("criticity", 0)) # Clamp to valid range 0–5 criticity = max(0, min(5, criticity)) PersistentData.db.update( "objects", {"criticity": criticity}, condition=f"id = {p['id']} AND subType = '{p['subType']}'" ) print(f"DEBUG: Saved criticity for {len(priorities)} ticket priorities.") ui.send_message("criticity_response", { "success": True, "message": f"Criticity saved ({len(priorities)} priorities)." }) except Exception as e: print(f"ERROR saving ticket criticity: {str(e)}") ui.send_message("criticity_response", { "success": False, "message": f"Save error: {str(e)}" }) # Registering the handlers ui.on_message("get_ticket_criticity", handle_get_ticket_criticity) ui.on_message("save_ticket_criticity", handle_save_ticket_criticity)