-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathadmin_config.py
More file actions
120 lines (99 loc) · 3.86 KB
/
Copy pathadmin_config.py
File metadata and controls
120 lines (99 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
"""
管理员配置管理模块
支持配置的持久化存储和加载
"""
import json
import logging
from pathlib import Path
from typing import Any, Dict, Optional
log = logging.getLogger(__name__)
class AdminConfig:
"""管理员配置管理类"""
def __init__(self, config_file: str = "admin_config.json"):
self.config_file = Path(config_file).resolve()
self.config: Dict[str, Any] = {}
self._load_config()
def _load_config(self):
"""从文件加载配置"""
if self.config_file.exists():
try:
with open(self.config_file, 'r', encoding='utf-8') as f:
self.config = json.load(f)
log.info(f"✅ 已加载管理员配置: {self.config_file}")
except Exception as e:
log.error(f"加载配置文件失败: {e}")
self.config = {}
else:
log.info(f"配置文件不存在,将创建新配置: {self.config_file}")
self.config = {}
def _save_config(self):
"""保存配置到文件"""
try:
# 确保目录存在
self.config_file.parent.mkdir(parents=True, exist_ok=True)
with open(self.config_file, 'w', encoding='utf-8') as f:
json.dump(self.config, f, ensure_ascii=False, indent=2)
log.debug(f"💾 配置已保存: {self.config_file}")
except Exception as e:
log.error(f"保存配置文件失败: {e}")
def get(self, key: str, default: Any = None) -> Any:
"""获取配置值"""
return self.config.get(key, default)
def set(self, key: str, value: Any, auto_save: bool = True):
"""设置配置值"""
self.config[key] = value
if auto_save:
self._save_config()
def delete(self, key: str, auto_save: bool = True):
"""删除配置项"""
if key in self.config:
del self.config[key]
if auto_save:
self._save_config()
def get_all(self) -> Dict[str, Any]:
"""获取所有配置"""
return self.config.copy()
def update_batch(self, updates: Dict[str, Any], auto_save: bool = True):
"""批量更新配置"""
self.config.update(updates)
if auto_save:
self._save_config()
# 便捷方法 - 照片目录
@property
def photos_dir(self) -> Optional[str]:
"""获取照片目录"""
return self.config.get('photos_dir')
@photos_dir.setter
def photos_dir(self, path: str):
"""设置照片目录"""
self.set('photos_dir', path)
# 便捷方法 - WiFi信息
@property
def wifi_info(self) -> Dict[str, str]:
"""获取WiFi信息"""
return self.config.get('wifi_info', {})
@wifi_info.setter
def wifi_info(self, info: Dict[str, str]):
"""设置WiFi信息"""
self.set('wifi_info', info)
# 便捷方法 - 好评照片目录
@property
def favorite_photos_dir(self) -> Optional[str]:
"""获取好评照片目录"""
return self.config.get('favorite_photos_dir')
@favorite_photos_dir.setter
def favorite_photos_dir(self, path: str):
"""设置好评照片目录"""
self.set('favorite_photos_dir', path)
# 便捷方法 - 其他自定义配置
def get_custom_setting(self, key: str, default: Any = None) -> Any:
"""获取自定义设置"""
custom = self.config.get('custom_settings', {})
return custom.get(key, default)
def set_custom_setting(self, key: str, value: Any, auto_save: bool = True):
"""设置自定义设置"""
if 'custom_settings' not in self.config:
self.config['custom_settings'] = {}
self.config['custom_settings'][key] = value
if auto_save:
self._save_config()