Skip to content

Commit 31f4b93

Browse files
committed
分开name和prefix的关联
1 parent 56f976a commit 31f4b93

File tree

5 files changed

+64
-66
lines changed

5 files changed

+64
-66
lines changed

fast_tmp/admin/server.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,9 @@ def get_site(request: Request):
108108
"label": name,
109109
"children": [
110110
{
111-
"label": model.name(),
112-
"url": model.name(),
113-
"schemaApi": model.name() + "/schema",
111+
"label": model.name,
112+
"url": model.prefix,
113+
"schemaApi": model.prefix + "/schema",
114114
}
115115
for model in ml
116116
],

fast_tmp/site/__init__.py

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,10 @@ async def create(self, request: Request, data: Dict[str, Any]) -> Model:
5151

5252
class ModelAdmin(DbSession): # todo inline字段必须都在update_fields内
5353
model: Type[Model] # model
54-
__name: Optional[str] = None
54+
_name: Optional[str] = None
5555
list_display: Tuple[str, ...] = ()
5656
inline: Tuple[str, ...] = ()
57-
prefix: str
57+
_prefix: str
5858
# search list
5959
searchs: Tuple[str, ...] = ()
6060
filters: Tuple[ModelFilter, ...] = ()
@@ -85,12 +85,17 @@ class ModelAdmin(DbSession): # todo inline字段必须都在update_fields内
8585
]
8686
_filters = None
8787

88+
@property
8889
def name(self) -> str:
89-
if self.__name is None:
90-
self.__name = self.model.__name__
91-
return self.__name
90+
if self._name is None:
91+
self._name = self.model.__name__
92+
return self._name
9293

93-
def get_filters(self):
94+
@property
95+
def prefix(self):
96+
return self._prefix
97+
98+
def get_filters(self) -> Dict[str, ModelFilter]:
9499
if not self._filters:
95100
self._filters = {i.name: i for i in self.filters}
96101
return self._filters
@@ -125,10 +130,10 @@ def get_create_dialogation_button(self, request: Request):
125130
dialog=Dialog(
126131
title="新增",
127132
body=Form(
128-
name=f"新增{self.name()}",
129-
title=f"新增{self.name()}",
133+
name=f"新增{self.name}",
134+
title=f"新增{self.name}",
130135
body=[(i.get_control(request)) for i in controls.values()],
131-
api=f"post:{self.name()}/create",
136+
api=f"post:{self.prefix}/create",
132137
),
133138
),
134139
)
@@ -148,7 +153,7 @@ def get_del_one_button(self):
148153
level=ButtonLevelEnum.link,
149154
className="text-danger",
150155
confirmText="确认要删除?",
151-
api="delete:" + self.name() + "/delete/$pk",
156+
api="delete:" + self.prefix + "/delete/$pk",
152157
)
153158

154159
def get_update_one_button(self, request: Request):
@@ -159,11 +164,11 @@ def get_update_one_button(self, request: Request):
159164
dialog=Dialog(
160165
title="修改",
161166
body=Form(
162-
title=f"修改{self.name()}",
163-
name=f"修改{self.name()}",
167+
title=f"修改{self.name}",
168+
name=f"修改{self.name}",
164169
body=body,
165-
api="put:" + self.name() + "/update/$pk",
166-
initApi="get:" + self.name() + "/update/$pk",
170+
api="put:" + self.prefix + "/update/$pk",
171+
initApi="get:" + self.prefix + "/update/$pk",
167172
),
168173
),
169174
)
@@ -202,9 +207,9 @@ def get_crud(self, request: Request):
202207
columns.extend(self.get_list_page(request))
203208
columns.append(self.get_operation(request))
204209
crud = CRUD(
205-
api=self.prefix + "/list",
210+
api=self._prefix + "/list",
206211
columns=columns,
207-
quickSaveItemApi=self.prefix + "/patch/" + "$pk",
212+
quickSaveItemApi=self._prefix + "/patch/" + "$pk",
208213
syncLocation=False,
209214
)
210215
if len(self.get_filters()) > 0:
@@ -224,7 +229,7 @@ def get_list_display_with_pk(self) -> Dict[str, BaseAdminControl]:
224229
return ret
225230

226231
def get_app_page(self, request: Request):
227-
return Page(title=self.name(), body=self.get_crud(request)).dict(exclude_none=True)
232+
return Page(title=self.name, body=self.get_crud(request)).dict(exclude_none=True)
228233

229234
async def put(self, request: Request, pk: str, data: Dict[str, Any]) -> Model:
230235
obj = await self.get_instance(request, pk)
@@ -314,7 +319,7 @@ async def get_instance(self, request: Request, pk: Any) -> Model:
314319

315320
def make_fields(self):
316321
if not self.fields.get("pk"):
317-
self.fields["pk"] = create_column("pk", self.model._meta.pk, self.prefix)
322+
self.fields["pk"] = create_column("pk", self.model._meta.pk, self._prefix)
318323
s = []
319324
s.extend(self.list_display)
320325
s.extend(self.create_fields)
@@ -326,7 +331,7 @@ def make_fields(self):
326331
if not field_type:
327332
logger.error(f"can not found field {field} in {self.model.__name__}")
328333
continue
329-
self.fields[field] = create_column(field, field_type, self.prefix)
334+
self.fields[field] = create_column(field, field_type, self._prefix)
330335

331336
def get_control_field(self, name: str) -> BaseAdminControl:
332337
ret = self.fields.get(name)
@@ -338,9 +343,9 @@ def __init__(self, prefix: str = None):
338343
if not self.fields:
339344
self.fields = {}
340345
if prefix:
341-
self.prefix = prefix
346+
self._prefix = prefix
342347
else:
343-
self.prefix = self.name()
348+
self._prefix = self.model.__name__
344349
self.make_fields()
345350
col_set = set(self.get_list_distplay())
346351
for i in self.inline:
@@ -378,6 +383,6 @@ def register_model_site(model_group: Dict[str, List[ModelAdmin]]):
378383
def get_model_site(resource: str) -> Optional[ModelAdmin]:
379384
for m_l in model_list.values():
380385
for i in m_l:
381-
if i.name() == resource:
386+
if i.prefix == resource:
382387
return i
383388
raise not_found_model

poetry.lock

Lines changed: 33 additions & 40 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/settings.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import os
22

3-
43
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
54

65
DEBUG = os.getenv("DEBUG") == "True"

tests/test_site.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,4 @@ async def test_site(self):
4343
assert data["status"] == 0
4444
assert data["data"]["total"] == 1
4545
assert data["data"]["items"][0]["name"] == "John"
46+
# update

0 commit comments

Comments
 (0)