Skip to content

Commit f5a0cab

Browse files
committed
feat: Add read_action and read_form for ModelAdmin.
1 parent d2517d5 commit f5a0cab

1 file changed

Lines changed: 24 additions & 0 deletions

File tree

fastapi_amis_admin/admin/admin.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -567,9 +567,11 @@ async def get_create_form(self, request: Request, bulk: bool = False) -> Form:
567567
)
568568

569569
async def get_update_form(self, request: Request, bulk: bool = False) -> Form:
570+
extra = {}
570571
if not bulk:
571572
api = f"put:{self.router_path}/item/${self.pk_name}"
572573
fields = self.schema_update.__fields__.values()
574+
extra["initApi"] = f"get:{self.router_path}/item/${self.pk_name}"
573575
else:
574576
api = f"put:{self.router_path}/item/" + "${ids|raw}"
575577
fields = self.bulk_update_fields
@@ -579,6 +581,27 @@ async def get_update_form(self, request: Request, bulk: bool = False) -> Form:
579581
body=await self._conv_modelfields_to_formitems(request, fields, CrudEnum.update),
580582
submitText=None,
581583
trimValues=True,
584+
**extra,
585+
)
586+
587+
async def get_read_form(self, request: Request) -> Form:
588+
return Form(
589+
initApi=f"get:{self.router_path}/item/${self.pk_name}",
590+
name=CrudEnum.read,
591+
body=await self._conv_modelfields_to_formitems(request, self.schema_read.__fields__.values(), CrudEnum.read),
592+
submitText=None,
593+
)
594+
595+
async def get_read_action(self, request: Request) -> Optional[Action]:
596+
return ActionType.Dialog(
597+
icon="fa fa-eye",
598+
tooltip=_("Read"),
599+
level=LevelEnum.primary,
600+
dialog=Dialog(
601+
title=_("Read") + " - " + _(self.page_schema.label),
602+
size=SizeEnum.lg,
603+
body=await self.get_read_form(request),
604+
),
582605
)
583606

584607
async def get_create_action(self, request: Request, bulk: bool = False) -> Optional[Action]:
@@ -662,6 +685,7 @@ async def get_actions_on_header_toolbar(self, request: Request) -> List[Action]:
662685

663686
async def get_actions_on_item(self, request: Request) -> List[Action]:
664687
actions = [
688+
await self.get_read_action(request),
665689
await self.get_update_action(request, bulk=False),
666690
await self.get_delete_action(request, bulk=False),
667691
]

0 commit comments

Comments
 (0)