odoo/packs/odoo.v18/devs/kit_spy/odo/root/http_up.py

61 lines
1.3 KiB
Python
Raw Permalink Normal View History

# -*- coding: utf-8 -*-
"""
hook the class Session, track the 'debug' state that identify the spy mode
"""
import sys
from datetime import datetime
from odoo.http import Session
from ...land.trace import Tracer
def _log_spy(spy):
Tracer.debug("🪝🧐 _log_spy,spy:{}",spy)
def _set_debug_mode(val):
spy = sys.modules['spy']
if spy is None:
return False
if val is None or '' == val:
# if not spy.get('debug') is None:
# del spy.debug
spy.debug = None
_log_spy(spy)
return True
spy.debug = {
'value': val,
'ts': datetime.timestamp(datetime.now())
}
_log_spy(spy)
return True
#@ref from odoo/http.py
#class SessionUp(collections.abc.MutableMapping):
def __setattr__(self, key, val):
#print('🪝🧐 __setattr__' + str(key) + "=>" + str(val))
if key in self.__slots__:
#super().__setattr__(key, val)
super(Session, self).__setattr__(key,val)
else:
self[key] = val
if 'debug' == key:
_set_debug_mode(val)
def clear(self):
if not self.__data is None:
self.__data.clear()
self.is_dirty = True
_set_debug_mode(None)