brilliance-admin 0.44.10__tar.gz → 0.44.12__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 (88) hide show
  1. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/PKG-INFO +1 -1
  2. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/api/routers.py +2 -2
  3. brilliance_admin-0.44.10/brilliance_admin/api/views/graphs.py → brilliance_admin-0.44.12/brilliance_admin/api/views/dashboard.py +5 -5
  4. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/schema/__init__.py +1 -1
  5. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/schema/admin_schema.py +4 -0
  6. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/schema/category.py +2 -2
  7. brilliance_admin-0.44.12/brilliance_admin/schema/dashboard/__init__.py +1 -0
  8. brilliance_admin-0.44.12/brilliance_admin/schema/dashboard/category_dashboard.py +87 -0
  9. brilliance_admin-0.44.10/brilliance_admin/static/index-DToqsJy6.js → brilliance_admin-0.44.12/brilliance_admin/static/index-8ahvKI6W.js +192 -192
  10. brilliance_admin-0.44.10/brilliance_admin/static/index-P_wdMBbz.css → brilliance_admin-0.44.12/brilliance_admin/static/index-B8JOx1Ps.css +1 -1
  11. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/templates/index.html +2 -2
  12. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/translations.py +3 -0
  13. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin.egg-info/PKG-INFO +1 -1
  14. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin.egg-info/SOURCES.txt +5 -5
  15. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/pyproject.toml +1 -1
  16. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/tests/test_payments_fields_schema.py +1 -1
  17. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/tests/test_settings.py +1 -0
  18. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/tests/test_sqlalcmeny_schema.py +1 -1
  19. brilliance_admin-0.44.10/brilliance_admin/schema/graphs/__init__.py +0 -1
  20. brilliance_admin-0.44.10/brilliance_admin/schema/graphs/category_graphs.py +0 -50
  21. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/LICENSE +0 -0
  22. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/README.md +0 -0
  23. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/__init__.py +0 -0
  24. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/api/__init__.py +0 -0
  25. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/api/utils.py +0 -0
  26. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/api/views/__init__.py +0 -0
  27. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/api/views/auth.py +0 -0
  28. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/api/views/autocomplete.py +0 -0
  29. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/api/views/index.py +0 -0
  30. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/api/views/schema.py +0 -0
  31. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/api/views/settings.py +0 -0
  32. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/api/views/table.py +0 -0
  33. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/auth.py +0 -0
  34. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/docs.py +0 -0
  35. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/exceptions.py +0 -0
  36. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/__init__.py +0 -0
  37. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/sqlalchemy/__init__.py +0 -0
  38. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/sqlalchemy/auth.py +0 -0
  39. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/sqlalchemy/autocomplete.py +0 -0
  40. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/sqlalchemy/fields.py +0 -0
  41. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/sqlalchemy/fields_schema.py +0 -0
  42. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/sqlalchemy/table/__init__.py +0 -0
  43. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/sqlalchemy/table/base.py +0 -0
  44. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/sqlalchemy/table/create.py +0 -0
  45. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/sqlalchemy/table/delete.py +0 -0
  46. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/sqlalchemy/table/list.py +0 -0
  47. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/sqlalchemy/table/retrieve.py +0 -0
  48. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/integrations/sqlalchemy/table/update.py +0 -0
  49. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/locales/en.yml +0 -0
  50. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/locales/ru.yml +0 -0
  51. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/schema/table/__init__.py +0 -0
  52. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/schema/table/admin_action.py +0 -0
  53. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/schema/table/category_table.py +0 -0
  54. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/schema/table/fields/__init__.py +0 -0
  55. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/schema/table/fields/base.py +0 -0
  56. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/schema/table/fields/function_field.py +0 -0
  57. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/schema/table/fields_schema.py +0 -0
  58. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/schema/table/table_models.py +0 -0
  59. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/materialdesignicons-webfont-CYDMK1kx.woff2 +0 -0
  60. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/materialdesignicons-webfont-CgCzGbLl.woff +0 -0
  61. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/materialdesignicons-webfont-D3kAzl71.ttf +0 -0
  62. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/materialdesignicons-webfont-DttUABo4.eot +0 -0
  63. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/dark-first/content.min.css +0 -0
  64. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/dark-first/skin.min.css +0 -0
  65. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/dark-slim/content.min.css +0 -0
  66. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/dark-slim/skin.min.css +0 -0
  67. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/img/example.png +0 -0
  68. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/img/tinymce.woff2 +0 -0
  69. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/lightgray/content.min.css +0 -0
  70. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/lightgray/fonts/tinymce.woff +0 -0
  71. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/lightgray/skin.min.css +0 -0
  72. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/plugins/accordion/css/accordion.css +0 -0
  73. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/plugins/accordion/plugin.js +0 -0
  74. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/plugins/codesample/css/prism.css +0 -0
  75. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/plugins/customLink/css/link.css +0 -0
  76. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/plugins/customLink/plugin.js +0 -0
  77. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/tinymce/tinymce.min.js +0 -0
  78. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/static/vanilla-picker-B6E6ObS_.js +0 -0
  79. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin/utils.py +0 -0
  80. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin.egg-info/dependency_links.txt +0 -0
  81. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin.egg-info/requires.txt +0 -0
  82. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/brilliance_admin.egg-info/top_level.txt +0 -0
  83. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/setup.cfg +0 -0
  84. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/tests/test_action.py +0 -0
  85. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/tests/test_sqlalcmeny_auth.py +0 -0
  86. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/tests/test_sqlalcmeny_crud.py +0 -0
  87. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/tests/test_sqlalcmeny_filters.py +0 -0
  88. {brilliance_admin-0.44.10 → brilliance_admin-0.44.12}/tests/test_translations.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: brilliance-admin
