feat: 完成Tab④账号管理
- 新增 accounts 服务层,封装账号 CRUD、目录创建、端口分配与登录检测 - 接入 PySide6 账号管理 Tab:表格、账号弹窗、启动登录、后台检测登录 - 密码仅本地保存并在 UI 打码,表格不展示明文;不自动登录或填密码 - 增加顶部 Tab 栏防误点样式,扩大点击区域并高亮当前 Tab - 补充账号服务和 GUI 单元测试,并同步架构、API、路由、任务和进度文档
This commit is contained in:
@@ -19,6 +19,7 @@ DEFAULT_BUSY_TIMEOUT_MS = 5000
|
||||
VALID_BATCH_FIELDS = {"source_files_json", "status", "note"}
|
||||
VALID_ACCOUNT_FIELDS = {
|
||||
"account_name",
|
||||
"alias",
|
||||
"region_host",
|
||||
"slug",
|
||||
"user_data_dir",
|
||||
@@ -354,19 +355,24 @@ def add_account(
|
||||
return get_account_by_alias(alias, conn=database)
|
||||
|
||||
|
||||
def update_account(alias, path=None, conn=None, **fields) -> None:
|
||||
def update_account(account_alias, path=None, conn=None, **fields) -> None:
|
||||
_validate_fields(fields, VALID_ACCOUNT_FIELDS)
|
||||
if not fields:
|
||||
return
|
||||
fields["updated_at"] = _now()
|
||||
assignments = ", ".join(f"{field} = ?" for field in fields)
|
||||
params = list(fields.values()) + [alias]
|
||||
params = list(fields.values()) + [account_alias]
|
||||
with _connection(conn, path) as database:
|
||||
with database:
|
||||
database.execute(
|
||||
f"UPDATE accounts SET {assignments} WHERE alias = ?",
|
||||
params,
|
||||
)
|
||||
try:
|
||||
with database:
|
||||
database.execute(
|
||||
f"UPDATE accounts SET {assignments} WHERE alias = ?",
|
||||
params,
|
||||
)
|
||||
except sqlite3.IntegrityError as exc:
|
||||
raise DbError(
|
||||
f"账号别名或 slug 已存在: {fields.get('alias', account_alias)}"
|
||||
) from exc
|
||||
|
||||
|
||||
def delete_account(alias, path=None, conn=None) -> None:
|
||||
|
||||
Reference in New Issue
Block a user