4
4
5
5
from ninja_extra .constants import ROUTE_FUNCTION
6
6
7
- from .endpoints import ModelAsyncEndpointFactory , ModelEndpointFactory
7
+ from .endpoints import (
8
+ ModelAsyncEndpointFactory ,
9
+ ModelEndpointFactory ,
10
+ ModelEndpointFunction ,
11
+ )
8
12
from .schemas import ModelConfig
9
13
10
14
if t .TYPE_CHECKING :
@@ -64,7 +68,7 @@ def _register_create_endpoint(self) -> None:
64
68
** kw , # type:ignore[arg-type]
65
69
)
66
70
67
- self ._add_to_controller (create_item )
71
+ self ._add_to_controller (create_item . setup ( self . _base_cls ) )
68
72
69
73
def _register_update_endpoint (self ) -> None :
70
74
_path = "/{%s:%s}" % (
@@ -86,7 +90,7 @@ def _register_update_endpoint(self) -> None:
86
90
** kw , # type:ignore[arg-type]
87
91
)
88
92
89
- self ._add_to_controller (update_item )
93
+ self ._add_to_controller (update_item . setup ( self . _base_cls ) )
90
94
91
95
def _register_patch_endpoint (self ) -> None :
92
96
_pk_type = self ._pk_type
@@ -110,7 +114,7 @@ def _register_patch_endpoint(self) -> None:
110
114
** kw , # type:ignore[arg-type]
111
115
)
112
116
113
- self ._add_to_controller (patch_item )
117
+ self ._add_to_controller (patch_item . setup ( self . _base_cls ) )
114
118
115
119
def _register_find_one_endpoint (self ) -> None :
116
120
_path = "/{%s:%s}" % (
@@ -131,7 +135,7 @@ def _register_find_one_endpoint(self) -> None:
131
135
** kw , # type:ignore[arg-type]
132
136
)
133
137
134
- self ._add_to_controller (get_item )
138
+ self ._add_to_controller (get_item . setup ( self . _base_cls ) )
135
139
136
140
def _register_list_endpoint (self ) -> None :
137
141
kw = {
@@ -159,7 +163,7 @@ def _register_list_endpoint(self) -> None:
159
163
** paginate_kwargs ,
160
164
)
161
165
162
- self ._add_to_controller (list_items )
166
+ self ._add_to_controller (list_items . setup ( self . _base_cls ) )
163
167
164
168
def _register_delete_endpoint (self ) -> None :
165
169
_path = "/{%s:%s}" % (
@@ -179,7 +183,7 @@ def _register_delete_endpoint(self) -> None:
179
183
** kw , # type:ignore[arg-type]
180
184
)
181
185
182
- self ._add_to_controller (delete_item )
186
+ self ._add_to_controller (delete_item . setup ( self . _base_cls ) )
183
187
184
188
def register_model_routes (self ) -> None :
185
189
for action in self ._config .allowed_routes :
@@ -191,3 +195,11 @@ def register_model_routes(self) -> None:
191
195
f"is not recognized as ModelController action"
192
196
)
193
197
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