3
- Version: 0.44.10
3
+ Version: 0.44.12
4
4
  Summary: Simple and lightweight data managment framework powered by FastAPI and Vue3 Vuetify all-in-one. Some call it heavenly in its brilliance.
5
5
  License-Expression: MIT
6
6
  Requires-Python: >=3.10
@@ -4,7 +4,7 @@ from .views.schema import router as schema_router
4
4
  from .views.table import router as schema_table
5
5
  from .views.auth import router as schema_auth
6
6
  from .views.autocomplete import router as schema_autocomplete
7
- from .views.graphs import router as schema_graphs
7
+ from .views.dashboard import router as schema_dashboard
8
8
  from .views.settings import router as schema_settings
9
9
  from .views.index import router as schema_index
10
10
 
@@ -13,6 +13,6 @@ brilliance_admin_router.include_router(schema_router)
13
13
  brilliance_admin_router.include_router(schema_table)
14
14
  brilliance_admin_router.include_router(schema_auth)
15
15
  brilliance_admin_router.include_router(schema_autocomplete)
16
- brilliance_admin_router.include_router(schema_graphs)
16
+ brilliance_admin_router.include_router(schema_dashboard)
17
17
  brilliance_admin_router.include_router(schema_settings)
18
18
  brilliance_admin_router.include_router(schema_index)
@@ -4,21 +4,21 @@ from fastapi.responses import JSONResponse
4
4
  from brilliance_admin.api.utils import get_category
5
5
  from brilliance_admin.exceptions import AdminAPIException
6
6
  from brilliance_admin.schema.admin_schema import AdminSchema
7
- from brilliance_admin.schema.graphs.category_graphs import CategoryGraphs, GraphData, GraphsDataResult
7
+ from brilliance_admin.schema.dashboard.category_dashboard import CategoryDashboard, DashboardData, DashboardContainer
8
8
  from brilliance_admin.translations import LanguageContext
9
9
  from brilliance_admin.utils import get_logger
10
10
 
11
- router = APIRouter(prefix="/graph", tags=["Category - Graph"])
11
+ router = APIRouter(prefix="/dashboard", tags=["Category - Dashboard"])
12
12
 
13
13
  logger = get_logger()
14
14
 
15
15
 
16
16
  @router.post(path='/{group}/{category}/')
17
- async def graph_data(request: Request, group: str, category: str, data: GraphData) -> GraphsDataResult:
17
+ async def dashboard_data(request: Request, group: str, category: str, data: DashboardData) -> DashboardContainer:
18
18
  schema: AdminSchema = request.app.state.schema
19
- schema_category, user = await get_category(request, group, category, check_type=CategoryGraphs)
19
+ schema_category, user = await get_category(request, group, category, check_type=CategoryDashboard)
20
20
 
21
- result: GraphsDataResult = await schema_category.get_data(data, user)
21
+ result: DashboardContainer = await schema_category.get_data(data, user)
22
22
 
23
23
  language_slug = request.headers.get('Accept-Language')
24
24
  language_context: LanguageContext = schema.get_language_context(language_slug)
@@ -2,6 +2,6 @@
2
2
  # flake8: noqa: F405
3
3
  from .admin_schema import AdminSchema, AdminSchemaData
4
4
  from .category import CategoryGroup, CategoryLink
5
- from .graphs import *
5
+ from .dashboard import *
6
6
  from .table import *
7
7
  from .table.category_table import CategoryTable
@@ -40,6 +40,7 @@ class AdminSettingsData(DataclassBase):
40
40
  login_greetings_message: SupportsStr | None
41
41
  navbar_density: str
42
42
  languages: Dict[str, str] | None
43
+ main_page: str | None = None
43
44
 
44
45
 
45
46
  @dataclass
@@ -54,6 +55,8 @@ class AdminSchema:
54
55
  categories: List[BaseCategory]
