brilliance-admin 0.43.6__tar.gz → 0.43.7__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 (125) hide show
  1. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/PKG-INFO +18 -15
  2. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/README.md +16 -13
  3. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/sqlalchemy/__init__.py +1 -0
  4. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/sqlalchemy/autocomplete.py +6 -2
  5. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/sqlalchemy/fields.py +7 -5
  6. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/category.py +2 -2
  7. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/group.py +2 -2
  8. brilliance_admin-0.43.6/brilliance_admin/static/index-D9axz5zK.js → brilliance_admin-0.43.7/brilliance_admin/static/index-BnnESruI.js +130 -130
  9. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/templates/index.html +1 -1
  10. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin.egg-info/PKG-INFO +18 -15
  11. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin.egg-info/SOURCES.txt +1 -1
  12. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/sections/models.py +4 -0
  13. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/sections/payments.py +0 -3
  14. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/sections/terminal.py +2 -1
  15. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/pyproject.toml +2 -2
  16. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/uv.lock +1 -1
  17. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/.configs/docker/Dockerfile +0 -0
  18. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/.configs/docker/docker-compose.yml +0 -0
  19. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/.configs/nginx/example.conf +0 -0
  20. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/.env +0 -0
  21. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/.github/workflows/certbot.yml +0 -0
  22. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/.github/workflows/deploy.yml +0 -0
  23. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/.github/workflows/install-docker.yml +0 -0
  24. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/.gitignore +0 -0
  25. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/.isort.cfg +0 -0
  26. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/.python-version +0 -0
  27. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/LICENSE +0 -0
  28. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/__init__.py +0 -0
  29. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/api/__init__.py +0 -0
  30. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/api/routers.py +0 -0
  31. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/api/utils.py +0 -0
  32. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/api/views/__init__.py +0 -0
  33. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/api/views/auth.py +0 -0
  34. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/api/views/autocomplete.py +0 -0
  35. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/api/views/graphs.py +0 -0
  36. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/api/views/index.py +0 -0
  37. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/api/views/schema.py +0 -0
  38. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/api/views/settings.py +0 -0
  39. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/api/views/table.py +0 -0
  40. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/auth.py +0 -0
  41. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/docs.py +0 -0
  42. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/exceptions.py +0 -0
  43. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/__init__.py +0 -0
  44. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/sqlalchemy/auth.py +0 -0
  45. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/sqlalchemy/fields_schema.py +0 -0
  46. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/sqlalchemy/table/__init__.py +0 -0
  47. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/sqlalchemy/table/base.py +0 -0
  48. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/sqlalchemy/table/create.py +0 -0
  49. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/sqlalchemy/table/delete.py +0 -0
  50. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/sqlalchemy/table/list.py +0 -0
  51. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/sqlalchemy/table/retrieve.py +0 -0
  52. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/integrations/sqlalchemy/table/update.py +0 -0
  53. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/locales/en.yml +0 -0
  54. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/locales/ru.yml +0 -0
  55. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/__init__.py +0 -0
  56. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/admin_schema.py +0 -0
  57. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/graphs/__init__.py +0 -0
  58. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/graphs/category_graphs.py +0 -0
  59. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/table/__init__.py +0 -0
  60. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/table/admin_action.py +0 -0
  61. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/table/category_table.py +0 -0
  62. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/table/fields/__init__.py +0 -0
  63. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/table/fields/base.py +0 -0
  64. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/table/fields/function_field.py +0 -0
  65. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/table/fields_schema.py +0 -0
  66. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/schema/table/table_models.py +0 -0
  67. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/index-vlBToOhT.css +0 -0
  68. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/materialdesignicons-webfont-CYDMK1kx.woff2 +0 -0
  69. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/materialdesignicons-webfont-CgCzGbLl.woff +0 -0
  70. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/materialdesignicons-webfont-D3kAzl71.ttf +0 -0
  71. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/materialdesignicons-webfont-DttUABo4.eot +0 -0
  72. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/dark-first/content.min.css +0 -0
  73. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/dark-first/skin.min.css +0 -0
  74. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/dark-slim/content.min.css +0 -0
  75. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/dark-slim/skin.min.css +0 -0
  76. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/img/example.png +0 -0
  77. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/img/tinymce.woff2 +0 -0
  78. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/lightgray/content.min.css +0 -0
  79. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/lightgray/fonts/tinymce.woff +0 -0
  80. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/lightgray/skin.min.css +0 -0
  81. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/plugins/accordion/css/accordion.css +0 -0
  82. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/plugins/accordion/plugin.js +0 -0
  83. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/plugins/codesample/css/prism.css +0 -0
  84. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/plugins/customLink/css/link.css +0 -0
  85. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/plugins/customLink/plugin.js +0 -0
  86. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/tinymce/tinymce.min.js +0 -0
  87. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/static/vanilla-picker-B6E6ObS_.js +0 -0
  88. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/translations.py +0 -0
  89. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin/utils.py +0 -0
  90. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin.egg-info/dependency_links.txt +0 -0
  91. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin.egg-info/requires.txt +0 -0
  92. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/brilliance_admin.egg-info/top_level.txt +0 -0
  93. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/README.md +0 -0
  94. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/__init__.py +0 -0
  95. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/locales/en.yml +0 -0
  96. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/locales/ru.yml +0 -0
  97. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/main.py +0 -0
  98. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/sections/__init__.py +0 -0
  99. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/sections/currency.py +0 -0
  100. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/sections/graphs.py +0 -0
  101. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/sections/merchant.py +0 -0
  102. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/sections/users.py +0 -0
  103. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/sqlite.py +0 -0
  104. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/static/favicon.ico +0 -0
  105. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/static/favicon.jpg +0 -0
  106. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/static/logo-outline.png +0 -0
  107. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/static/logo.png +0 -0
  108. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/example/utils.py +0 -0
  109. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/screenshots/PC-graphs.jpeg +0 -0
  110. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/screenshots/PC-table.jpeg +0 -0
  111. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/screenshots/iPad-edit.jpeg +0 -0
  112. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/screenshots/iPhone 15-edit.jpeg +0 -0
  113. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/screenshots/iPhone 15-login.jpeg +0 -0
  114. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/screenshots/websitemockupgenerator.png +0 -0
  115. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/setup.cfg +0 -0
  116. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/tests/__init__.py +0 -0
  117. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/tests/conftest.py +0 -0
  118. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/tests/test_action.py +0 -0
  119. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/tests/test_payments_fields_schema.py +0 -0
  120. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/tests/test_settings.py +0 -0
  121. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/tests/test_sqlalcmeny_auth.py +0 -0
  122. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/tests/test_sqlalcmeny_crud.py +0 -0
  123. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/tests/test_sqlalcmeny_filters.py +0 -0
  124. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/tests/test_sqlalcmeny_schema.py +0 -0
  125. {brilliance_admin-0.43.6 → brilliance_admin-0.43.7}/tests/test_translations.py +0 -0
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: brilliance-admin
3
- Version: 0.43.6
4
- Summary: Simple and lightweight admin panel framework powered by FastAPI and Vue3 Vuetify together.. Some call it heavenly in its brilliance.
3
+ Version: 0.43.7
4
+ Summary: Simple and lightweight admin panel framework powered by FastAPI and Vue3 Vuetify together. Some call it heavenly in its brilliance.
5
5
  License-Expression: AGPL-3.0
