init
This commit is contained in:
202
app/core/utils/config.py
Normal file
202
app/core/utils/config.py
Normal file
@@ -0,0 +1,202 @@
|
||||
# coding:utf-8
|
||||
import sys
|
||||
from datetime import datetime
|
||||
|
||||
from PyQt6.QtGui import QPixmap
|
||||
from qfluentwidgets import (
|
||||
BoolValidator,
|
||||
ConfigItem,
|
||||
ConfigSerializer,
|
||||
OptionsConfigItem,
|
||||
OptionsValidator,
|
||||
qconfig,
|
||||
QConfig,
|
||||
FolderValidator,
|
||||
Theme,
|
||||
setThemeColor,
|
||||
)
|
||||
|
||||
from .encryption import encrypt
|
||||
from .setting import CONFIG_FILE, DOWNLOAD_FOLDER
|
||||
|
||||
|
||||
def isWin11():
|
||||
return sys.platform == "win32" and sys.getwindowsversion().build >= 22000
|
||||
|
||||
|
||||
class EncrpytionSerializer(ConfigSerializer):
|
||||
"""QColor serializer"""
|
||||
|
||||
def serialize(self, value):
|
||||
return encrypt.encrypt(value)
|
||||
|
||||
def deserialize(self, value):
|
||||
|
||||
return encrypt.decrypt(value)
|
||||
|
||||
|
||||
class Config(QConfig):
|
||||
"""Config of application"""
|
||||
|
||||
# TODO: ADD YOUR CONFIG GROUP HERE
|
||||
|
||||
# register
|
||||
rememberMe = ConfigItem(
|
||||
"UmVnaXN0ZXI=", "UmVtZW1iZXJNZQ==", True, serializer=EncrpytionSerializer()
|
||||
)
|
||||
email = ConfigItem(
|
||||
"UmVnaXN0ZXI=", "RW1haWw=", "", serializer=EncrpytionSerializer()
|
||||
)
|
||||
activationCode = ConfigItem(
|
||||
"UmVnaXN0ZXI=", "QWN0aXZhdGlvbkNvZGU=", "", serializer=EncrpytionSerializer()
|
||||
)
|
||||
|
||||
# main window
|
||||
micaEnabled = ConfigItem("MainWindow", "MicaEnabled", isWin11(), BoolValidator())
|
||||
dpiScale = OptionsConfigItem(
|
||||
"MainWindow",
|
||||
"DpiScale",
|
||||
"Auto",
|
||||
OptionsValidator([1, 1.25, 1.5, 1.75, 2, "Auto"]),
|
||||
restart=True,
|
||||
)
|
||||
|
||||
# software update
|
||||
checkUpdateAtStartUp = ConfigItem(
|
||||
"Update", "CheckUpdateAtStartUp", True, BoolValidator()
|
||||
)
|
||||
|
||||
# bg
|
||||
customBackground = ConfigItem(
|
||||
"Background",
|
||||
"CustomBackground",
|
||||
"app\\resource\\images\\bg0.png",
|
||||
)
|
||||
customOpactity = ConfigItem("Background", "Opactity", 0.2)
|
||||
|
||||
downloadSavePath = ConfigItem(
|
||||
"Download", "SavePath", DOWNLOAD_FOLDER, validator=FolderValidator()
|
||||
)
|
||||
|
||||
# language
|
||||
language = OptionsConfigItem(
|
||||
"General", "Language", "zh", OptionsValidator(["zh", "en"]), restart=False
|
||||
)
|
||||
|
||||
|
||||
class UserConfig:
|
||||
def __init__(self, userData):
|
||||
self.userData = userData
|
||||
self.token = None
|
||||
self.avaterPixmap = None
|
||||
|
||||
@property
|
||||
def userId(self):
|
||||
if self.userData:
|
||||
return self.userData["data"].get("id", "")
|
||||
else:
|
||||
return None
|
||||
|
||||
@property
|
||||
def userAvatarURL(self):
|
||||
if self.userData and "avatar" in self.userData["data"]:
|
||||
return self.userData["data"].get("avatar", "")
|
||||
else:
|
||||
return ""
|
||||
|
||||
@property
|
||||
def userName(self):
|
||||
if self.userData:
|
||||
return self.userData["data"].get("nickname", "")
|
||||
else:
|
||||
return ""
|
||||
|
||||
@property
|
||||
def userEmail(self):
|
||||
if self.userData:
|
||||
return self.userData["data"].get("user_name", "")
|
||||
else:
|
||||
return ""
|
||||
|
||||
@property
|
||||
def userGroup(self):
|
||||
if self.userData:
|
||||
return self.userData.get("data", {}).get("group", {}).get("name", "")
|
||||
else:
|
||||
return ""
|
||||
|
||||
@property
|
||||
def userScore(self):
|
||||
if self.userData:
|
||||
return str(self.userData["data"].get("score", 0))
|
||||
|
||||
@property
|
||||
def userCreatedTime(self):
|
||||
if self.userData:
|
||||
return self.format_date(self.userData["data"].get("created_at", ""))
|
||||
|
||||
def setUserAvatarPixmap(self, avaterPixmap):
|
||||
self.avaterPixmap: QPixmap = avaterPixmap
|
||||
|
||||
def returnAvatarPixmap(self):
|
||||
return self.avaterPixmap
|
||||
|
||||
def setToken(self, token):
|
||||
"""设置JWT token"""
|
||||
self.token = token
|
||||
|
||||
def getToken(self):
|
||||
"""获取JWT token"""
|
||||
return self.token
|
||||
|
||||
def format_date(self, date_str):
|
||||
"""格式化日期时间"""
|
||||
try:
|
||||
# 处理带小数秒的情况
|
||||
if "." in date_str:
|
||||
# 分割日期和小数秒部分
|
||||
date_part, fractional_part = date_str.split(".", 1)
|
||||
# 去除末尾的"Z"并截取前6位小数
|
||||
fractional_sec = fractional_part.rstrip("Z")[:6]
|
||||
# 重新组合日期字符串
|
||||
normalized_date_str = f"{date_part}.{fractional_sec}Z"
|
||||
date_time = datetime.strptime(
|
||||
normalized_date_str, "%Y-%m-%dT%H:%M:%S.%fZ"
|
||||
)
|
||||
else:
|
||||
# 处理没有小数秒的情况
|
||||
date_time = datetime.strptime(date_str, "%Y-%m-%dT%H:%M:%SZ")
|
||||
except ValueError:
|
||||
# 如果所有格式都失败,返回原始字符串
|
||||
return date_str
|
||||
|
||||
return date_time.strftime("%Y-%m-%d %H:%M:%S")
|
||||
|
||||
|
||||
class PolicyConfig:
|
||||
def __init__(self):
|
||||
self.currentPolicy = {}
|
||||
self.currentPath = "/"
|
||||
|
||||
def returnPolicy(self):
|
||||
return self.currentPolicy
|
||||
|
||||
def setPolicy(self, policy):
|
||||
self.currentPolicy = policy
|
||||
|
||||
def setCurrentPath(self, path):
|
||||
self.currentPath = path
|
||||
|
||||
def returnCurrentPath(self):
|
||||
return self.currentPath
|
||||
|
||||
|
||||
cfg = Config()
|
||||
cfg.themeMode.value = Theme.AUTO
|
||||
# 设置默认主题色为蓝色 (使用RGB值)
|
||||
setThemeColor('#2F80ED') # 这是一个标准的蓝色RGB值
|
||||
qconfig.load(str(CONFIG_FILE.absolute()), cfg)
|
||||
|
||||
userConfig = UserConfig(None)
|
||||
|
||||
policyConfig = PolicyConfig()
|
||||
Reference in New Issue
Block a user