main.py

Il s'agit du programme principal.

Initialisation de la base de données, gestion des pages Web et mise à jour régulière de la liste des tickets P1.

main.py
# main.py
import time
from arduino.app_utils import *
from arduino.app_bricks.web_ui import WebUI
import PersistentData
import CockpitITSM
import Tools
import WebIndex
import WebConfig
import WebCockpitITSM
import WebOrganizations
import WebTeams
import WebStatus
import WebPriority
import WebCriticity
import WebTickets
 
# Initialize the Database
PersistentData.init_db()
 
# Perform the readiness check
api_ready = Tools.check_api_readiness()
 
# Initialize the Web Interface
ui = WebUI()
# Logic for web pages
WebIndex.init_dashboard_interface(ui)
WebConfig.init_index_interface(ui)
WebCockpitITSM.init_web_interface(ui)
WebOrganizations.init_organizations_interface(ui)
WebTeams.init_teams_interface(ui)
WebStatus.init_status_interface(ui)
WebPriority.init_priority_interface(ui)
WebCriticity.init_criticity_interface(ui)
WebTickets.init_tickets_interface(ui)
 
# Register Bridge handlers
Bridge.provide("get_datetime",       Tools.get_datetime)
Bridge.provide("get_open_tickets",   CockpitITSM.get_open_tickets)
Bridge.provide("store_sensor_data",  Tools.store_sensor_data)
Bridge.provide("get_arduino_config", Tools.get_arduino_config)
 
# Update tickets every 4 minutes
TICKET_UPDATE_INTERVAL = 240  # seconds
_last_ticket_update = 0
 
def loop():
    global _last_ticket_update
    # Check API readiness before attempting any ticket update
    if not Tools.check_api_readiness():
        time.sleep(10)
        return
    now = time.time()
    if now - _last_ticket_update >= TICKET_UPDATE_INTERVAL:
        CockpitITSM.update_open_tickets(on_complete=lambda count: WebIndex.on_tickets_updated(ui, count))
        _last_ticket_update = time.time()
    time.sleep(10)
 
# Start the application
App.run(user_loop=loop)