Skip to content

Commit 3911d4f

Browse files
committed
优化项目结构
1 parent 4f14f87 commit 3911d4f

File tree

4 files changed

+139
-131
lines changed

4 files changed

+139
-131
lines changed

fast_tmp/amis/forms/enums.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class ControlEnum(str, Enum):
3030
transfer = "transfer"
3131
checkboxes = "checkboxes"
3232
picker = "picker"
33+
custom = "custom"
3334

3435

3536
class ItemModel(str, Enum):

fast_tmp/site/__init__.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import logging
2-
from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple, Type, TypeVar
2+
from typing import Any, Dict, List, Optional, Tuple, Type
33

44
from starlette.requests import Request
55
from tortoise.models import Model
@@ -14,7 +14,6 @@
1414
from ..amis.enums import ButtonLevelEnum
1515
from ..amis.forms import Form
1616
from ..amis.frame import Dialog, Drawer
17-
from ..amis.response import AmisStructError
1817
from .util import AbstractControl, SelectByApi, create_column
1918

2019
logger = logging.getLogger(__file__)
@@ -96,7 +95,7 @@ async def get_create_dialogation_button(self, request: Request):
9695
body=Form(
9796
name=f"新增{self.name()}",
9897
title=f"新增{self.name()}",
99-
body=[(await i.get_control(request)) for i in controls.values()],
98+
body=[(i.get_control(request)) for i in controls.values()],
10099
api=f"post:{self.name()}/create",
101100
),
102101
),
@@ -106,9 +105,9 @@ async def get_list_page(self, request: Request):
106105
res = []
107106
for field_name, col in self.get_list_distplay().items():
108107
if field_name in self.inline:
109-
res.append(await col.get_column_inline(request))
108+
res.append(col.get_column_inline(request))
110109
else:
111-
res.append(await col.get_column(request))
110+
res.append(col.get_column(request))
112111
return res
113112

114113
def get_del_one_button(self):
@@ -122,14 +121,13 @@ def get_del_one_button(self):
122121

123122
# @classmethod
124123
async def get_update_one_button(self, request: Request):
125-
body = [await i.get_control(request) for i in self.get_update_fields().values()]
124+
body = [i.get_control(request) for i in self.get_update_fields().values()]
126125
return DrawerAction(
127126
label="修改",
128127
level=ButtonLevelEnum.link,
129128
drawer=Drawer(
130129
title="修改",
131130
body=Form(
132-
reload=self.name(),
133131
title=f"修改{self.name()}",
134132
name=f"修改{self.name()}",
135133
body=body,

fast_tmp/site/base.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
import datetime
2+
import json
3+
from typing import Any, Optional
4+
5+
from starlette.requests import Request
6+
from tortoise import Model
7+
from tortoise.queryset import QuerySet
8+
9+
from fast_tmp.amis.forms import Column, Control
10+
from fast_tmp.amis.response import AmisStructError
11+
12+
13+
class AbstractAmisAdminDB:
14+
"""
15+
admin访问model的数据库指令
16+
"""
17+
18+
_prefix: Optional[str] # 网段
19+
_field_name: Optional[str]
20+
21+
def list_queryset(self, queryset: QuerySet) -> QuerySet: # 列表
22+
"""
23+
主要考虑是否需要预加载
24+
"""
25+
return queryset
26+
27+
def search_queryset(self, queryset: QuerySet, request: Request, search: Any) -> QuerySet: # 搜索
28+
"""
29+
是否需要增加额外的查询条件
30+
值可以近似
31+
"""
32+
raise AmisStructError("未构建")
33+
34+
def filter_queryset(self, queryset: QuerySet, request: Request, filter: Any) -> QuerySet: # 列表
35+
"""
36+
过滤规则,用于页面查询和过滤用
37+
要求值必须相等
38+
"""
39+
raise AmisStructError("未构建")
40+
41+
def prefetch(self, request: Request, queryset: QuerySet) -> QuerySet: # 列表
42+
"""
43+
过滤规则,用于页面查询和过滤用
44+
要求值必须相等
45+
"""
46+
return queryset
47+
48+
async def get_value(self, request: Request, obj: Model) -> Any:
49+
"""
50+
获取值
51+
"""
52+
return getattr(obj, self._field_name)
53+
54+
async def set_value(self, request: Request, obj: Model, Any):
55+
"""
56+
设置值
57+
"""
58+
pass
59+
60+
def validate(self, value: Any) -> Any:
61+
"""
62+
对数据进行校验
63+
"""
64+
return value
65+
66+
def __init__(self, _field_name: str, _prefix: str, **kwargs):
67+
self._prefix = _prefix
68+
if not _field_name:
69+
raise AmisStructError("field_name can not be none")
70+
self._field_name = _field_name
71+
72+
73+
class AmisOrm:
74+
def orm_2_amis(self, value: Any) -> Any:
75+
"""
76+
orm的值转成amis需要的值
77+
"""
78+
return value
79+
80+
def amis_2_orm(self, value: Any) -> Any:
81+
return value
82+
83+
84+
class AbstractControl(object):
85+
"""
86+
用户自定义的column组件
87+
"""
88+
89+
def get_column(self, request: Request) -> Column:
90+
"""
91+
获取column模型
92+
"""
93+
94+
def get_column_inline(self, request: Request) -> Column:
95+
"""
96+
获取内联修改的column
97+
"""
98+
99+
def get_control(self, request: Request) -> Control:
100+
"""
101+
获取内联修改的column
102+
"""

0 commit comments

Comments
 (0)