From 81b2c3d96c747e49629abe0505ea64812e62c252 Mon Sep 17 00:00:00 2001 From: listeng Date: Tue, 23 Jul 2024 13:08:21 +0800 Subject: [PATCH 1/2] add quick edit mode options --- fastapi_amis_admin/admin/admin.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/fastapi_amis_admin/admin/admin.py b/fastapi_amis_admin/admin/admin.py index 0934a31..af3cefd 100644 --- a/fastapi_amis_admin/admin/admin.py +++ b/fastapi_amis_admin/admin/admin.py @@ -612,6 +612,7 @@ async def has_action_permission(self, request: Request, name: str) -> bool: class ModelAdmin(SqlalchemyCrud, BaseActionAdmin): + list_quick: List[Union[SqlaField, TableColumn]] = [] # Fields to be quick edit mode list_display: List[Union[SqlaField, TableColumn]] = [] # Fields to be displayed list_filter: List[Union[SqlaField, FormItem]] = [] # Query filterable fields list_per_page: int = 10 # Amount of data per page @@ -660,6 +661,9 @@ def get_link_model_forms(self) -> List[LinkModelForm]: ) ) return self.link_model_forms + + async def get_list_quick(self, request: Request) -> List[Union[SqlaField, TableColumn]]: + return self.list_quick async def get_list_display(self, request: Request) -> List[Union[SqlaField, TableColumn]]: return self.list_display or list(model_fields(self.schema_list).values()) @@ -678,18 +682,26 @@ async def get_column_quick_edit(self, request: Request, modelfield: ModelField) item.update({"mode": "inline"}) return item - async def get_list_column(self, request: Request, modelfield: ModelField) -> TableColumn: + async def get_list_column(self, request: Request, modelfield: ModelField, quick_fields: dict) -> TableColumn: column = self.amis_parser.as_table_column(modelfield) if await self.has_update_permission(request, None, None) and modelfield.name in model_fields( # type: ignore self.schema_update ): if column.type == "switch": column.disabled = False - column.quickEdit = await self.get_column_quick_edit(request, modelfield) + + if column.name in quick_fields.keys(): + column.quickEdit = await self.get_column_quick_edit(request, modelfield) return column async def get_list_columns(self, request: Request) -> List[TableColumn]: columns = [] + quick_fields = await self.get_list_quick(request) + + quick_maps = {} + for f in quick_fields: + quick_maps[f.name] = 1 + for field in await self.get_list_display(request): column = None if isinstance(field, BaseAmisModel): @@ -697,7 +709,7 @@ async def get_list_columns(self, request: Request) -> List[TableColumn]: else: modelfield = self.parser.get_modelfield(field) if modelfield: - column = await self.get_list_column(request, modelfield) + column = await self.get_list_column(request, modelfield, quick_maps) if column: columns.append(column) return columns From ec4e5470c7fd8a37ff2c69aa4d370b0cb114f291 Mon Sep 17 00:00:00 2001 From: listeng Date: Wed, 24 Jul 2024 09:51:28 +0800 Subject: [PATCH 2/2] fix get_list_column default value --- fastapi_amis_admin/admin/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastapi_amis_admin/admin/admin.py b/fastapi_amis_admin/admin/admin.py index af3cefd..fd95142 100644 --- a/fastapi_amis_admin/admin/admin.py +++ b/fastapi_amis_admin/admin/admin.py @@ -682,7 +682,7 @@ async def get_column_quick_edit(self, request: Request, modelfield: ModelField) item.update({"mode": "inline"}) return item - async def get_list_column(self, request: Request, modelfield: ModelField, quick_fields: dict) -> TableColumn: + async def get_list_column(self, request: Request, modelfield: ModelField, quick_fields: dict={}) -> TableColumn: column = self.amis_parser.as_table_column(modelfield) if await self.has_update_permission(request, None, None) and modelfield.name in model_fields( # type: ignore self.schema_update