@@ -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