sqladmin 0.20.0__tar.gz → 0.20.1__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 (54) hide show
  1. {sqladmin-0.20.0 → sqladmin-0.20.1}/PKG-INFO +1 -1
  2. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/__init__.py +1 -1
  3. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/models.py +10 -8
  4. {sqladmin-0.20.0 → sqladmin-0.20.1}/.gitignore +0 -0
  5. {sqladmin-0.20.0 → sqladmin-0.20.1}/LICENSE.md +0 -0
  6. {sqladmin-0.20.0 → sqladmin-0.20.1}/README.md +0 -0
  7. {sqladmin-0.20.0 → sqladmin-0.20.1}/pyproject.toml +0 -0
  8. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/_menu.py +0 -0
  9. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/_queries.py +0 -0
  10. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/_types.py +0 -0
  11. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/_validators.py +0 -0
  12. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/ajax.py +0 -0
  13. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/application.py +0 -0
  14. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/authentication.py +0 -0
  15. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/exceptions.py +0 -0
  16. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/fields.py +0 -0
  17. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/formatters.py +0 -0
  18. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/forms.py +0 -0
  19. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/helpers.py +0 -0
  20. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/pagination.py +0 -0
  21. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/py.typed +0 -0
  22. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/css/flatpickr.min.css +0 -0
  23. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/css/fontawesome.min.css +0 -0
  24. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/css/main.css +0 -0
  25. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/css/select2.min.css +0 -0
  26. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/css/tabler-icons.min.css +0 -0
  27. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/css/tabler-icons.min.css.map +0 -0
  28. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/css/tabler.min.css +0 -0
  29. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/js/bootstrap.min.js +0 -0
  30. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/js/flatpickr.min.js +0 -0
  31. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/js/jquery.min.js +0 -0
  32. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/js/main.js +0 -0
  33. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/js/popper.min.js +0 -0
  34. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/js/select2.full.min.js +0 -0
  35. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/js/tabler.min.js +0 -0
  36. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/webfonts/fa-brands-400.woff2 +0 -0
  37. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/webfonts/fa-regular-400.woff2 +0 -0
  38. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/webfonts/fa-solid-900.woff2 +0 -0
  39. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/statics/webfonts/tabler-icons.woff2 +0 -0
  40. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/_macros.html +0 -0
  41. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/base.html +0 -0
  42. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/create.html +0 -0
  43. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/details.html +0 -0
  44. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/edit.html +0 -0
  45. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/error.html +0 -0
  46. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/index.html +0 -0
  47. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/layout.html +0 -0
  48. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/list.html +0 -0
  49. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/login.html +0 -0
  50. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/modals/delete.html +0 -0
  51. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/modals/details_action_confirmation.html +0 -0
  52. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templates/sqladmin/modals/list_action_confirmation.html +0 -0
  53. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/templating.py +0 -0
  54. {sqladmin-0.20.0 → sqladmin-0.20.1}/sqladmin/widgets.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: sqladmin
3
- Version: 0.20.0
3
+ Version: 0.20.1
4
4
  Summary: SQLAlchemy admin for FastAPI and Starlette
5
5
  Project-URL: Documentation, https://aminalaee.dev/sqladmin
6
6
  Project-URL: Issues, https://github.com/aminalaee/sqladmin/issues
@@ -1,7 +1,7 @@
1
1
  from sqladmin.application import Admin, action, expose
2
2
  from sqladmin.models import BaseView, ModelView
3
3
 
4
- __version__ = "0.20.0"
4
+ __version__ = "0.20.1"
5
5
 
6
6
  __all__ = [
7
7
  "Admin",
@@ -403,16 +403,16 @@ class ModelView(BaseView, metaclass=ModelViewMeta):
403
403
  Normally, objects have three save options:
404
404
  ``Save`, `Save and continue editing` and `Save and add another`.
405
405
 
406
- If save_as is True, `Save and add another` will be replaced
407
- by a `Save as new` button
408
- that creates a new object (with a new ID)
406
+ If save_as is True, `Save and add another` will be replaced
407
+ by a `Save as new` button
408
+ that creates a new object (with a new ID)
409
409
  rather than updating the existing object.
410
410
 
411
411
  By default, `save_as` is set to `False`.
412
412
  """
413
413
 
414
414
  save_as_continue: ClassVar[bool] = True
415
- """When `save_as=True`, the default redirect after saving the new object
415
+ """When `save_as=True`, the default redirect after saving the new object
416
416
  is to the edit view for that object.
417
417
  If you set `save_as_continue=False`, the redirect will be to the list view.
418
418
 
@@ -1194,14 +1194,16 @@ class ModelView(BaseView, metaclass=ModelViewMeta):
1194
1194
  ) -> StreamingResponse:
1195
1195
  async def generate() -> AsyncGenerator[str, None]:
1196
1196
  yield "["
1197
- separator = "," if len(data) > 1 else ""
1197
+ len_data = len(data)
1198
+ last_idx = len_data - 1
1199
+ separator = "," if len_data > 1 else ""
1198
1200
 
1199
- for row in data:
1201
+ for idx, row in enumerate(data):
1200
1202
  row_dict = {
1201
- name: await self.get_prop_value(row, name)
1203
+ name: str(await self.get_prop_value(row, name))
1202
1204
  for name in self._export_prop_names
1203
1205
  }
1204
- yield json.dumps(row_dict) + separator
1206
+ yield json.dumps(row_dict) + (separator if idx < last_idx else "")
1205
1207
 
1206
1208
  yield "]"
1207
1209
 
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes