fix: monkey-patch DictObject.__getattr__ for get_module_dbname on all instances

This commit is contained in:
yumoqing 2026-08-11 16:30:09 +08:00
parent 9a0fe11ed2
commit 358fca700c

View File

@ -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()