fix: monkey-patch DictObject.__getattr__ for get_module_dbname on all instances
This commit is contained in:
parent
9a0fe11ed2
commit
358fca700c
41
app/pccs.py
41
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()
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user