fastadmin 0.2.19__tar.gz → 0.2.20__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.
Files changed (49) hide show
  1. {fastadmin-0.2.19 → fastadmin-0.2.20}/PKG-INFO +4 -4
  2. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/django/app/urls.py +1 -1
  3. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/models/helpers.py +1 -2
  4. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/models/orms/django.py +12 -1
  5. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/models/orms/ponyorm.py +8 -8
  6. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/models/orms/sqlalchemy.py +0 -1
  7. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/models/orms/tortoise.py +1 -2
  8. fastadmin-0.2.20/fastadmin/static/assets/worker-D1fCgYB7.js +13 -0
  9. fastadmin-0.2.20/fastadmin/static/assets/worker-DRNcaZ-V.js +13 -0
  10. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/static/index.min.css +4 -3
  11. fastadmin-0.2.20/fastadmin/static/index.min.js +901 -0
  12. {fastadmin-0.2.19 → fastadmin-0.2.20}/pyproject.toml +14 -16
  13. fastadmin-0.2.19/fastadmin/static/index.min.js +0 -865
  14. {fastadmin-0.2.19 → fastadmin-0.2.20}/LICENSE +0 -0
  15. {fastadmin-0.2.19 → fastadmin-0.2.20}/README.md +0 -0
  16. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/__init__.py +0 -0
  17. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/__init__.py +0 -0
  18. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/exceptions.py +0 -0
  19. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/__init__.py +0 -0
  20. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/django/__init__.py +0 -0
  21. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/django/app/__init__.py +0 -0
  22. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/django/app/api.py +0 -0
  23. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/django/app/views.py +0 -0
  24. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/fastapi/__init__.py +0 -0
  25. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/fastapi/api.py +0 -0
  26. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/fastapi/app.py +0 -0
  27. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/fastapi/views.py +0 -0
  28. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/flask/__init__.py +0 -0
  29. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/flask/api.py +0 -0
  30. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/flask/app.py +0 -0
  31. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/frameworks/flask/views.py +0 -0
  32. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/helpers.py +0 -0
  33. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/schemas.py +0 -0
  34. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/api/service.py +0 -0
  35. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/models/__init__.py +0 -0
  36. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/models/base.py +0 -0
  37. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/models/decorators.py +0 -0
  38. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/models/orms/__init__.py +0 -0
  39. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/models/schemas.py +0 -0
  40. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/settings.py +0 -0
  41. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/static/assets/worker-6Z7niv9l.js +0 -0
  42. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/static/assets/worker-C151k0-L.js +0 -0
  43. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/static/assets/worker-D3TWcJOI.js +0 -0
  44. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/static/assets/worker-MF2p-l5_.js +0 -0
  45. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/static/images/favicon.png +0 -0
  46. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/static/images/header-logo.svg +0 -0
  47. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/static/images/sign-in-logo.svg +0 -0
  48. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/static/index.html +0 -0
  49. {fastadmin-0.2.19 → fastadmin-0.2.20}/fastadmin/templates/index.html +0 -0
@@ -1,8 +1,7 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.3
2
2
  Name: fastadmin
3
- Version: 0.2.19
3
+ Version: 0.2.20
4
4
  Summary: FastAdmin is an easy-to-use Admin Dashboard App for FastAPI/Flask/Django inspired by Django Admin.
5
- Home-page: https://github.com/vsdudakov/fastadmin
6
5
  License: MIT
7
6
  Keywords: fastapi,admin
8
7
  Author: Seva D
@@ -31,11 +30,12 @@ Provides-Extra: tortoise-orm
31
30
  Requires-Dist: asgiref (>=3.7.0,<4.0.0)
32
31
  Requires-Dist: django (==5.*) ; extra == "django"
33
32
  Requires-Dist: fastapi (==0.*) ; extra == "fastapi"
34
- Requires-Dist: flask (==2.*) ; extra == "flask"
33
+ Requires-Dist: flask (==3.*) ; extra == "flask"
35
34
  Requires-Dist: pony (==0.*) ; extra == "pony"
36
35
  Requires-Dist: pyjwt (>=2.6.0,<3.0.0)
37
36
  Requires-Dist: sqlalchemy[asyncio] (==2.*) ; extra == "sqlalchemy"
38
37
  Requires-Dist: tortoise-orm (==0.*) ; extra == "tortoise-orm"
38
+ Project-URL: Homepage, https://github.com/vsdudakov/fastadmin
39
39
  Project-URL: Repository, https://github.com/vsdudakov/fastadmin
40
40
  Description-Content-Type: text/markdown
41
41
 
@@ -41,7 +41,7 @@ def get_admin_urls():
41
41
  path("api/action/<str:model>/<str:action>", action),
42
42
  path("api/configuration", configuration),
43
43
  re_path(
44
- r"^%s(?P<path>.*)$" % re.escape("static"),
44
+ r"^%s(?P<path>.*)$" % re.escape("static"), # noqa: UP031
45
45
  serve,
46
46
  kwargs={"document_root": ROOT_DIR / "static"},
47
47
  ),
