Skip to content

Commit 5aefef7

Browse files
committed
Optimize plugin
1 parent f150849 commit 5aefef7

File tree

18 files changed

+292
-120
lines changed

18 files changed

+292
-120
lines changed

backend/app/admin/model/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010

1111
class Config(Base):
12-
"""系统配置表"""
12+
"""配置表"""
1313

1414
__tablename__ = 'sys_config'
1515

backend/app/admin/model/dict_data.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717

1818
class DictData(Base):
19-
"""字典数据"""
19+
"""字典数据表"""
2020

2121
__tablename__ = 'sys_dict_data'
2222

backend/app/admin/model/dict_type.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717

1818
class DictType(Base):
19-
"""字典类型"""
19+
"""字典类型表"""
2020

2121
__tablename__ = 'sys_dict_type'
2222

backend/plugin/casbin/api/v1/sys/casbin.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,25 +36,25 @@
3636
)
3737
async def get_pagination_casbin(
3838
db: CurrentSession,
39-
ptype: Annotated[str | None, Query(description='策略类型, p / g')] = None,
40-
sub: Annotated[str | None, Query(description='用户 uuid / 角色')] = None,
39+
ptype: Annotated[str | None, Query(description='策略类型p / g')] = None,
40+
sub: Annotated[str | None, Query(description='用户 UUID / 角色 ID')] = None,
4141
) -> ResponseSchemaModel[PageData[GetPolicyDetail]]:
4242
casbin_select = await casbin_service.get_casbin_list(ptype=ptype, sub=sub)
4343
page_data = await paging_data(db, casbin_select)
4444
return response_base.success(data=page_data)
4545

4646

47-
@router.get('/policies', summary='获取所有P权限策略', dependencies=[DependsJwtAuth])
47+
@router.get('/policies', summary='获取所有 P 权限策略', dependencies=[DependsJwtAuth])
4848
async def get_all_policies(
49-
role: Annotated[int | None, Query(description='角色ID')] = None,
49+
role: Annotated[int | None, Query(description='角色 ID')] = None,
5050
) -> ResponseSchemaModel[list[list[str]]]:
5151
policies = await casbin_service.get_policy_list(role=role)
5252
return response_base.success(data=policies)
5353

5454

