django-smartbase-admin 0.2.47__py3-none-any.whl → 1.0.38__py3-none-any.whl
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.
- django_smartbase_admin/actions/admin_action_list.py +80 -51
- django_smartbase_admin/actions/advanced_filters.py +55 -20
- django_smartbase_admin/admin/admin_base.py +477 -89
- django_smartbase_admin/admin/site.py +104 -34
- django_smartbase_admin/admin/widgets.py +598 -26
- django_smartbase_admin/apps.py +2 -0
- django_smartbase_admin/engine/actions.py +34 -16
- django_smartbase_admin/engine/admin_base_view.py +253 -115
- django_smartbase_admin/engine/configuration.py +186 -4
- django_smartbase_admin/engine/const.py +7 -0
- django_smartbase_admin/engine/dashboard.py +44 -23
- django_smartbase_admin/engine/fake_inline.py +44 -7
- django_smartbase_admin/engine/field.py +54 -10
- django_smartbase_admin/engine/field_formatter.py +32 -9
- django_smartbase_admin/engine/filter_widgets.py +356 -21
- django_smartbase_admin/engine/menu_item.py +8 -5
- django_smartbase_admin/engine/modal_view.py +12 -7
- django_smartbase_admin/engine/request.py +2 -0
- django_smartbase_admin/integration/__init__.py +0 -0
- django_smartbase_admin/integration/django_cms.py +43 -0
- django_smartbase_admin/locale/sk/LC_MESSAGES/django.mo +0 -0
- django_smartbase_admin/locale/sk/LC_MESSAGES/django.po +268 -37
- django_smartbase_admin/migrations/0005_sbadminuserconfiguration.py +26 -0
- django_smartbase_admin/migrations/0006_alter_sbadminuserconfiguration_color_scheme.py +18 -0
- django_smartbase_admin/models.py +22 -0
- django_smartbase_admin/monkeypatch/admin_readonly_field_monkeypatch.py +96 -0
- django_smartbase_admin/monkeypatch/fake_inline_monkeypatch.py +1 -1
- django_smartbase_admin/querysets.py +3 -0
- django_smartbase_admin/services/configuration.py +30 -0
- django_smartbase_admin/services/thread_local.py +6 -19
- django_smartbase_admin/services/views.py +82 -27
- django_smartbase_admin/services/xlsx_export.py +6 -0
- django_smartbase_admin/static/sb_admin/build/tailwind.config.js +1 -0
- django_smartbase_admin/static/sb_admin/build/tailwind_config_partials/colors.js +4 -0
- django_smartbase_admin/static/sb_admin/build/tailwind_config_partials/spacing.js +1 -0
- django_smartbase_admin/static/sb_admin/build/webpack.common.js +11 -8
- django_smartbase_admin/static/sb_admin/css/ckeditor/ckeditor_content_dark.css +208 -0
- django_smartbase_admin/static/sb_admin/css/coloris/coloris.min.css +1 -0
- django_smartbase_admin/static/sb_admin/dist/calendar.js +1 -0
- django_smartbase_admin/static/sb_admin/dist/calendar_style.css +1 -0
- django_smartbase_admin/static/sb_admin/dist/calendar_style.js +0 -0
- django_smartbase_admin/static/sb_admin/dist/chart.js +1 -1
- django_smartbase_admin/static/sb_admin/dist/main.js +1 -1
- django_smartbase_admin/static/sb_admin/dist/main_style.css +1 -1
- django_smartbase_admin/static/sb_admin/dist/table.js +1 -1
- django_smartbase_admin/static/sb_admin/dist/table.js.LICENSE.txt +9 -0
- django_smartbase_admin/static/sb_admin/dist/tree_widget.js +1 -0
- django_smartbase_admin/static/sb_admin/dist/tree_widget_style.css +1 -0
- django_smartbase_admin/static/sb_admin/dist/tree_widget_style.js +0 -0
- django_smartbase_admin/static/sb_admin/fancytree/jquery.fancytree-all-deps.min.js +1 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-csv.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-doc.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-docx.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-other.svg +13 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-pdf.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-ppt.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-xls.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-xlsx.svg +11 -0
- django_smartbase_admin/static/sb_admin/images/file_types/file-zip.svg +18 -0
- django_smartbase_admin/static/sb_admin/images/flags/de-at.png +0 -0
- django_smartbase_admin/static/sb_admin/images/flags/de-ch.png +0 -0
- django_smartbase_admin/static/sb_admin/images/logo_light.svg +21 -0
- django_smartbase_admin/static/sb_admin/js/coloris/coloris.min.js +6 -0
- django_smartbase_admin/static/sb_admin/js/fullcalendar.min.js +14804 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Bolt-one.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Calendar.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Caution.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Electric-drill.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Fire-extinguisher.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Gas.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Lightning-fill.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Moon.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Phone-telephone.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Printer.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Pull.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Sun-one.svg +3 -0
- django_smartbase_admin/static/sb_admin/sprites/sb_admin/Time.svg +3 -0
- django_smartbase_admin/static/sb_admin/src/css/_base.css +5 -1
- django_smartbase_admin/static/sb_admin/src/css/_colors.css +257 -82
- django_smartbase_admin/static/sb_admin/src/css/_components.css +66 -13
- django_smartbase_admin/static/sb_admin/src/css/_datepicker.css +8 -1
- django_smartbase_admin/static/sb_admin/src/css/_filer.css +60 -0
- django_smartbase_admin/static/sb_admin/src/css/_inlines.css +51 -10
- django_smartbase_admin/static/sb_admin/src/css/_tabulator.css +8 -2
- django_smartbase_admin/static/sb_admin/src/css/calendar.css +162 -0
- django_smartbase_admin/static/sb_admin/src/css/components/_button.css +41 -1
- django_smartbase_admin/static/sb_admin/src/css/components/_dropdown.css +26 -8
- django_smartbase_admin/static/sb_admin/src/css/components/_input.css +62 -20
- django_smartbase_admin/static/sb_admin/src/css/components/_modal.css +1 -1
- django_smartbase_admin/static/sb_admin/src/css/components/_query-builder.css +21 -2
- django_smartbase_admin/static/sb_admin/src/css/components/_toggle.css +12 -1
- django_smartbase_admin/static/sb_admin/src/css/components/_tooltip.css +8 -22
- django_smartbase_admin/static/sb_admin/src/css/style.css +17 -0
- django_smartbase_admin/static/sb_admin/src/css/tree_widget.css +411 -0
- django_smartbase_admin/static/sb_admin/src/js/autocomplete.js +63 -5
- django_smartbase_admin/static/sb_admin/src/js/calendar.js +56 -0
- django_smartbase_admin/static/sb_admin/src/js/chart.js +8 -22
- django_smartbase_admin/static/sb_admin/src/js/choices.js +18 -8
- django_smartbase_admin/static/sb_admin/src/js/datepicker.js +97 -336
- django_smartbase_admin/static/sb_admin/src/js/datepicker_plugins.js +357 -0
- django_smartbase_admin/static/sb_admin/src/js/main.js +307 -26
- django_smartbase_admin/static/sb_admin/src/js/multiselect.js +50 -41
- django_smartbase_admin/static/sb_admin/src/js/range.js +3 -2
- django_smartbase_admin/static/sb_admin/src/js/sb_ajax_params_tabulator_modifier.js +21 -0
- django_smartbase_admin/static/sb_admin/src/js/table.js +38 -13
- django_smartbase_admin/static/sb_admin/src/js/table_modules/advanced_filter_module.js +43 -20
- django_smartbase_admin/static/sb_admin/src/js/table_modules/data_edit_module.js +8 -10
- django_smartbase_admin/static/sb_admin/src/js/table_modules/filter_module.js +3 -3
- django_smartbase_admin/static/sb_admin/src/js/table_modules/header_tabs_module.js +11 -11
- django_smartbase_admin/static/sb_admin/src/js/table_modules/selection_module.js +28 -8
- django_smartbase_admin/static/sb_admin/src/js/table_modules/table_params_module.js +6 -0
- django_smartbase_admin/static/sb_admin/src/js/table_modules/views_module.js +19 -3
- django_smartbase_admin/static/sb_admin/src/js/tree_widget.js +406 -0
- django_smartbase_admin/static/sb_admin/src/js/utils.js +56 -21
- django_smartbase_admin/templates/sb_admin/actions/change_form.html +169 -117
- django_smartbase_admin/templates/sb_admin/actions/dashboard.html +2 -2
- django_smartbase_admin/templates/sb_admin/actions/delete_selected_confirmation.html +56 -32
- django_smartbase_admin/templates/sb_admin/actions/list.html +79 -42
- django_smartbase_admin/templates/sb_admin/actions/object_history.html +2 -2
- django_smartbase_admin/templates/sb_admin/actions/partials/action_link.html +14 -0
- django_smartbase_admin/templates/sb_admin/actions/partials/selected_rows_actions.html +2 -2
- django_smartbase_admin/templates/sb_admin/actions/partials/tabulator_header_v2.html +2 -2
- django_smartbase_admin/templates/sb_admin/actions/tree_list.html +63 -0
- django_smartbase_admin/templates/sb_admin/authentification/login_base.html +5 -1
- django_smartbase_admin/templates/sb_admin/components/columns.html +1 -1
- django_smartbase_admin/templates/sb_admin/components/filters_v2.html +99 -85
- django_smartbase_admin/templates/sb_admin/config/view.html +0 -1
- django_smartbase_admin/templates/sb_admin/dashboard/calendar_widget.html +69 -0
- django_smartbase_admin/templates/sb_admin/dashboard/chart_widget.html +21 -2
- django_smartbase_admin/templates/sb_admin/dashboard/list_widget.html +6 -0
- django_smartbase_admin/templates/sb_admin/dashboard/widget_base.html +1 -1
- django_smartbase_admin/templates/sb_admin/filter_widgets/advanced_filters/date_field.html +18 -8
- django_smartbase_admin/templates/sb_admin/filter_widgets/advanced_filters/multiple_choice_field.html +1 -1
- django_smartbase_admin/templates/sb_admin/filter_widgets/advanced_filters/tree_select_filter.html +2 -0
- django_smartbase_admin/templates/sb_admin/filter_widgets/date_field.html +18 -4
- django_smartbase_admin/templates/sb_admin/filter_widgets/multiple_choice_field.html +14 -0
- django_smartbase_admin/templates/sb_admin/filter_widgets/partials/clear.html +10 -5
- django_smartbase_admin/templates/sb_admin/filter_widgets/radio_choice_field.html +2 -2
- django_smartbase_admin/templates/sb_admin/filter_widgets/tree_select_filter.html +16 -0
- django_smartbase_admin/templates/sb_admin/includes/change_form_title.html +3 -1
- django_smartbase_admin/templates/sb_admin/includes/components.html +5 -1
- django_smartbase_admin/templates/sb_admin/includes/inline_fieldset.html +48 -39
- django_smartbase_admin/templates/sb_admin/includes/notifications.html +2 -1
- django_smartbase_admin/templates/sb_admin/includes/readonly_boolean_field.html +9 -0
- django_smartbase_admin/templates/sb_admin/includes/readonly_field.html +12 -0
- django_smartbase_admin/templates/sb_admin/includes/table_inline_delete_button.html +4 -5
- django_smartbase_admin/templates/sb_admin/inlines/stacked_inline.html +68 -40
- django_smartbase_admin/templates/sb_admin/inlines/table_inline.html +78 -36
- django_smartbase_admin/templates/sb_admin/integrations/filer/folder_list.html +18 -0
- django_smartbase_admin/templates/sb_admin/navigation.html +166 -158
- django_smartbase_admin/templates/sb_admin/partials/modal/modal_content.html +2 -6
- django_smartbase_admin/templates/sb_admin/sb_admin_base.html +49 -4
- django_smartbase_admin/templates/sb_admin/sb_admin_base_no_sidebar.html +35 -11
- django_smartbase_admin/templates/sb_admin/sb_admin_js_trans.html +3 -0
- django_smartbase_admin/templates/sb_admin/sprites/sb_admin.svg +1 -1
- django_smartbase_admin/templates/sb_admin/tailwind_whitelist.html +6 -3
- django_smartbase_admin/templates/sb_admin/widgets/array.html +0 -1
- django_smartbase_admin/templates/sb_admin/widgets/attributes.html +68 -0
- django_smartbase_admin/templates/sb_admin/widgets/autocomplete.html +13 -2
- django_smartbase_admin/templates/sb_admin/widgets/{checkbox_select.html → checkbox_dropdown.html} +2 -2
- django_smartbase_admin/templates/sb_admin/widgets/checkbox_group.html +15 -0
- django_smartbase_admin/templates/sb_admin/widgets/clearable_file_input.html +2 -2
- django_smartbase_admin/templates/sb_admin/widgets/color_field.html +30 -0
- django_smartbase_admin/templates/sb_admin/widgets/date.html +8 -1
- django_smartbase_admin/templates/sb_admin/widgets/filer_file.html +84 -0
- django_smartbase_admin/templates/sb_admin/widgets/html_read_only.html +1 -0
- django_smartbase_admin/templates/sb_admin/widgets/includes/related_item_buttons.html +38 -0
- django_smartbase_admin/templates/sb_admin/widgets/multiwidget.html +1 -1
- django_smartbase_admin/templates/sb_admin/widgets/radio.html +3 -2
- django_smartbase_admin/templates/sb_admin/widgets/radio_dropdown.html +30 -0
- django_smartbase_admin/templates/sb_admin/widgets/read_only_password_hash.html +3 -0
- django_smartbase_admin/templates/sb_admin/widgets/time.html +8 -1
- django_smartbase_admin/templates/sb_admin/widgets/toggle.html +1 -1
- django_smartbase_admin/templates/sb_admin/widgets/tree_base.html +59 -0
- django_smartbase_admin/templates/sb_admin/widgets/tree_select.html +24 -0
- django_smartbase_admin/templates/sb_admin/widgets/tree_select_inline.html +12 -0
- django_smartbase_admin/templatetags/sb_admin_tags.py +163 -4
- django_smartbase_admin/utils.py +22 -3
- django_smartbase_admin/views/dashboard_view.py +6 -0
- django_smartbase_admin/views/global_filter_view.py +8 -2
- django_smartbase_admin/views/translations_view.py +12 -5
- django_smartbase_admin/views/user_config_view.py +52 -0
- django_smartbase_admin-1.0.38.dist-info/METADATA +166 -0
- {django_smartbase_admin-0.2.47.dist-info → django_smartbase_admin-1.0.38.dist-info}/RECORD +186 -121
- {django_smartbase_admin-0.2.47.dist-info → django_smartbase_admin-1.0.38.dist-info}/WHEEL +1 -1
- django_smartbase_admin/templates/sb_admin/integrations/sorting/change_list.html +0 -401
- django_smartbase_admin-0.2.47.dist-info/METADATA +0 -25
- {django_smartbase_admin-0.2.47.dist-info → django_smartbase_admin-1.0.38.dist-info}/LICENSE.md +0 -0
|
@@ -2,6 +2,7 @@ from django.http import HttpResponse
|
|
|
2
2
|
from django.views.generic import FormView
|
|
3
3
|
from django_htmx.http import trigger_client_event
|
|
4
4
|
from django_smartbase_admin.actions.admin_action_list import SBAdminListAction
|
|
5
|
+
from django_smartbase_admin.engine.const import TABLE_RELOAD_DATA_EVENT_NAME
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
class ActionModalView(FormView):
|
|
@@ -19,7 +20,7 @@ class ActionModalView(FormView):
|
|
|
19
20
|
trigger_client_event(response, "hideModal", {})
|
|
20
21
|
trigger_client_event(
|
|
21
22
|
response,
|
|
22
|
-
|
|
23
|
+
TABLE_RELOAD_DATA_EVENT_NAME,
|
|
23
24
|
{},
|
|
24
25
|
)
|
|
25
26
|
return response
|
|
@@ -27,11 +28,15 @@ class ActionModalView(FormView):
|
|
|
27
28
|
def get_form_class(self):
|
|
28
29
|
form_class = super().get_form_class()
|
|
29
30
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
31
|
+
fake_form_class = type(
|
|
32
|
+
form_class.__name__,
|
|
33
|
+
(form_class,),
|
|
34
|
+
{
|
|
35
|
+
"view": self.view,
|
|
36
|
+
},
|
|
37
|
+
)
|
|
33
38
|
|
|
34
|
-
return
|
|
39
|
+
return fake_form_class
|
|
35
40
|
|
|
36
41
|
def post(self, request, *args, **kwargs):
|
|
37
42
|
form = self.get_form()
|
|
@@ -59,9 +64,9 @@ class ListActionModalView(ActionModalView):
|
|
|
59
64
|
return response
|
|
60
65
|
|
|
61
66
|
def get_selection_queryset(self, request, form):
|
|
62
|
-
list_action =
|
|
67
|
+
list_action = self.view.sbadmin_list_action_class(self.view, request)
|
|
63
68
|
return list_action.get_data_queryset().filter(
|
|
64
|
-
list_action.get_selection_queryset()
|
|
69
|
+
list_action.get_selection_queryset(), list_action.get_filter_from_request()
|
|
65
70
|
)
|
|
66
71
|
|
|
67
72
|
def process_form_valid_list_selection_queryset(
|
|
@@ -20,6 +20,7 @@ class SBAdminViewRequestData(object):
|
|
|
20
20
|
configuration = None
|
|
21
21
|
selected_view = None
|
|
22
22
|
session = None
|
|
23
|
+
additional_data = None
|
|
23
24
|
|
|
24
25
|
def __init__(
|
|
25
26
|
self,
|
|
@@ -47,6 +48,7 @@ class SBAdminViewRequestData(object):
|
|
|
47
48
|
self.request_method = request_method
|
|
48
49
|
self.global_filter = global_filter or {}
|
|
49
50
|
self.session = session or {}
|
|
51
|
+
self.additional_data = {}
|
|
50
52
|
|
|
51
53
|
def refresh_selected_view(self, request):
|
|
52
54
|
self.configuration = SBAdminConfigurationService.get_configuration(self)
|
|
File without changes
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
|
|
3
|
+
from django_smartbase_admin.admin.site import sb_admin_site
|
|
4
|
+
|
|
5
|
+
from django_smartbase_admin.admin.admin_base import SBAdmin
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class DjangoCMSPluginSBAdmin(SBAdmin):
|
|
9
|
+
initialised = False
|
|
10
|
+
list_display = []
|
|
11
|
+
|
|
12
|
+
def get_inline_instances(self, request, obj=None):
|
|
13
|
+
inline_instances = super().get_inline_instances(request, obj)
|
|
14
|
+
if not self.initialised:
|
|
15
|
+
for inline_instance in inline_instances:
|
|
16
|
+
inline_instance.init_view_static(
|
|
17
|
+
request.request_data.configuration,
|
|
18
|
+
inline_instance.model,
|
|
19
|
+
sb_admin_site,
|
|
20
|
+
)
|
|
21
|
+
self.initialised = True
|
|
22
|
+
return inline_instances
|
|
23
|
+
|
|
24
|
+
def get_sbadmin_fieldsets(self, request, object_id=None):
|
|
25
|
+
obj = self.model.objects.get(pk=object_id) if object_id else None
|
|
26
|
+
fieldsets = self.sbadmin_fieldsets or [
|
|
27
|
+
(
|
|
28
|
+
None,
|
|
29
|
+
{"fields": self.get_fields(request, obj)},
|
|
30
|
+
)
|
|
31
|
+
]
|
|
32
|
+
self.sbadmin_fieldsets = fieldsets
|
|
33
|
+
return fieldsets
|
|
34
|
+
|
|
35
|
+
def response_add(self, request, obj, **kwargs):
|
|
36
|
+
# response_add from CMSPluginBase
|
|
37
|
+
self.object_successfully_changed = True
|
|
38
|
+
return self.render_close_frame(request, obj)
|
|
39
|
+
|
|
40
|
+
def get_change_view_context(self, request, object_id) -> dict | dict[str, Any]:
|
|
41
|
+
return {
|
|
42
|
+
"show_back_button": True,
|
|
43
|
+
}
|
|
Binary file
|
|
@@ -7,7 +7,7 @@ msgid ""
|
|
|
7
7
|
msgstr ""
|
|
8
8
|
"Project-Id-Version: \n"
|
|
9
9
|
"Report-Msgid-Bugs-To: \n"
|
|
10
|
-
"POT-Creation-Date:
|
|
10
|
+
"POT-Creation-Date: 2025-09-11 16:32+0200\n"
|
|
11
11
|
"PO-Revision-Date: 2023-11-15 15:21+0100\n"
|
|
12
12
|
"Last-Translator: \n"
|
|
13
13
|
"Language-Team: \n"
|
|
@@ -18,9 +18,82 @@ msgstr ""
|
|
|
18
18
|
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
|
|
19
19
|
"X-Generator: Poedit 3.4.1\n"
|
|
20
20
|
|
|
21
|
+
msgid "Equal"
|
|
22
|
+
msgstr ""
|
|
23
|
+
|
|
24
|
+
msgid "Not equal"
|
|
25
|
+
msgstr ""
|
|
26
|
+
|
|
27
|
+
msgid "Less"
|
|
28
|
+
msgstr ""
|
|
29
|
+
|
|
30
|
+
msgid "Less or equal"
|
|
31
|
+
msgstr ""
|
|
32
|
+
|
|
33
|
+
msgid "Greater"
|
|
34
|
+
msgstr ""
|
|
35
|
+
|
|
36
|
+
msgid "Greater or equal"
|
|
37
|
+
msgstr ""
|
|
38
|
+
|
|
39
|
+
msgid "Between"
|
|
40
|
+
msgstr ""
|
|
41
|
+
|
|
42
|
+
msgid "Not between"
|
|
43
|
+
msgstr ""
|
|
44
|
+
|
|
45
|
+
msgid "In"
|
|
46
|
+
msgstr ""
|
|
47
|
+
|
|
48
|
+
msgid "Not in"
|
|
49
|
+
msgstr ""
|
|
50
|
+
|
|
51
|
+
msgid "Begins with"
|
|
52
|
+
msgstr ""
|
|
53
|
+
|
|
54
|
+
msgid "Not begins with"
|
|
55
|
+
msgstr ""
|
|
56
|
+
|
|
57
|
+
msgid "Contains"
|
|
58
|
+
msgstr ""
|
|
59
|
+
|
|
60
|
+
msgid "Not contains"
|
|
61
|
+
msgstr ""
|
|
62
|
+
|
|
63
|
+
msgid "End with"
|
|
64
|
+
msgstr ""
|
|
65
|
+
|
|
66
|
+
msgid "Not ends with"
|
|
67
|
+
msgstr ""
|
|
68
|
+
|
|
69
|
+
msgid "Is empty"
|
|
70
|
+
msgstr ""
|
|
71
|
+
|
|
72
|
+
msgid "Is null"
|
|
73
|
+
msgstr ""
|
|
74
|
+
|
|
75
|
+
msgid "Is not null"
|
|
76
|
+
msgstr ""
|
|
77
|
+
|
|
78
|
+
msgid "Before"
|
|
79
|
+
msgstr ""
|
|
80
|
+
|
|
81
|
+
msgid "After"
|
|
82
|
+
msgstr ""
|
|
83
|
+
|
|
84
|
+
msgid "In the last"
|
|
85
|
+
msgstr ""
|
|
86
|
+
|
|
87
|
+
msgid "In the next"
|
|
88
|
+
msgstr ""
|
|
89
|
+
|
|
21
90
|
msgid "Hold down “Control”, or “Command” on a Mac, to select more than one."
|
|
22
91
|
msgstr "Pre vybratie viacerých súborov podržte “Control”, alebo “Command” na Mac-u."
|
|
23
92
|
|
|
93
|
+
#, python-format
|
|
94
|
+
msgid "Change history: %s"
|
|
95
|
+
msgstr "História zmien: %s"
|
|
96
|
+
|
|
24
97
|
msgid "Clear"
|
|
25
98
|
msgstr "Vymazať"
|
|
26
99
|
|
|
@@ -30,6 +103,15 @@ msgstr "Aktuálne"
|
|
|
30
103
|
msgid "Change file"
|
|
31
104
|
msgstr "Zmeniť súbor"
|
|
32
105
|
|
|
106
|
+
msgid "Cannot set parent to itself"
|
|
107
|
+
msgstr ""
|
|
108
|
+
|
|
109
|
+
msgid "Cannot set parent to it's own child"
|
|
110
|
+
msgstr ""
|
|
111
|
+
|
|
112
|
+
msgid "Search..."
|
|
113
|
+
msgstr "Vyhľadať..."
|
|
114
|
+
|
|
33
115
|
msgid "Exit Reorder"
|
|
34
116
|
msgstr "Ukončiť preusporiadanie"
|
|
35
117
|
|
|
@@ -46,6 +128,9 @@ msgstr "Exportovať vybrané"
|
|
|
46
128
|
msgid "Delete Selected"
|
|
47
129
|
msgstr "Odstrániť vybrané"
|
|
48
130
|
|
|
131
|
+
msgid "No selection made."
|
|
132
|
+
msgstr "Výber je prázdny"
|
|
133
|
+
|
|
49
134
|
msgid "All"
|
|
50
135
|
msgstr "Všetky"
|
|
51
136
|
|
|
@@ -105,6 +190,34 @@ msgstr "Posledných 90 dní"
|
|
|
105
190
|
msgid "Last 12 months"
|
|
106
191
|
msgstr "Posledných 12 mesiacov"
|
|
107
192
|
|
|
193
|
+
msgctxt "Tree widget"
|
|
194
|
+
msgid "Loading..."
|
|
195
|
+
msgstr "Načítavanie..."
|
|
196
|
+
|
|
197
|
+
msgctxt "Tree widget"
|
|
198
|
+
msgid "Load error!"
|
|
199
|
+
msgstr "Chyba pri načítavaní!"
|
|
200
|
+
|
|
201
|
+
msgctxt "Tree widget"
|
|
202
|
+
msgid "More..."
|
|
203
|
+
msgstr "Viac..."
|
|
204
|
+
|
|
205
|
+
msgctxt "Tree widget"
|
|
206
|
+
msgid "No data."
|
|
207
|
+
msgstr "Žiadne dáta."
|
|
208
|
+
|
|
209
|
+
msgid "System"
|
|
210
|
+
msgstr "Systém"
|
|
211
|
+
|
|
212
|
+
msgid "Dark"
|
|
213
|
+
msgstr "Tmavá"
|
|
214
|
+
|
|
215
|
+
msgid "Light"
|
|
216
|
+
msgstr "Svetlá"
|
|
217
|
+
|
|
218
|
+
msgid "Theme"
|
|
219
|
+
msgstr "Téma"
|
|
220
|
+
|
|
108
221
|
msgid "Translations"
|
|
109
222
|
msgstr "Preklady"
|
|
110
223
|
|
|
@@ -120,6 +233,22 @@ msgstr[0] "Opravte chybu nižšie."
|
|
|
120
233
|
msgstr[1] "Opravte chyby nižšie."
|
|
121
234
|
msgstr[2] "Opravte chyby nižšie."
|
|
122
235
|
|
|
236
|
+
msgid "Save"
|
|
237
|
+
msgstr "Uložiť"
|
|
238
|
+
|
|
239
|
+
msgid "Close"
|
|
240
|
+
msgstr "Zatvoriť"
|
|
241
|
+
|
|
242
|
+
msgid "Prev"
|
|
243
|
+
msgstr "Pred."
|
|
244
|
+
|
|
245
|
+
#, python-format
|
|
246
|
+
msgid "<strong>%(current_index)s</strong> / %(all_objects_count)s"
|
|
247
|
+
msgstr ""
|
|
248
|
+
|
|
249
|
+
msgid "Next"
|
|
250
|
+
msgstr "Ďal."
|
|
251
|
+
|
|
123
252
|
msgid "Back"
|
|
124
253
|
msgstr "Naspäť"
|
|
125
254
|
|
|
@@ -158,12 +287,6 @@ msgstr "Nie, ísť späť"
|
|
|
158
287
|
msgid "Yes, I’m sure"
|
|
159
288
|
msgstr "Áno, som si istý"
|
|
160
289
|
|
|
161
|
-
msgid "Home"
|
|
162
|
-
msgstr "Domov"
|
|
163
|
-
|
|
164
|
-
msgid "Delete multiple objects"
|
|
165
|
-
msgstr "Zmazať viacero objektov"
|
|
166
|
-
|
|
167
290
|
#, python-format
|
|
168
291
|
msgid "Deleting the selected %(objects_name)s would result in deleting related objects, but your account doesn't have permission to delete the following types of objects:"
|
|
169
292
|
msgstr "Odstránenie vybraných %(objects_name)s vyžaduje odstránenie súvisiacich objektov ale váš účet nemá potrebné povolenia na odstránenie týchto objektov:"
|
|
@@ -179,18 +302,6 @@ msgstr "Ste si istý že chcete odstrániť vybrané %(objects_name)s? Všetky n
|
|
|
179
302
|
msgid "Add"
|
|
180
303
|
msgstr "Pridať"
|
|
181
304
|
|
|
182
|
-
msgid "Save view"
|
|
183
|
-
msgstr "Uložiť zobrazenie"
|
|
184
|
-
|
|
185
|
-
msgid "Search and filter"
|
|
186
|
-
msgstr "Hľadať a filtrovať"
|
|
187
|
-
|
|
188
|
-
msgid "Select all"
|
|
189
|
-
msgstr "Vybrať všetky"
|
|
190
|
-
|
|
191
|
-
msgid "Select none"
|
|
192
|
-
msgstr "Odstrániť výber"
|
|
193
|
-
|
|
194
305
|
msgid "For page"
|
|
195
306
|
msgstr "Veľkost strany"
|
|
196
307
|
|
|
@@ -206,18 +317,42 @@ msgstr "Akcia"
|
|
|
206
317
|
msgid "This object doesn't have a change history. It probably wasn't added via this admin site."
|
|
207
318
|
msgstr "Tento objekt nemá históriu zmien. Pravdepodobne nebolo pridané cez túto admin stránku."
|
|
208
319
|
|
|
320
|
+
msgid "Select all"
|
|
321
|
+
msgstr "Vybrať všetky"
|
|
322
|
+
|
|
323
|
+
msgid "Select none"
|
|
324
|
+
msgstr "Odstrániť výber"
|
|
325
|
+
|
|
326
|
+
msgid "Save view"
|
|
327
|
+
msgstr "Uložiť zobrazenie"
|
|
328
|
+
|
|
329
|
+
msgid "Search and filter"
|
|
330
|
+
msgstr "Hľadať a filtrovať"
|
|
331
|
+
|
|
332
|
+
msgid "Quick Search"
|
|
333
|
+
msgstr "Rýchle vyhľadávanie"
|
|
334
|
+
|
|
335
|
+
msgid "Saved Views"
|
|
336
|
+
msgstr "Uložené zobrazenia"
|
|
337
|
+
|
|
338
|
+
msgid "Advanced Filters"
|
|
339
|
+
msgstr "Rozšírené filtrovanie"
|
|
340
|
+
|
|
341
|
+
msgid "Search"
|
|
342
|
+
msgstr "Vyhľadať"
|
|
343
|
+
|
|
209
344
|
msgid "Copy"
|
|
210
345
|
msgstr "Kopírovať"
|
|
211
346
|
|
|
212
|
-
msgid "Save"
|
|
213
|
-
msgstr "Uložiť"
|
|
214
|
-
|
|
215
347
|
msgid "Show translations"
|
|
216
348
|
msgstr "Zobraziť preklady"
|
|
217
349
|
|
|
350
|
+
msgid "Save Order"
|
|
351
|
+
msgstr "Uložiť zoradenie"
|
|
352
|
+
|
|
218
353
|
#, python-format
|
|
219
354
|
msgid "You are authenticated as %(username)s, but are not authorized to access this page. Would you like to login to a different account?"
|
|
220
|
-
msgstr ""
|
|
355
|
+
msgstr "Ste prihlásený ako %(username)s, ale k tejto stránke nemáte prístup. Chcete sa prihlásiť pod iným účtom?"
|
|
221
356
|
|
|
222
357
|
msgid "Welcome back"
|
|
223
358
|
msgstr "Vitajte späť"
|
|
@@ -308,6 +443,9 @@ msgstr "Vybrať všetky"
|
|
|
308
443
|
msgid "Remove"
|
|
309
444
|
msgstr "Odstrániť"
|
|
310
445
|
|
|
446
|
+
msgid "View Results"
|
|
447
|
+
msgstr "Zobraziť výsledky"
|
|
448
|
+
|
|
311
449
|
msgid ""
|
|
312
450
|
"\n"
|
|
313
451
|
" <button class=\"btn btn-primary-light btn-tiny\">Add file</button>\n"
|
|
@@ -322,8 +460,11 @@ msgstr ""
|
|
|
322
460
|
msgid "JPG, PNG, GIF or WEBP max 10MB"
|
|
323
461
|
msgstr "JPG, PNG, GIF alebo WEBP max 10MB"
|
|
324
462
|
|
|
325
|
-
msgid "
|
|
326
|
-
msgstr "
|
|
463
|
+
msgid "Remove View"
|
|
464
|
+
msgstr "Odstrániť zobratenie"
|
|
465
|
+
|
|
466
|
+
msgid "Do you want to remove table view?"
|
|
467
|
+
msgstr "Naozaj chcete odstrániť toto zobrazenie?"
|
|
327
468
|
|
|
328
469
|
msgid "Save view as"
|
|
329
470
|
msgstr "Uložiť zobrazenie ako"
|
|
@@ -340,6 +481,9 @@ msgstr "alebo uložiť ako"
|
|
|
340
481
|
msgid "Cancel"
|
|
341
482
|
msgstr "Zrušiť"
|
|
342
483
|
|
|
484
|
+
msgid "Calendar"
|
|
485
|
+
msgstr "Kalendár"
|
|
486
|
+
|
|
343
487
|
msgid "Yes"
|
|
344
488
|
msgstr "Áno"
|
|
345
489
|
|
|
@@ -374,18 +518,27 @@ msgstr ""
|
|
|
374
518
|
msgid "Awards"
|
|
375
519
|
msgstr "Ocenenia"
|
|
376
520
|
|
|
521
|
+
msgid "Are you sure?"
|
|
522
|
+
msgstr "Ste si istý?"
|
|
523
|
+
|
|
524
|
+
msgid "Confirm"
|
|
525
|
+
msgstr "Potvrdiť"
|
|
526
|
+
|
|
377
527
|
msgid "Loading..."
|
|
378
528
|
msgstr "Načítavanie..."
|
|
379
529
|
|
|
530
|
+
#, python-format
|
|
531
|
+
msgid "Add another %(verbose_name)s"
|
|
532
|
+
msgstr "Pridať ďalší %(verbose_name)s"
|
|
533
|
+
|
|
380
534
|
msgid "Change"
|
|
381
535
|
msgstr "Zmeniť"
|
|
382
536
|
|
|
383
537
|
msgid "View"
|
|
384
538
|
msgstr "Zobraziť"
|
|
385
539
|
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
msgstr "Pridať ďalší %(verbose_name)s"
|
|
540
|
+
msgid "Delete"
|
|
541
|
+
msgstr "Zmazať"
|
|
389
542
|
|
|
390
543
|
msgid "results"
|
|
391
544
|
msgstr "výsledky"
|
|
@@ -399,9 +552,6 @@ msgstr "Strom stránok"
|
|
|
399
552
|
msgid "Reset filter"
|
|
400
553
|
msgstr "Vymazať filtre"
|
|
401
554
|
|
|
402
|
-
msgid "Search"
|
|
403
|
-
msgstr "Vyhľadať"
|
|
404
|
-
|
|
405
555
|
msgid "Sites"
|
|
406
556
|
msgstr "Stránky"
|
|
407
557
|
|
|
@@ -481,6 +631,9 @@ msgstr "Duplikáty"
|
|
|
481
631
|
msgid "Go back to admin homepage"
|
|
482
632
|
msgstr "Naspäť na adminovú domovskú stránku"
|
|
483
633
|
|
|
634
|
+
msgid "Home"
|
|
635
|
+
msgstr "Domov"
|
|
636
|
+
|
|
484
637
|
msgid "Go back to Filer app"
|
|
485
638
|
msgstr "Naspäť do koreňového priečinka"
|
|
486
639
|
|
|
@@ -515,9 +668,6 @@ msgstr "Zobraziť menu"
|
|
|
515
668
|
msgid "Change current folder details"
|
|
516
669
|
msgstr "Zmeniť detaily priečinka"
|
|
517
670
|
|
|
518
|
-
msgid "Close"
|
|
519
|
-
msgstr "Zatvoriť"
|
|
520
|
-
|
|
521
671
|
msgid "Limit"
|
|
522
672
|
msgstr "Limit"
|
|
523
673
|
|
|
@@ -569,8 +719,8 @@ msgstr "Poradie sa upravuje, prosím čakajte"
|
|
|
569
719
|
msgid "Logout"
|
|
570
720
|
msgstr "Odhlásiť sa"
|
|
571
721
|
|
|
572
|
-
msgid "
|
|
573
|
-
msgstr "
|
|
722
|
+
msgid "Continue"
|
|
723
|
+
msgstr "Pokračovať"
|
|
574
724
|
|
|
575
725
|
msgid "Move to last"
|
|
576
726
|
msgstr "Presunúť na posledné miesto"
|
|
@@ -584,6 +734,12 @@ msgstr "Posunúť nižšie"
|
|
|
584
734
|
msgid "Reorder"
|
|
585
735
|
msgstr "Preusporiadať"
|
|
586
736
|
|
|
737
|
+
msgid "Expand"
|
|
738
|
+
msgstr "Rozbaliť"
|
|
739
|
+
|
|
740
|
+
msgid "Collapse"
|
|
741
|
+
msgstr "Zbaliť"
|
|
742
|
+
|
|
587
743
|
#, python-brace-format
|
|
588
744
|
msgid "<strong>${from} - ${to}</strong> of <strong>${total}</strong><span class=\"max-xs:hidden\"> items</span>"
|
|
589
745
|
msgstr "<strong>${from} - ${to}</strong> z <strong>${total}</strong><span class=\"max-xs:hidden\"> položiek</span>"
|
|
@@ -591,6 +747,10 @@ msgstr "<strong>${from} - ${to}</strong> z <strong>${total}</strong><span class=
|
|
|
591
747
|
msgid "<strong>0</strong> items"
|
|
592
748
|
msgstr "<strong>0</strong> položiek"
|
|
593
749
|
|
|
750
|
+
#, python-brace-format
|
|
751
|
+
msgid "${value} selected"
|
|
752
|
+
msgstr "${value} vybrané"
|
|
753
|
+
|
|
594
754
|
msgid "Basic Settings"
|
|
595
755
|
msgstr "Základné nastavenia"
|
|
596
756
|
|
|
@@ -615,6 +775,77 @@ msgstr "alebo pridajte potiahnutím"
|
|
|
615
775
|
msgid "Edit"
|
|
616
776
|
msgstr "Upraviť"
|
|
617
777
|
|
|
778
|
+
msgid "Open color picker"
|
|
779
|
+
msgstr "Otvoriť výber farieb"
|
|
780
|
+
|
|
781
|
+
msgid "Close color picker"
|
|
782
|
+
msgstr "Zatvoriť výber farieb"
|
|
783
|
+
|
|
784
|
+
msgid "Clear the selected color"
|
|
785
|
+
msgstr "Vymazať výber farby"
|
|
786
|
+
|
|
787
|
+
#, python-brace-format
|
|
788
|
+
msgid "Saturation: {s}. Brightness: {v}."
|
|
789
|
+
msgstr ""
|
|
790
|
+
|
|
791
|
+
msgid "Hue slider"
|
|
792
|
+
msgstr ""
|
|
793
|
+
|
|
794
|
+
msgid "Opacity slider"
|
|
795
|
+
msgstr ""
|
|
796
|
+
|
|
797
|
+
msgid "Color value field"
|
|
798
|
+
msgstr ""
|
|
799
|
+
|
|
800
|
+
msgid "Color format"
|
|
801
|
+
msgstr ""
|
|
802
|
+
|
|
803
|
+
msgid "Color swatch"
|
|
804
|
+
msgstr ""
|
|
805
|
+
|
|
806
|
+
msgid "Saturation and brightness selector. Use up, down, left and right arrow keys to select."
|
|
807
|
+
msgstr ""
|
|
808
|
+
|
|
809
|
+
msgid "drop your file here or"
|
|
810
|
+
msgstr ""
|
|
811
|
+
|
|
812
|
+
msgid "No file selected"
|
|
813
|
+
msgstr "Nebol vybraný žiadny súbor"
|
|
814
|
+
|
|
815
|
+
msgid "File is missing"
|
|
816
|
+
msgstr "Súbor chýba"
|
|
817
|
+
|
|
818
|
+
msgid "Lookup"
|
|
819
|
+
msgstr "Vyhľadať"
|
|
820
|
+
|
|
821
|
+
msgid "Choose File"
|
|
822
|
+
msgstr "Zvoľte súbor"
|
|
823
|
+
|
|
824
|
+
#, python-brace-format
|
|
825
|
+
msgid "Added {name} “{object}”."
|
|
826
|
+
msgstr "Pridané {name} “{object}”."
|
|
827
|
+
|
|
828
|
+
msgid "Added."
|
|
829
|
+
msgstr "Pridané."
|
|
830
|
+
|
|
831
|
+
msgid "and"
|
|
832
|
+
msgstr "a"
|
|
833
|
+
|
|
834
|
+
#, python-brace-format
|
|
835
|
+
msgid "Changed {fields} for {name} “{object}”."
|
|
836
|
+
msgstr "Zmenené {fields} pre {name} “{object}”"
|
|
837
|
+
|
|
838
|
+
#, python-brace-format
|
|
839
|
+
msgid "Changed {fields}."
|
|
840
|
+
msgstr "Zmenené {fields}."
|
|
841
|
+
|
|
842
|
+
#, python-brace-format
|
|
843
|
+
msgid "Deleted {name} “{object}”."
|
|
844
|
+
msgstr "Odstránené {name} “{object}”."
|
|
845
|
+
|
|
846
|
+
msgid "No fields changed."
|
|
847
|
+
msgstr "Žiadne zmeny."
|
|
848
|
+
|
|
618
849
|
msgid "Not Translated"
|
|
619
850
|
msgstr "Nepreložené"
|
|
620
851
|
|
|
@@ -628,4 +859,4 @@ msgid "Status"
|
|
|
628
859
|
msgstr "Stav"
|
|
629
860
|
|
|
630
861
|
msgid " of "
|
|
631
|
-
msgstr ""
|
|
862
|
+
msgstr " z "
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Generated by Django 5.0.3 on 2025-07-29 08:28
|
|
2
|
+
|
|
3
|
+
import django.db.models.deletion
|
|
4
|
+
from django.conf import settings
|
|
5
|
+
from django.db import migrations, models
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class Migration(migrations.Migration):
|
|
9
|
+
|
|
10
|
+
dependencies = [
|
|
11
|
+
('django_smartbase_admin', '0004_alter_sbadminlistviewconfiguration_action_and_more'),
|
|
12
|
+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
|
13
|
+
]
|
|
14
|
+
|
|
15
|
+
operations = [
|
|
16
|
+
migrations.CreateModel(
|
|
17
|
+
name='SBAdminUserConfiguration',
|
|
18
|
+
fields=[
|
|
19
|
+
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
20
|
+
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
21
|
+
('updated_at', models.DateTimeField(auto_now=True)),
|
|
22
|
+
('color_scheme', models.CharField(choices=[('auto', '<span class="flex gap-8"><svg class="w-20 h-20"><use href="#Translation"></use></svg><span>System</span></span>'), ('dark', '<span class="flex gap-8"><svg class="w-20 h-20"><use href="#Moon"></use></svg><span>Dark</span></span>'), ('light', '<span class="flex gap-8"><svg class="w-20 h-20"><use href="#Sun-one"></use></svg><span>Light</span></span>')], default='auto', max_length=255, verbose_name='Theme')),
|
|
23
|
+
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
|
24
|
+
],
|
|
25
|
+
),
|
|
26
|
+
]
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Generated by Django 5.0.14 on 2025-08-04 06:22
|
|
2
|
+
|
|
3
|
+
from django.db import migrations, models
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class Migration(migrations.Migration):
|
|
7
|
+
|
|
8
|
+
dependencies = [
|
|
9
|
+
('django_smartbase_admin', '0005_sbadminuserconfiguration'),
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
operations = [
|
|
13
|
+
migrations.AlterField(
|
|
14
|
+
model_name='sbadminuserconfiguration',
|
|
15
|
+
name='color_scheme',
|
|
16
|
+
field=models.CharField(choices=[('auto', 'System'), ('dark', 'Dark'), ('light', 'Light')], default='auto', max_length=255, verbose_name='Theme'),
|
|
17
|
+
),
|
|
18
|
+
]
|
django_smartbase_admin/models.py
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
from django.conf import settings
|
|
2
2
|
from django.db import models
|
|
3
|
+
from django.utils.translation import gettext_lazy as _
|
|
3
4
|
|
|
4
5
|
from django_smartbase_admin.querysets import SBAdminListViewConfigurationQueryset
|
|
5
6
|
|
|
6
7
|
|
|
8
|
+
class ColorScheme(models.TextChoices):
|
|
9
|
+
AUTO = "auto", _("System")
|
|
10
|
+
DARK = "dark", _("Dark")
|
|
11
|
+
LIGHT = "light", _("Light")
|
|
12
|
+
|
|
13
|
+
|
|
7
14
|
class SBAdminListViewConfiguration(models.Model):
|
|
8
15
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
9
16
|
updated_at = models.DateTimeField(auto_now=True)
|
|
@@ -18,3 +25,18 @@ class SBAdminListViewConfiguration(models.Model):
|
|
|
18
25
|
url_params = models.TextField()
|
|
19
26
|
|
|
20
27
|
objects = SBAdminListViewConfigurationQueryset.as_manager()
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class SBAdminUserConfiguration(models.Model):
|
|
31
|
+
created_at = models.DateTimeField(auto_now_add=True)
|
|
32
|
+
updated_at = models.DateTimeField(auto_now=True)
|
|
33
|
+
user = models.ForeignKey(
|
|
34
|
+
to=settings.AUTH_USER_MODEL,
|
|
35
|
+
on_delete=models.CASCADE,
|
|
36
|
+
)
|
|
37
|
+
color_scheme = models.CharField(
|
|
38
|
+
max_length=255,
|
|
39
|
+
choices=ColorScheme.choices,
|
|
40
|
+
default=ColorScheme.AUTO,
|
|
41
|
+
verbose_name=_("Theme"),
|
|
42
|
+
)
|