- msync 全部实现迁入 gvsdsdk(models/registry/ogm/transaction/auth + Django 集成层 middleware/sio/views/serializers/urls/admin/apps/migrations) - 新增 gvsdsdk/secrets.py(secrets.ini 读取)与 serializer_base.py (PascalCase DRF 序列化器基类) - msync 0001 迁移改用 gvsdsdk.models.UUIDField 并与模型 deep_deconstruct 完全对齐(消除 makemigrations 漂移),dependencies 置空 - msync apps.py 移除 gvsds.app_config 软依赖,域名仅经环境变量/settings 解析 - 验证:屏蔽 gvsds 包后 50 个 gvsdsdk 子模块独立导入通过
67 lines
1.6 KiB
Python
67 lines
1.6 KiB
Python
"""GVSDS SDK 配置与密钥访问
|
|
|
|
环境变量优先,其次读取项目根目录 secrets.ini。
|
|
与 gvsds.secrets 同源(同一 secrets.ini),供 SDK 在无 gvsds 依赖时使用。
|
|
|
|
env 键规则:`{SECTION}_{KEY}` 全大写(如 MSYNC_MASTER_SECRET)。
|
|
"""
|
|
|
|
import os
|
|
import configparser
|
|
from pathlib import Path
|
|
|
|
_SECRETS_FILE = Path(__file__).resolve().parent.parent / "secrets.ini"
|
|
_config = None
|
|
|
|
|
|
def _load_config():
|
|
global _config
|
|
if _config is not None:
|
|
return _config
|
|
_config = configparser.ConfigParser()
|
|
if _SECRETS_FILE.exists():
|
|
_config.read(str(_SECRETS_FILE), encoding="utf-8")
|
|
return _config
|
|
|
|
|
|
def get(section, key, fallback=None):
|
|
cfg = _load_config()
|
|
env_key = f"{section.upper()}_{key.upper()}"
|
|
env_val = os.environ.get(env_key)
|
|
if env_val is not None:
|
|
return env_val
|
|
return cfg.get(section, key, fallback=fallback)
|
|
|
|
|
|
def getint(section, key, fallback=0):
|
|
val = get(section, key, fallback=None)
|
|
if val is None:
|
|
return fallback
|
|
try:
|
|
return int(val)
|
|
except (ValueError, TypeError):
|
|
return fallback
|
|
|
|
|
|
def getfloat(section, key, fallback=0.0):
|
|
val = get(section, key, fallback=None)
|
|
if val is None:
|
|
return fallback
|
|
try:
|
|
return float(val)
|
|
except (ValueError, TypeError):
|
|
return fallback
|
|
|
|
|
|
def getboolean(section, key, fallback=False):
|
|
val = get(section, key, fallback=None)
|
|
if val is None:
|
|
return fallback
|
|
return val.lower() in ("true", "1", "yes", "on")
|
|
|
|
|
|
def reload():
|
|
global _config
|
|
_config = None
|
|
_load_config()
|