@@ -110,8 +110,7 @@ async def generate_models_schema(
110
110
  :return: A list of models / inline models schemas.
111
111
  """
112
112
  models_schemas: list[ModelSchema | InlineModelSchema] = []
113
- for orm_model_cls in admin_models:
114
- admin_model_obj: ModelAdmin | InlineModelAdmin = admin_models[orm_model_cls]
113
+ for orm_model_cls, admin_model_obj in admin_models.items():
115
114
  orm_model_fields = admin_model_obj.get_model_fields_with_widget_types()
116
115
  orm_model_fields_for_serialize = admin_model_obj.get_fields_for_serialize()
117
116
 
@@ -113,7 +113,18 @@ class DjangoORMMixin:
113
113
  form_widget_props["mode"] = "tags"
114
114
  filter_widget_type = WidgetType.Select
115
115
  filter_widget_props["mode"] = "tags"
116
- case "SmallAutoField" | "AutoField" | "BigAutoField" | "SmallIntegerField" | "BigIntegerField" | "PositiveIntegerField" | "PositiveSmallIntegerField" | "IntegerField" | "FloatField" | "DecimalField":
116
+ case (
117
+ "SmallAutoField"
118
+ | "AutoField"
119
+ | "BigAutoField"
120
+ | "SmallIntegerField"
121
+ | "BigIntegerField"
122
+ | "PositiveIntegerField"
123
+ | "PositiveSmallIntegerField"
124
+ | "IntegerField"
125
+ | "FloatField"
126
+ | "DecimalField"
127
+ ):
117
128
  form_widget_type = WidgetType.InputNumber
118
129
  filter_widget_type = WidgetType.InputNumber
119
130
  case "DateField":
@@ -267,7 +267,8 @@ class PonyORMMixin:
267
267
  # TODO: support icontains here
268
268
  filter_expr = f""""{search}" in m.{search_field}"""
269
269
  qs_ids = qs.filter(filter_expr)
270
- ids += [o.id for o in qs_ids]
270
+ objs = list(qs_ids)
271
+ ids += [o.id for o in objs]
271
272
  qs = qs.filter(lambda m: m.id in set(ids))
272
273
 
273
274
  ordering = [sort_by] if sort_by else self.ordering
@@ -298,7 +299,7 @@ class PonyORMMixin:
298
299
  :params id: an id of object.
299
300
  :return: An object.
300
301
  """
301
- return next((i for i in self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id})), None)
302
+ return self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id}).first()
302
303
 
303
304
  @sync_to_async
304
305
  @db_session
@@ -310,7 +311,7 @@ class PonyORMMixin:
310
311
  :return: An object.
311
312
  """
312
313
  if id:
313
- obj = next((i for i in self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id})), None)
314
+ obj = self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id}).first()
314
315
  if not obj:
315
316
  return None
316
317
  obj.set(**payload)
@@ -328,7 +329,7 @@ class PonyORMMixin:
328
329
  :params id: an id of object.
329
330
  :return: None.
330
331
  """
331
- obj = next((i for i in self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id})), None)
332
+ obj = self.model_cls.select(**{self.get_model_pk_name(self.model_cls): id}).first()
332
333
  if not obj:
333
334
  return
334
335
  obj.delete()
@@ -346,7 +347,7 @@ class PonyORMMixin:
346
347
  :return: A list of ids.
347
348
  """
348
349
  key_id = self.get_model_pk_name(self.model_cls)
349
- obj = next((i for i in self.model_cls.select(**{key_id: getattr(obj, key_id)})), None)
350
+ obj = self.model_cls.select(**{key_id: getattr(obj, key_id)}).first()
350
351
  if not obj:
351
352
  return []
352
353
  rel_model_cls = getattr(self.model_cls, field).py_type
@@ -365,7 +366,7 @@ class PonyORMMixin:
365
366
  :return: A list of ids.
366
367
  """
367
368
  key_id = self.get_model_pk_name(self.model_cls)
368
- obj = next((i for i in self.model_cls.select(**{key_id: getattr(obj, key_id)})), None)
369
+ obj = self.model_cls.select(**{key_id: getattr(obj, key_id)}).first()
369
370
  if not obj:
370
371
  return
371
372
  getattr(obj, field).clear()
@@ -388,7 +389,6 @@ class PonyORMMixin:
388
389
 
389
390
  :return: A list of ids.
390
391
  """
391
- ...
392
392
 
393
393
  @sync_to_async
394
394
  @db_session
@@ -403,7 +403,7 @@ class PonyORMMixin:
403
403
  """
404
404
  data = {}
405
405
  key_id = self.get_model_pk_name(self.model_cls)
406
- obj = next((i for i in self.model_cls.select(**{key_id: getattr(obj, key_id)})), None)
406
+ obj = self.model_cls.select(**{key_id: getattr(obj, key_id)}).first()
407
407
  if not obj:
408
408
  return data
409
409
 
@@ -437,7 +437,6 @@ class SqlAlchemyMixin:
437
437
 
438
438
  :return: A list of ids.
439
439
  """
440
- ...
441
440
 
442
441
 
443
442
  class SqlAlchemyModelAdmin(SqlAlchemyMixin, ModelAdmin):
@@ -43,7 +43,7 @@ class TortoiseMixin:
43
43
  if field_type in ("BackwardFKRelation", "BackwardOneToOneRelation"):
44
44
  continue
45
45
 
46
- if field_name.endswith("_id") and hasattr(orm_model_field, "reference"):
46
+ if field_name.endswith("_id") and getattr(orm_model_field, "reference", False):
47
47
  # ignore _id fields for relations
48
48
  continue
49
49
 
@@ -351,7 +351,6 @@ class TortoiseMixin:
351
351
 
352
352
  :return: A list of ids.
353
353
  """
354
- ...
355
354
 
356
355
 
357
356
  class TortoiseModelAdmin(TortoiseMixin, ModelAdmin):