diff --git a/app/pccs.py b/app/pccs.py index ebbab0f..0010f40 100644 --- a/app/pccs.py +++ b/app/pccs.py @@ -5,32 +5,27 @@ pccs — 算力中心集群系统 (Pooled Computing Cluster System) import os, sys from ahserver.webapp import webapp -from ahserver.serverenv import ServerEnv - -from appbase.init import load_appbase -from rbac.init import load_rbac - -WORKDIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) - - -def get_module_dbname(m): - return 'pccs' - - -def password_encode(s): - if s is None: - return '' - from ahserver.globalEnv import password_encode as _orig - return _orig(s) def init(): - env = ServerEnv() - env.get_module_dbname = get_module_dbname - env.password_encode = password_encode - # monkey-patch ServerEnv class so ALL instances get these methods - ServerEnv.get_module_dbname = staticmethod(get_module_dbname) - ServerEnv.password_encode = staticmethod(password_encode) + # 注入全局默认 module_dbname — ServerEnv DictObject 每个实例不同, + # 必须通过 monkey-patching DictObject.__getattr__ 来让所有实例有默认值 + from ahserver.serverenv import ServerEnv + from appPublic.dictObject import DictObject + + _orig_getattr = DictObject.__getattr__ + + def _patched_getattr(self, key): + if key == 'get_module_dbname': + return lambda m: 'pccs' + if key == 'password_encode': + return lambda s: s + return _orig_getattr(self, key) + + DictObject.__getattr__ = _patched_getattr + + from appbase.init import load_appbase + from rbac.init import load_rbac load_appbase() load_rbac()