Skip to content

Commit e207622

Browse files
authored
Update the system config to plugin (#561)
1 parent 38d9d9f commit e207622

File tree

18 files changed

+65
-27
lines changed

18 files changed

+65
-27
lines changed

backend/app/admin/api/v1/sys/__init__.py

-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
# -*- coding: utf-8 -*-
33
from fastapi import APIRouter
44

5-
from backend.app.admin.api.v1.sys.config import router as config_router
65
from backend.app.admin.api.v1.sys.data_rule import router as data_rule_router
76
from backend.app.admin.api.v1.sys.dept import router as dept_router
87
from backend.app.admin.api.v1.sys.dict_data import router as dict_data_router
@@ -16,7 +15,6 @@
1615

1716
router = APIRouter(prefix='/sys')
1817

19-
router.include_router(config_router, prefix='/configs', tags=['系统参数配置'])
2018
router.include_router(dept_router, prefix='/depts', tags=['系统部门'])
2119
router.include_router(dict_data_router, prefix='/dict-datas', tags=['系统字典数据'])
2220
router.include_router(dict_type_router, prefix='/dict-types', tags=['系统字典类型'])

backend/app/admin/conf.py

+1-4
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,10 @@ class AdminSettings(BaseSettings):
2727
CAPTCHA_LOGIN_REDIS_PREFIX: str = 'fba:login:captcha'
2828
CAPTCHA_LOGIN_EXPIRE_SECONDS: int = 60 * 5 # 3 分钟
2929

30-
# 参数配置
31-
CONFIG_BUILT_IN_TYPES: list[str] = ['website', 'protocol', 'policy']
32-
3330

3431
@lru_cache
3532
def get_admin_settings() -> AdminSettings:
36-
"""获取 admin 参数配置"""
33+
"""获取 admin 配置"""
3734
return AdminSettings()
3835

3936

backend/app/admin/model/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
#!/usr/bin/env python3
22
# -*- coding: utf-8 -*-
3-
from backend.app.admin.model.config import Config
43
from backend.app.admin.model.data_rule import DataRule
54
from backend.app.admin.model.dept import Dept
65
from backend.app.admin.model.dict_data import DictData

backend/plugin/config/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-

backend/plugin/config/api/__init__.py

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-

backend/app/admin/api/v1/sys/config.py backend/plugin/config/api/v1/sys/config.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,19 @@
44

55
from fastapi import APIRouter, Depends, Path, Query
66

7-
from backend.app.admin.schema.config import (
8-
CreateConfigParam,
9-
GetConfigDetail,
10-
SaveBuiltInConfigParam,
11-
UpdateConfigParam,
12-
)
13-
from backend.app.admin.service.config_service import config_service
147
from backend.common.pagination import DependsPagination, PageData, paging_data
158
from backend.common.response.response_schema import ResponseModel, ResponseSchemaModel, response_base
169
from backend.common.security.jwt import DependsJwtAuth
1710
from backend.common.security.permission import RequestPermission
1811
from backend.common.security.rbac import DependsRBAC
1912
from backend.database.db import CurrentSession
13+
from backend.plugin.config.schema.config import (
14+
CreateConfigParam,
15+
GetConfigDetail,
16+
SaveBuiltInConfigParam,
17+
UpdateConfigParam,
18+
)
19+
from backend.plugin.config.service.config_service import config_service
2020

2121
router = APIRouter()
2222

backend/plugin/config/conf.py

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
from functools import lru_cache
4+
5+
from pydantic_settings import BaseSettings
6+
7+
8+
class ConfigSettings(BaseSettings):
9+
"""参数配置"""
10+
11+
# 参数
12+
CONFIG_BUILT_IN_TYPES: list[str] = ['website', 'protocol', 'policy']
13+
14+
15+
@lru_cache
16+
def get_config_settings() -> ConfigSettings:
17+
"""获取参数配置"""
18+
return ConfigSettings()
19+
20+
21+
config_settings = get_config_settings()
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-

backend/app/admin/crud/crud_config.py backend/plugin/config/crud/crud_config.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
from sqlalchemy.ext.asyncio import AsyncSession
77
from sqlalchemy_crud_plus import CRUDPlus
88

9-
from backend.app.admin.conf import admin_settings
10-
from backend.app.admin.model import Config
11-
from backend.app.admin.schema.config import CreateConfigParam, UpdateConfigParam
9+
from backend.plugin.config.conf import config_settings
10+
from backend.plugin.config.model import Config
11+
from backend.plugin.config.schema.config import CreateConfigParam, UpdateConfigParam
1212

1313

1414
class CRUDConfig(CRUDPlus[Config]):
@@ -22,7 +22,7 @@ async def get(self, db: AsyncSession, pk: int) -> Config | None:
2222
:param pk: 参数配置 ID
2323
:return:
2424
"""
25-
return await self.select_model_by_column(db, id=pk, type__not_in=admin_settings.CONFIG_BUILT_IN_TYPES)
25+
return await self.select_model_by_column(db, id=pk, type__not_in=config_settings.CONFIG_BUILT_IN_TYPES)
2626

2727
async def get_by_type(self, db: AsyncSession, type: str) -> Sequence[Config]:
2828
"""
@@ -63,7 +63,7 @@ async def get_list(self, name: str | None = None, type: str | None = None) -> Se
6363
:param type: 参数配置类型
6464
:return:
6565
"""
66-
filters = {'type__not_in': admin_settings.CONFIG_BUILT_IN_TYPES}
66+
filters = {'type__not_in': config_settings.CONFIG_BUILT_IN_TYPES}
6767
if name is not None:
6868
filters.update(name__like=f'%{name}%')
6969
if type is not None:
@@ -100,7 +100,7 @@ async def delete(self, db: AsyncSession, pk: list[int]) -> int:
100100
:return:
101101
"""
102102
return await self.delete_model_by_column(
103-
db, allow_multiple=True, id__in=pk, type__not_in=admin_settings.CONFIG_BUILT_IN_TYPES
103+
db, allow_multiple=True, id__in=pk, type__not_in=config_settings.CONFIG_BUILT_IN_TYPES
104104
)
105105

106106

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
3+
from backend.plugin.config.model.config import Config
File renamed without changes.

backend/plugin/config/plugin.toml

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[app]
2+
include = 'admin'
3+
4+
[api.config]
5+
prefix = '/configs'
6+
tags = '系统参数配置'
+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-
File renamed without changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
#!/usr/bin/env python3
2+
# -*- coding: utf-8 -*-

backend/app/admin/service/config_service.py backend/plugin/config/service/config_service.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44

55
from sqlalchemy import Select
66

7-
from backend.app.admin.conf import admin_settings
8-
from backend.app.admin.crud.crud_config import config_dao
9-
from backend.app.admin.model import Config
10-
from backend.app.admin.schema.config import (
7+
from backend.common.exception import errors
8+
from backend.database.db import async_db_session
9+
from backend.plugin.config.conf import config_settings
10+
from backend.plugin.config.crud.crud_config import config_dao
11+
from backend.plugin.config.model import Config
12+
from backend.plugin.config.schema.config import (
1113
CreateConfigParam,
1214
SaveBuiltInConfigParam,
1315
UpdateConfigParam,
1416
)
15-
from backend.common.exception import errors
16-
from backend.database.db import async_db_session
1717

1818

1919
class ConfigService:
@@ -83,7 +83,7 @@ async def create(*, obj: CreateConfigParam) -> None:
8383
:return:
8484
"""
8585
async with async_db_session.begin() as db:
86-
if obj.type in admin_settings.CONFIG_BUILT_IN_TYPES:
86+
if obj.type in config_settings.CONFIG_BUILT_IN_TYPES:
8787
raise errors.ForbiddenError(msg='非法类型参数')
8888
config = await config_dao.get_by_key(db, obj.key)
8989
if config:

0 commit comments

Comments
 (0)