django-ninja-aio-crud 0.8.1__tar.gz → 0.8.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: django-ninja-aio-crud
3
- Version: 0.8.1
3
+ Version: 0.8.3
4
4
  Summary: Django Ninja AIO CRUD - Rest Framework
5
5
  Author: Giuseppe Casillo
6
6
  Requires-Python: >=3.10
@@ -1,6 +1,6 @@
1
1
  """Django Ninja AIO CRUD - Rest Framework"""
2
2
 
3
- __version__ = "0.8.1"
3
+ __version__ = "0.8.3"
4
4
 
5
5
  from .api import NinjaAIO
6
6
 
@@ -72,6 +72,10 @@ class APIViewSet:
72
72
  schema_out: Schema | None = None
73
73
  schema_update: Schema | None = None
74
74
  auth: list | None = NOT_SET
75
+ get_auth: list | None = NOT_SET
76
+ post_auth: list | None = NOT_SET
77
+ patch_auth: list | None = NOT_SET
78
+ delete_auth: list | None = NOT_SET
75
79
  pagination_class: type[AsyncPaginationBase] = PageNumberPagination
76
80
  query_params: dict[str, tuple[type, ...]] = {}
77
81
  disable: list[type[VIEW_TYPES]] = []
@@ -105,6 +109,22 @@ class APIViewSet:
105
109
  "delete": (None, self.delete_view),
106
110
  }
107
111
 
112
+ def _auth_view(self, view_type: str):
113
+ auth = getattr(self, f"{view_type}_auth", None)
114
+ return auth if auth is not NOT_SET else self.auth
115
+
116
+ def get_view_auth(self):
117
+ return self._auth_view("get")
118
+
119
+ def post_view_auth(self):
120
+ return self._auth_view("post")
121
+
122
+ def patch_view_auth(self):
123
+ return self._auth_view("patch")
124
+
125
+ def delete_view_auth(self):
126
+ return self._auth_view("delete")
127
+
108
128
  def _generate_schema(self, fields: dict, name: str) -> Schema:
109
129
  return create_model(f"{self.model_util.model_name}{name}", **fields)
110
130
 
@@ -141,10 +161,10 @@ class APIViewSet:
141
161
  def create_view(self):
142
162
  @self.router.post(
143
163
  self.path,
144
- auth=self.auth,
164
+ auth=self.post_view_auth(),
145
165
  response={201: self.schema_out, self.error_codes: GenericMessageSchema},
146
166
  )
147
- async def create(request: HttpRequest, data: self.schema_in):
167
+ async def create(request: HttpRequest, data: self.schema_in): # type: ignore
148
168
  return 201, await self.model_util.create_s(request, data, self.schema_out)
149
169
 
150
170
  create.__name__ = f"create_{self.model_util.model_name}"
@@ -153,7 +173,7 @@ class APIViewSet:
153
173
  def list_view(self):
154
174
  @self.router.get(
155
175
  self.path,
156
- auth=self.auth,
176
+ auth=self.get_view_auth(),
157
177
  response={
158
178
  200: List[self.schema_out],
159
179
  self.error_codes: GenericMessageSchema,
@@ -161,7 +181,7 @@ class APIViewSet:
161
181
  )
162
182
  @paginate(self.pagination_class)
163
183
  async def list(
164
- request: HttpRequest, filters: Query[self.filters_schema] = None
184
+ request: HttpRequest, filters: Query[self.filters_schema] = None # type: ignore
165
185
  ):
166
186
  qs = self.model.objects.select_related()
167
187
  if isinstance(self.model, ModelSerializerMeta):
@@ -183,10 +203,10 @@ class APIViewSet:
183
203
  def retrieve_view(self):
184
204
  @self.router.get(
185
205
  self.path_retrieve,
186
- auth=self.auth,
206
+ auth=self.get_view_auth(),
187
207
  response={200: self.schema_out, self.error_codes: GenericMessageSchema},
188
208
  )
189
- async def retrieve(request: HttpRequest, pk: Path[self.path_schema]):
209
+ async def retrieve(request: HttpRequest, pk: Path[self.path_schema]): # type: ignore
190
210
  obj = await self.model_util.get_object(request, self._get_pk(pk))
191
211
  return await self.model_util.read_s(request, obj, self.schema_out)
192
212
 
@@ -196,11 +216,11 @@ class APIViewSet:
196
216
  def update_view(self):
197
217
  @self.router.patch(
198
218
  self.path_retrieve,
199
- auth=self.auth,
219
+ auth=self.patch_view_auth(),
200
220
  response={200: self.schema_out, self.error_codes: GenericMessageSchema},
201
221
  )
202
222
  async def update(
203
- request: HttpRequest, data: self.schema_update, pk: Path[self.path_schema]
223
+ request: HttpRequest, data: self.schema_update, pk: Path[self.path_schema] # type: ignore
204
224
  ):
205
225
  return await self.model_util.update_s(
206
226
  request, data, self._get_pk(pk), self.schema_out
@@ -212,10 +232,10 @@ class APIViewSet:
212
232
  def delete_view(self):
213
233
  @self.router.delete(
214
234
  self.path_retrieve,
215
- auth=self.auth,
235
+ auth=self.delete_view_auth(),
216
236
  response={204: None, self.error_codes: GenericMessageSchema},
217
237
  )
218
- async def delete(request: HttpRequest, pk: Path[self.path_schema]):
238
+ async def delete(request: HttpRequest, pk: Path[self.path_schema]): # type: ignore
219
239
  return 204, await self.model_util.delete_s(request, self._get_pk(pk))
220
240
 
221
241
  delete.__name__ = f"delete_{self.model_util.model_name}"