55
56
  auth: Any
56
57
 
58
+ main_page: str | None = None
59
+
57
60
  title: SupportsStr | None = 'Admin'
58
61
  description: SupportsStr | None = None
59
62
  login_greetings_message: SupportsStr | None = None
@@ -118,6 +121,7 @@ class AdminSchema:
118
121
 
119
122
  return AdminSettingsData(
120
123
  title=self.title,
124
+ main_page=self.main_page,
121
125
  description=self.description,
122
126
  login_greetings_message=self.login_greetings_message,
123
127
  navbar_density=self.navbar_density,
@@ -95,7 +95,7 @@ class TableInfoSchemaData(DataclassBase):
95
95
 
96
96
 
97
97
  @dataclass
98
- class GraphInfoSchemaData(DataclassBase):
98
+ class DashboardInfoSchemaData(DataclassBase):
99
99
  search_enabled: bool
100
100
  search_help: str | None
101
101
 
@@ -112,7 +112,7 @@ class CategorySchemaData(DataclassBase):
112
112
  categories: dict = Field(default_factory=dict)
113
113
 
114
114
  table_info: TableInfoSchemaData | None = None
115
- graph_info: GraphInfoSchemaData | None = None
115
+ dashboard_info: DashboardInfoSchemaData | None = None
116
116
 
117
117
  link: str | None = None
118
118
 
@@ -0,0 +1 @@
1
+ from .category_dashboard import CategoryDashboard
@@ -0,0 +1,87 @@
1
+ from typing import Any, Dict, List
2
+
3
+ from pydantic import BaseModel, Field, field_serializer
4
+
5
+ from brilliance_admin.schema.category import BaseCategory, DashboardInfoSchemaData
6
+ from brilliance_admin.schema.table.fields_schema import FieldsSchema
7
+ from brilliance_admin.translations import LanguageContext
8
+ from brilliance_admin.utils import SupportsStr
9
+
10
+
11
+ class DashboardData(BaseModel):
12
+ search: str | None = None
13
+ filters: Dict[str, Any] = Field(default_factory=dict)
14
+
15
+
16
+ class ChartData(BaseModel):
17
+ data: dict
18
+ options: dict
19
+ width: int | None = None
20
+ height: int = 50
21
+ type: str = 'line'
22
+
23
+ component_type: str = 'chart'
24
+
25
+
26
+ class Subcard(BaseModel):
27
+ title: SupportsStr
28
+ value: SupportsStr
29
+ color: str | None = None
30
+
31
+
32
+ class PeriodGraph(BaseModel):
33
+ title: SupportsStr
34
+ value: SupportsStr
35
+ change: int | float | None = None
36
+ subcards: List[Subcard] = Field(default_factory=list)
37
+ values: List[List[int | float]] = Field(default_factory=list)
38
+ vertical: List[SupportsStr] = Field(default_factory=list)
39
+ horizontal: List[SupportsStr] = Field(default_factory=list)
40
+ component_type: str = 'period_graph'
41
+
42
+ @field_serializer('horizontal', 'vertical')
43
+ def serialize_str_list(self, val: list) -> list:
44
+ return [str(v) for v in val]
45
+
46
+
47
+ class SmallGraph(BaseModel):
48
+ title: SupportsStr
49
+ value: SupportsStr
50
+ change: int | float | None = None
51
+ points: Dict[SupportsStr, float | int] = Field(default_factory=list)
52
+ component_type: str = 'small_graph'
53
+
54
+
55
+ class DashboardContainer(BaseModel):
56
+ cols: int | None = None
57
+ md: int | None = None
58
+ lg: int | None = None
59
+ sm: int | None = None
60
+
61
+ component_type: str = 'container'
62
+ components: List[Any] = Field(default_factory=list)
63
+
64
+
65
+ class CategoryDashboard(BaseCategory):
66
+ _type_slug: str = 'dashboard'
67
+
68
+ search_enabled: bool = False
69
+ search_help: SupportsStr | None = None
70
+
71
+ table_filters: FieldsSchema | None = None
72
+
73
+ def generate_schema(self, user, language_context: LanguageContext) -> DashboardInfoSchemaData:
74
+ schema = super().generate_schema(user, language_context)
75
+ dashboard_info = DashboardInfoSchemaData(
76
+ search_enabled=self.search_enabled,
77
+ search_help=language_context.get_text(self.search_help),
78
+ )
79
+
80
+ if self.table_filters:
81
+ dashboard_info.table_filters = self.table_filters.generate_schema(user, language_context)
82
+
83
+ schema.dashboard_info = dashboard_info
84
+ return schema
85
+
86
+ async def get_data(self, data: DashboardData, user) -> DashboardContainer:
87
+ raise NotImplementedError('get_data is not implemented')