6
6
  Requires-Python: >=3.10
7
7
  Description-Content-Type: text/markdown
@@ -76,9 +76,11 @@ Focused on simplified, but rich configuration.
76
76
  * **SQLAlchemy** - schema autogeneration for tables + CRUD operations + authorization
77
77
 
78
78
  **Planned:**
79
- * Role-based access control system
80
- * Nested data support for creation and detail views
81
- * Django ORM inegration
79
+ * Dashboard features
80
+ * Role-based access permissions system via interface
81
+ * Backend interface for storing and viewing action history in the admin interface
82
+ * Nested data support for creation and detail views (inline editing), nested CRUD workflows
83
+ * Django ORM integration
82
84
 
83
85
  ## How to use it
84
86
 
@@ -202,13 +204,14 @@ auth = sqlalchemy.SQLAlchemyJWTAdminAuthentication(
202
204
 
203
205
  ## Comparison of Similar Projects
204
206
 
205
- | Criterion | Brilliance Admin | Django Admin/Unfold | FastAPI Admin | Starlette Admin |
206
- |---------|------------------|---------------|---------------|-----------------|
207
- | Base framework | FastAPI | Django | FastAPI | Starlette / FastAPI |
208
- | Rendering model | Prebuilt Vue 3 + Vuetify SPA + Jinja2 | Server-side Django templates | Server-side Jinja2 templates + Tabler UI | Server-side Jinja2 templates + Tabler UI |
209
- | Frontend architecture | Separate frontend (SPA) | Classic server-rendered UI | Server-rendered UI with JS interactivity | Server-rendered UI with JS interactivity |
210
- | Data source | Any source + SQLAlchemy | Django ORM | Tortoise ORM | Any source + SQLAlchemy, MongoDB |
211
- | Multiple databases per model | Yes | Database routers | No (global engine) | Yes (session per ModelView) |
212
- | Schema generation | User-defined format | From Django models | From ORM models | User-defined format |
213
- | Async support | Yes | No | Yes | Yes |
214
- | API-first approach | Yes | No | Partially | Partially |
207
+ | Criterion | Brilliance Admin | Django Admin | FastAPI Admin | Starlette Admin | SQLAdmin |
208
+ |---------|------------------|---------------------|---------------|-----------------|----------|
209
+ | Base framework | FastAPI | Django | FastAPI | Starlette / FastAPI | FastAPI / Starlette |
210
+ | Rendering model | Prebuilt Vue 3 + Vuetify SPA + Jinja2 | Server-side Django templates | Server-side Jinja2 templates + Tabler UI | Server-side Jinja2 templates + Tabler UI | Server-side Jinja2 templates + Bootstrap |
211
+ | Frontend architecture | Separate frontend (SPA) | Classic server-rendered UI | Server-rendered UI with JS interactivity | Server-rendered UI with JS interactivity | Server-rendered UI |
212
+ | Data source | Any source + SQLAlchemy | Django ORM | Tortoise ORM | Any source + SQLAlchemy, MongoDB | SQLAlchemy |
213
+ | Multiple databases per model | Yes | Database routers | No (global engine) | Yes (session per ModelView) | No (single engine per Admin) |
214
+ | Schema generation | User-defined format | From Django models | From ORM models | User-defined format | From SQLAlchemy models |
215
+ | Async support | Yes | No | Yes | Yes | Yes |
216
+ | API-first approach | Yes | No | Partially | Partially | No |
217
+ | Built-in Localization | Yes | Yes | No | No | No |
@@ -45,9 +45,11 @@ Focused on simplified, but rich configuration.
45
45
  * **SQLAlchemy** - schema autogeneration for tables + CRUD operations + authorization
46
46
 
47
47
  **Planned:**
48
- * Role-based access control system
49
- * Nested data support for creation and detail views
50
- * Django ORM inegration
48
+ * Dashboard features
49
+ * Role-based access permissions system via interface
50
+ * Backend interface for storing and viewing action history in the admin interface
51
+ * Nested data support for creation and detail views (inline editing), nested CRUD workflows
52
+ * Django ORM integration
51
53
 
52
54
  ## How to use it
53
55
 
@@ -171,13 +173,14 @@ auth = sqlalchemy.SQLAlchemyJWTAdminAuthentication(
171
173
 
172
174
  ## Comparison of Similar Projects
173
175
 
174
- | Criterion | Brilliance Admin | Django Admin/Unfold | FastAPI Admin | Starlette Admin |
175
- |---------|------------------|---------------|---------------|-----------------|
176
- | Base framework | FastAPI | Django | FastAPI | Starlette / FastAPI |
177
- | Rendering model | Prebuilt Vue 3 + Vuetify SPA + Jinja2 | Server-side Django templates | Server-side Jinja2 templates + Tabler UI | Server-side Jinja2 templates + Tabler UI |
178
- | Frontend architecture | Separate frontend (SPA) | Classic server-rendered UI | Server-rendered UI with JS interactivity | Server-rendered UI with JS interactivity |
179
- | Data source | Any source + SQLAlchemy | Django ORM | Tortoise ORM | Any source + SQLAlchemy, MongoDB |
180
- | Multiple databases per model | Yes | Database routers | No (global engine) | Yes (session per ModelView) |
181
- | Schema generation | User-defined format | From Django models | From ORM models | User-defined format |
182
- | Async support | Yes | No | Yes | Yes |
183
- | API-first approach | Yes | No | Partially | Partially |
176
+ | Criterion | Brilliance Admin | Django Admin | FastAPI Admin | Starlette Admin | SQLAdmin |
177
+ |---------|------------------|---------------------|---------------|-----------------|----------|
178
+ | Base framework | FastAPI | Django | FastAPI | Starlette / FastAPI | FastAPI / Starlette |
179
+ | Rendering model | Prebuilt Vue 3 + Vuetify SPA + Jinja2 | Server-side Django templates | Server-side Jinja2 templates + Tabler UI | Server-side Jinja2 templates + Tabler UI | Server-side Jinja2 templates + Bootstrap |
180
+ | Frontend architecture | Separate frontend (SPA) | Classic server-rendered UI | Server-rendered UI with JS interactivity | Server-rendered UI with JS interactivity | Server-rendered UI |
181
+ | Data source | Any source + SQLAlchemy | Django ORM | Tortoise ORM | Any source + SQLAlchemy, MongoDB | SQLAlchemy |
182
+ | Multiple databases per model | Yes | Database routers | No (global engine) | Yes (session per ModelView) | No (single engine per Admin) |
183
+ | Schema generation | User-defined format | From Django models | From ORM models | User-defined format | From SQLAlchemy models |
184
+ | Async support | Yes | No | Yes | Yes | Yes |
185
+ | API-first approach | Yes | No | Partially | Partially | No |
186
+ | Built-in Localization | Yes | Yes | No | No | No |
@@ -1,5 +1,6 @@
1
1
  # pylint: disable=wildcard-import, unused-wildcard-import, unused-import
2
2
  # flake8: noqa: F405
3
+ from .fields import SQLAlchemyRelatedField
3
4
  from .auth import SQLAlchemyJWTAdminAuthentication
4
5
  from .autocomplete import SQLAlchemyAdminAutocompleteMixin
5
6
  from .fields_schema import SQLAlchemyFieldsSchema
@@ -32,7 +32,11 @@ class SQLAlchemyAdminAutocompleteMixin:
32
32
  if not field:
33
33
  raise Exception(f'Field "{data.field_slug}" is not found')
34
34
 
35
- async with self.db_async_session() as session:
36
- results = await field.autocomplete(self.model, data, user, extra={'db_session': session})
35
+ results = await field.autocomplete(
36
+ self.model,
37
+ data,
38
+ user,
39
+ extra={'db_async_session': self.db_async_session},
40
+ )
37
41
 
38
42
  return AutocompleteResult(results=results)
@@ -43,7 +43,7 @@ class SQLAlchemyRelatedField(TableField):
43
43
  # - для доступа к связи через ORM
44
44
  # getattr(record, rel_name)
45
45
  # - для записи и чтения связанных объектов
46
- rel_name: str | None = None
46
+ rel_name: str | None
47
47
 
48
48
  # Класс связанной SQLAlchemy-модели.
49
49
  # Откуда берётся:
@@ -101,11 +101,11 @@ class SQLAlchemyRelatedField(TableField):
101
101
  from sqlalchemy import select
102
102
  from sqlalchemy.sql import expression
103
103
 
104
- if extra is None or extra.get('db_session') is None:
105
- msg = f'SQLAlchemyRelatedField.autocomplete {type(self).__name__} requires extra["db_session"] (AsyncSession)'
104
+ if extra is None or extra.get('db_async_session') is None:
105
+ msg = f'SQLAlchemyRelatedField.autocomplete {type(self).__name__} requires extra["db_async_session"] (AsyncSession)'
106
106
  raise AttributeError(msg)
107
107
 
108
- session = extra['db_session']
108
+ db_async_session = extra['db_async_session']
109
109
 
110
110
  results = []
111
111
 
@@ -125,7 +125,9 @@ class SQLAlchemyRelatedField(TableField):
125
125
  if existed_choices and hasattr(target_model, 'id'):
126
126
  stmt = stmt.where(getattr(target_model, 'id').in_(existed_choices) | expression.true())
127
127
 
128
- records = (await session.execute(stmt)).scalars().all()
128
+ async with db_async_session() as session:
129
+ records = (await session.execute(stmt)).scalars().all()
130
+
129
131
  for record in records:
130
132
  results.append(Record(key=getattr(record, 'id'), title=str(record)))
131
133
 
@@ -7,7 +7,7 @@ from pydantic_core import core_schema
7
7
 
8
8
  from brilliance_admin.auth import UserABC
9
9
  from brilliance_admin.translations import LanguageContext
10
- from brilliance_admin.utils import DataclassBase, SupportsStr
10
+ from brilliance_admin.utils import DataclassBase, SupportsStr, humanize_field_name
11
11
 
12
12
 
13
13
  # pylint: disable=too-many-instance-attributes
@@ -125,7 +125,7 @@ class Category(abc.ABC):
125
125
 
126
126
  def generate_schema(self, user: UserABC, language_context: LanguageContext) -> CategorySchemaData:
127
127
  return CategorySchemaData(
128
- title=language_context.get_text(self.title) or self.slug,
128
+ title=language_context.get_text(self.title) or humanize_field_name(self.slug),
129
129
  description=language_context.get_text(self.description),
130
130
  icon=self.icon,
131
131
  type=self._type_slug,
@@ -6,7 +6,7 @@ from pydantic.dataclasses import dataclass
6
6
  from brilliance_admin.auth import UserABC
7
7
  from brilliance_admin.schema.category import Category, CategorySchemaData
8
8
  from brilliance_admin.translations import LanguageContext
9
- from brilliance_admin.utils import DataclassBase, SupportsStr, get_logger
9
+ from brilliance_admin.utils import DataclassBase, SupportsStr, get_logger, humanize_field_name
10
10
 
11
11
  logger = get_logger()
12
12
 
@@ -36,7 +36,7 @@ class Group(abc.ABC):
36
36
 
37
37
  def generate_schema(self, user: UserABC, language_context: LanguageContext) -> GroupSchemaData:
38
38
  result = GroupSchemaData(
39
- title=language_context.get_text(self.title) or self.slug,
39
+ title=language_context.get_text(self.title) or humanize_field_name(self.slug),
40
40
  description=language_context.get_text(self.description),
41
41
  icon=self.icon,
42
42
  categories={},