44
55from ninja_extra .constants import ROUTE_FUNCTION
66
7- from .endpoints import ModelAsyncEndpointFactory , ModelEndpointFactory
7+ from .endpoints import (
8+ ModelAsyncEndpointFactory ,
9+ ModelEndpointFactory ,
10+ ModelEndpointFunction ,
11+ )
812from .schemas import ModelConfig
913
1014if t .TYPE_CHECKING :
@@ -64,7 +68,7 @@ def _register_create_endpoint(self) -> None:
6468 ** kw , # type:ignore[arg-type]
6569 )
6670
67- self ._add_to_controller (create_item )
71+ self ._add_to_controller (create_item . setup ( self . _base_cls ) )
6872
6973 def _register_update_endpoint (self ) -> None :
7074 _path = "/{%s:%s}" % (
@@ -86,7 +90,7 @@ def _register_update_endpoint(self) -> None:
8690 ** kw , # type:ignore[arg-type]
8791 )
8892
89- self ._add_to_controller (update_item )
93+ self ._add_to_controller (update_item . setup ( self . _base_cls ) )
9094
9195 def _register_patch_endpoint (self ) -> None :
9296 _pk_type = self ._pk_type
@@ -110,7 +114,7 @@ def _register_patch_endpoint(self) -> None:
110114 ** kw , # type:ignore[arg-type]
111115 )
112116
113- self ._add_to_controller (patch_item )
117+ self ._add_to_controller (patch_item . setup ( self . _base_cls ) )
114118
115119 def _register_find_one_endpoint (self ) -> None :
116120 _path = "/{%s:%s}" % (
@@ -131,7 +135,7 @@ def _register_find_one_endpoint(self) -> None:
131135 ** kw , # type:ignore[arg-type]
132136 )
133137
134- self ._add_to_controller (get_item )
138+ self ._add_to_controller (get_item . setup ( self . _base_cls ) )
135139
136140 def _register_list_endpoint (self ) -> None :
137141 kw = {
@@ -159,7 +163,7 @@ def _register_list_endpoint(self) -> None:
159163 ** paginate_kwargs ,
160164 )
161165
162- self ._add_to_controller (list_items )
166+ self ._add_to_controller (list_items . setup ( self . _base_cls ) )
163167
164168 def _register_delete_endpoint (self ) -> None :
165169 _path = "/{%s:%s}" % (
@@ -179,7 +183,7 @@ def _register_delete_endpoint(self) -> None:
179183 ** kw , # type:ignore[arg-type]
180184 )
181185
182- self ._add_to_controller (delete_item )
186+ self ._add_to_controller (delete_item . setup ( self . _base_cls ) )
183187
184188 def register_model_routes (self ) -> None :
185189 for action in self ._config .allowed_routes :
@@ -191,3 +195,11 @@ def register_model_routes(self) -> None:
191195 f"is not recognized as ModelController action"
192196 )
193197 action_registration ()
198+
199+ # check for ModelEndpointFunction in the base_cls
200+ for attr_name in dir (self ._base_cls ):
201+ attr = getattr (self ._base_cls , attr_name )
202+ if isinstance (attr , ModelEndpointFunction ):
203+ self ._add_to_controller (attr .setup (self ._base_cls ))
204+ # remove the attribute from the base_cls
205+ delattr (self ._base_cls , attr_name )
0 commit comments