from    Log_View            import Log_View, Log_Handler
import schema
import logging
class App_State :
    user_id = None
    imos_done_dir   = "IMOS-Done"
    imos_order_dir  = "ImOrder"
    sim_batches     = "Batches"
    pgiq_dir        = "OrderXML"
    L               = logging.getLogger ()
    Action_Kind = \
        {     1 : "Create Order"
        ,     2 : "Update Order" 
        ,    10 : "Change owner"    
        ,    15 : "Force order state"    
        ,    20 : "IMOS CAD started"
        ,    25 : "IMOS CAD closed"
        ,    30 : "CNC generation started"
        ,    35 : "CNC generation finished"
        ,    40 : "Odoo Freigabe"
        ,   100 : "Article created"
        ,   110 : "Order Line created"
        ,   111 : "Order Line updated"
        }
    @classmethod
    def Create_Action (cls, kind, text, order = None) :
        if kind not in cls. Action_Kind : 
            raise ValueError (f"Unknow action kind {kind}")
        schema.Action \
            ( user        = cls.user_id
            , date        = schema.datetime.now ()
            , action_kind = kind
            , action      = text
            , order       = order
            )
    # end def create_action
    
    @classmethod
    def Log_View (cls, level = logging.INFO, parent = None) :
        cls.L.info ("Log window created")
        cls._log_view = Log_View (parent)
        lh = Log_Handler (cls._log_view)
        #lh.setFormatter \
        #    ( logging.Formatter 
        #         ('%(asctime)s '
        #          '%(levelname)s - %(message)s'
        #         , datefmt = "%Y-%m-%d %H:%M:%S"
        #         )
        #    )
        lh.setLevel      (level)
        lh.setFormatter \
            ( logging.Formatter 
                ( "%(asctime)s - %(message)s"
                , datefmt   = "%Y-%m-%d %H:%M:%S"
                )
            )
        cls.L.addHandler (lh)
        return cls._log_view
    # end def Log_View
    
# end class App_State