5555
@router.post(
5656
'/policy',
57-
summary='添加P权限策略',
57+
summary='添加 P 权限策略',
5858
dependencies=[
5959
Depends(RequestPermission('casbin:p:add')),
6060
DependsRBAC,
@@ -76,7 +76,7 @@ async def create_policy(p: CreatePolicyParam) -> ResponseSchemaModel[bool]:
7676

7777
@router.post(
7878
'/policies',
79-
summary='添加多组P权限策略',
79+
summary='添加多组 P 权限策略',
8080
dependencies=[
8181
Depends(RequestPermission('casbin:p:group:add')),
8282
DependsRBAC,
@@ -89,7 +89,7 @@ async def create_policies(ps: list[CreatePolicyParam]) -> ResponseSchemaModel[bo
8989

9090
@router.put(
9191
'/policy',
92-
summary='更新P权限策略',
92+
summary='更新 P 权限策略',
9393
dependencies=[
9494
Depends(RequestPermission('casbin:p:edit')),
9595
DependsRBAC,
@@ -102,7 +102,7 @@ async def update_policy(obj: UpdatePolicyParam) -> ResponseSchemaModel[bool]:
102102

103103
@router.put(
104104
'/policies',
105-
summary='更新多组P权限策略',
105+
summary='更新多组 P 权限策略',
106106
dependencies=[
107107
Depends(RequestPermission('casbin:p:group:edit')),
108108
DependsRBAC,
@@ -115,7 +115,7 @@ async def update_policies(obj: UpdatePoliciesParam) -> ResponseSchemaModel[bool]
115115

116116
@router.delete(
117117
'/policy',
118-
summary='删除P权限策略',
118+
summary='删除 P 权限策略',
119119
dependencies=[
120120
Depends(RequestPermission('casbin:p:del')),
121121
DependsRBAC,
@@ -128,7 +128,7 @@ async def delete_policy(p: DeletePolicyParam) -> ResponseSchemaModel[bool]:
128128

129129
@router.delete(
130130
'/policies',
131-
summary='删除多组P权限策略',
131+
summary='删除多组 P 权限策略',
132132
dependencies=[
133133
Depends(RequestPermission('casbin:p:group:del')),
134134
DependsRBAC,
@@ -141,7 +141,7 @@ async def delete_policies(ps: list[DeletePolicyParam]) -> ResponseSchemaModel[bo
141141

142142
@router.delete(
143143
'/policies/all',
144-
summary='删除所有P权限策略',
144+
summary='删除所有 P 权限策略',
145145
dependencies=[
146146
Depends(RequestPermission('casbin:p:empty')),
147147
DependsRBAC,
@@ -154,15 +154,15 @@ async def delete_all_policies(sub: DeleteAllPoliciesParam) -> ResponseModel:
154154
return response_base.fail()
155155

156156

157-
@router.get('/groups', summary='获取所有G权限策略', dependencies=[DependsJwtAuth])
157+
@router.get('/groups', summary='获取所有 G 权限策略', dependencies=[DependsJwtAuth])
158158
async def get_all_groups() -> ResponseSchemaModel[list[list[str]]]:
159159
data = await casbin_service.get_group_list()
160160
return response_base.success(data=data)
161161

162162

163163
@router.post(
164164
'/group',
165-
summary='添加G权限策略',
165+
summary='添加 G 权限策略',
166166
dependencies=[
167167
Depends(RequestPermission('casbin:g:add')),
168168
DependsRBAC,

backend/plugin/casbin/conf.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88

99

1010
class CasbinSettings(BaseSettings):
11-
"""Casbin Settings"""
11+
"""Casbin 配置类"""
1212

13-
# RBAC
13+
# RBAC 配置
1414
RBAC_CASBIN_EXCLUDE: set[tuple[str, str]] = {
1515
('POST', f'{settings.FASTAPI_API_V1_PATH}/auth/logout'),
1616
('POST', f'{settings.FASTAPI_API_V1_PATH}/auth/token/new'),
@@ -19,7 +19,7 @@ class CasbinSettings(BaseSettings):
1919

2020
@lru_cache
2121
def get_casbin_settings() -> CasbinSettings:
22-
"""获取 xxx 配置"""
22+
"""获取 Casbin 配置"""
2323
return CasbinSettings()
2424

2525

backend/plugin/casbin/crud/crud_api.py

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,14 @@
1313

1414

1515
class CRUDApi(CRUDPlus[Api]):
16+
"""API 数据库操作类"""
17+
1618
async def get(self, db: AsyncSession, pk: int) -> Api | None:
1719
"""
1820
获取 API
1921
20-
:param db:
21-
:param pk:
22+
:param db: 数据库会话
23+
:param pk: 主键
2224
:return:
2325
"""
2426
return await self.select_model(db, pk)
@@ -27,10 +29,10 @@ async def get_list(self, request: Request, name: str = None, method: str = None,
2729
"""
2830
获取 API 列表
2931
30-
:param request:
31-
:param name:
32-
:param method:
33-
:param path:
32+
:param request: FastAPI 请求对象
33+
:param name: API 名称
34+
:param method: 请求方法
35+
:param path: API 路径
3436
:return:
3537
"""
3638
filters = {}
@@ -47,17 +49,17 @@ async def get_all(self, db: AsyncSession) -> Sequence[Api]:
4749
"""
4850
获取所有 API
4951
50-
:param db:
52+
:param db: 数据库会话
5153
:return:
5254
"""
5355
return await self.select_models(db)
5456

5557
async def get_by_name(self, db: AsyncSession, name: str) -> Api | None:
5658
"""
57-
通过 name 获取 API
59+
通过名称获取 API
5860
59-
:param db:
60-
:param name:
61+
:param db: 数据库会话
62+
:param name: API 名称
6163
:return:
6264
"""
6365
return await self.select_model_by_column(db, name=name)
@@ -66,8 +68,8 @@ async def create(self, db: AsyncSession, obj_in: CreateApiParam) -> None:
6668
"""
6769
创建 API
6870
69-
:param db:
70-
:param obj_in:
71+
:param db: 数据库会话
72+
:param obj_in: 创建参数
7173
:return:
7274
"""
7375
await self.create_model(db, obj_in)
@@ -76,9 +78,9 @@ async def update(self, db: AsyncSession, pk: int, obj_in: UpdateApiParam) -> int
7678
"""
7779
更新 API
7880
79-
:param db:
80-
:param pk:
81-
:param obj_in:
81+
:param db: 数据库会话
82+
:param pk: 主键
83+
:param obj_in: 更新参数
8284
:return:
8385
"""
8486
return await self.update_model(db, pk, obj_in)
@@ -87,8 +89,8 @@ async def delete(self, db: AsyncSession, pk: list[int]) -> int:
8789
"""
8890
删除 API
8991
90-
:param db:
91-
:param pk:
92+
:param db: 数据库会话
93+
:param pk: 主键列表
9294
:return:
9395
"""
9496
return await self.delete_model_by_column(db, allow_multiple=True, id__in=pk)

backend/plugin/casbin/crud/crud_casbin.py

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,24 @@
1111

1212

1313
class CRUDCasbin(CRUDPlus[CasbinRule]):
14+
"""Casbin 规则数据库操作类"""
15+
1416
async def get_list(self, ptype: str, sub: str) -> Select:
1517
"""
1618
获取策略列表
1719
18-
:param ptype:
19-
:param sub:
20+
:param ptype: 策略类型
21+
:param sub: 用户 UUID / 角色 ID
2022
:return:
2123
"""
2224
return await self.select_order('id', 'desc', ptype=ptype, v0__like=f'%{sub}%')
2325

2426
async def delete_policies_by_sub(self, db: AsyncSession, sub: DeleteAllPoliciesParam) -> int:
2527
"""
26-
删除角色所有P策略
28+
删除角色所有 P 策略
2729
28-
:param db:
29-
:param sub:
30+
:param db: 数据库会话
31+
:param sub: 删除参数
3032
:return:
3133
"""
3234
where_list = [sub.role]
@@ -36,10 +38,10 @@ async def delete_policies_by_sub(self, db: AsyncSession, sub: DeleteAllPoliciesP
3638

3739
async def delete_groups_by_uuid(self, db: AsyncSession, uuid: UUID) -> int:
3840
"""
39-
删除用户所有G策略
41+
删除用户所有 G 策略
4042
41-
:param db:
42-
:param uuid:
43+
:param db: 数据库会话
44+
:param uuid: 用户uuid
4345
:return:
4446
"""
4547
return await self.delete_model_by_column(db, allow_multiple=True, v0=str(uuid))

backend/plugin/casbin/model/api.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99

1010

1111
class Api(Base):
12-
"""系统api"""
12+
"""API 表"""
1313

1414
__tablename__ = 'sys_api'
1515

1616
id: Mapped[id_key] = mapped_column(init=False)
17-
name: Mapped[str] = mapped_column(String(50), unique=True, comment='api名称')
17+
name: Mapped[str] = mapped_column(String(50), unique=True, comment='API 名称')
1818
method: Mapped[str] = mapped_column(String(16), comment='请求方法')
19-
path: Mapped[str] = mapped_column(String(500), comment='api路径')
19+
path: Mapped[str] = mapped_column(String(500), comment='API 路径')
2020
remark: Mapped[str | None] = mapped_column(LONGTEXT().with_variant(TEXT, 'postgresql'), comment='备注')

backend/plugin/casbin/model/casbin_rule.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,26 +9,26 @@
99

1010

1111
class CasbinRule(MappedBase):
12-
"""重写 casbin 中的 CasbinRule model 类, 使用自定义 Base, 避免产生 alembic 迁移问题"""
12+
"""Casbin 规则表"""
1313

1414
__tablename__ = 'sys_casbin_rule'
1515

1616
id: Mapped[id_key]
1717
ptype: Mapped[str] = mapped_column(String(255), comment='策略类型: p / g')
18-
v0: Mapped[str] = mapped_column(String(255), comment='角色ID / 用户uuid')
19-
v1: Mapped[str] = mapped_column(LONGTEXT().with_variant(TEXT, 'postgresql'), comment='api路径 / 角色名称')
18+
v0: Mapped[str] = mapped_column(String(255), comment='用户 UUID / 角色 ID')
19+
v1: Mapped[str] = mapped_column(LONGTEXT().with_variant(TEXT, 'postgresql'), comment='API 路径 / 角色名称')
2020
v2: Mapped[str | None] = mapped_column(String(255), comment='请求方法')
21-
v3: Mapped[str | None] = mapped_column(String(255))
22-
v4: Mapped[str | None] = mapped_column(String(255))
23-
v5: Mapped[str | None] = mapped_column(String(255))
21+
v3: Mapped[str | None] = mapped_column(String(255), comment='预留字段')
22+
v4: Mapped[str | None] = mapped_column(String(255), comment='预留字段')
23+
v5: Mapped[str | None] = mapped_column(String(255), comment='预留字段')
2424

25-
def __str__(self):
25+
def __str__(self) -> str:
2626
arr = [self.ptype]
2727
for v in (self.v0, self.v1, self.v2, self.v3, self.v4, self.v5):
2828
if v is None:
2929
break
3030
arr.append(v)
3131
return ', '.join(arr)
3232

33-
def __repr__(self):
34-
return '<CasbinRule {}: "{}">'.format(self.id, str(self))
33+
def __repr__(self) -> str:
34+
return f'<CasbinRule {self.id}: "{str(self)}">'

backend/plugin/casbin/schema/api.py

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,27 @@
99

1010

1111
class ApiSchemaBase(SchemaBase):
12-
name: str
12+
"""API 基础模型"""
13+
14+
name: str = Field(description='API 名称')
1315
method: MethodType = Field(default=MethodType.GET, description='请求方法')
14-
path: str = Field(description='api路径')
15-
remark: str | None = None
16+
path: str = Field(description='API 路径')
17+
remark: str | None = Field(default=None, description='备注')
1618

1719

1820
class CreateApiParam(ApiSchemaBase):
19-
pass
21+
"""创建 API 参数"""
2022

2123

2224
class UpdateApiParam(ApiSchemaBase):
23-
pass
25+
"""更新 API 参数"""
2426

2527

2628
class GetApiDetail(ApiSchemaBase):
29+
"""API 详情"""
30+
2731
model_config = ConfigDict(from_attributes=True)
2832

29-
id: int
30-
created_time: datetime
31-
updated_time: datetime | None = None
33+
id: int = Field(description='API ID')
34+
created_time: datetime = Field(description='创建时间')
35+
updated_time: datetime | None = Field(default=None, description='更新时间')

0 commit comments

Comments
 (0)