django-smartbase-admin 1.0.42__py3-none-any.whl → 1.0.43__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.
@@ -71,7 +71,7 @@ except ImportError:
71
71
 
72
72
  postrgres_enabled = None
73
73
  try:
74
- from django.contrib.postgres.forms import SimpleArrayField
74
+ from django.contrib.postgres.forms import SimpleArrayField, DateTimeRangeField
75
75
 
76
76
  postrgres_enabled = True
77
77
  except ImportError:
@@ -118,6 +118,7 @@ from django_smartbase_admin.admin.widgets import (
118
118
  SBAdminMultipleChoiceInlineWidget,
119
119
  SBAdminColorWidget,
120
120
  SBAdminFilerFileWidget,
121
+ SBAdminDateTimeRangeWidget,
121
122
  )
122
123
  from django_smartbase_admin.engine.admin_base_view import (
123
124
  SBAdminBaseListView,
@@ -177,6 +178,7 @@ class SBAdminFormFieldWidgetsMixin:
177
178
  }
178
179
  if postrgres_enabled:
179
180
  formfield_widgets[SimpleArrayField] = SBAdminArrayWidget
181
+ formfield_widgets[DateTimeRangeField] = SBAdminDateTimeRangeWidget
180
182
  if django_cms_attributes:
181
183
  formfield_widgets[AttributesFormField] = SBAdminAttributesWidget
182
184
  if color_field_enabled:
@@ -11,6 +11,7 @@ from django.contrib.admin.widgets import (
11
11
  ForeignKeyRawIdWidget,
12
12
  )
13
13
  from django.contrib.auth.forms import ReadOnlyPasswordHashWidget
14
+ from django.contrib.postgres.forms import RangeWidget
14
15
  from django.core.exceptions import (
15
16
  FieldDoesNotExist,
16
17
  ImproperlyConfigured,
@@ -41,7 +42,7 @@ from django_smartbase_admin.services.thread_local import SBAdminThreadLocalServi
41
42
  from django_smartbase_admin.templatetags.sb_admin_tags import (
42
43
  SBAdminJSONEncoder,
43
44
  )
44
- from django_smartbase_admin.utils import is_modal
45
+ from django_smartbase_admin.utils import is_modal, convert_django_to_flatpickr_format
45
46
 
46
47
  try:
47
48
  # Django >= 5.0
@@ -261,7 +262,9 @@ class SBAdminDateWidget(SBAdminBaseWidget, forms.DateInput):
261
262
  "flatpickrOptions": {
262
263
  "dateFormat": "Y-m-d",
263
264
  "altInput": True,
264
- "altFormat": get_format("SHORT_DATE_FORMAT"),
265
+ "altFormat": convert_django_to_flatpickr_format(
266
+ get_format("SHORT_DATE_FORMAT")
267
+ ),
265
268
  },
266
269
  },
267
270
  cls=SBAdminJSONEncoder,
@@ -286,9 +289,30 @@ class SBAdminTimeWidget(SBAdminBaseWidget, forms.TimeInput):
286
289
  class SBAdminDateTimeWidget(SBAdminBaseWidget, forms.DateTimeInput):
287
290
  template_name = "sb_admin/widgets/datetime.html"
288
291
 
289
- def __init__(self, form_field=None, attrs=None):
292
+ def __init__(self, form_field=None, attrs=None, format=None):
290
293
  super().__init__(
291
- form_field, attrs={"class": "input js-datetimepicker", **(attrs or {})}
294
+ form_field,
295
+ format="%Y-%m-%d %H:%M",
296
+ attrs={
297
+ "class": "input js-datetimepicker",
298
+ "data-sbadmin-datepicker": self.get_data(),
299
+ "placeholder": get_datetime_placeholder()["date"],
300
+ **(attrs or {}),
301
+ },
302
+ )
303
+
304
+ def get_data(self):
305
+ return json.dumps(
306
+ {
307
+ "flatpickrOptions": {
308
+ "dateFormat": "Y-m-d H:i",
309
+ "altInput": True,
310
+ "altFormat": convert_django_to_flatpickr_format(
311
+ get_format("SHORT_DATETIME_FORMAT")
312
+ ),
313
+ },
314
+ },
315
+ cls=SBAdminJSONEncoder,
292
316
  )
293
317
 
294
318
 
@@ -965,3 +989,13 @@ class SBAdminTreeWidget(SBAdminTreeWidgetMixin, SBAdminAutocompleteWidget):
965
989
  if input_value in children_ids:
966
990
  raise ValidationError(_("Cannot set parent to it's own child"))
967
991
  return parsed_value
992
+
993
+
994
+ class SBAdminDateTimeRangeWidget(SBAdminBaseWidget, RangeWidget):
995
+ template_name = "sb_admin/widgets/multiwidget.html"
996
+
997
+ def __init__(self, form_field=None, attrs=None):
998
+ super().__init__(
999
+ form_field,
1000
+ base_widget=SBAdminDateTimeWidget(),
1001
+ )
@@ -240,6 +240,7 @@ class SBAdminBaseView(object):
240
240
  "view_id": self.get_id(),
241
241
  "configuration": request.request_data.configuration,
242
242
  "request_data": request.request_data,
243
+ "admin_title": request.request_data.configuration.get_admin_title(),
243
244
  "add_label": self.get_add_label(request, object_id),
244
245
  "change_label": self.get_change_label(request, object_id),
245
246
  "DETAIL_STRUCTURE_RIGHT_CLASS": DETAIL_STRUCTURE_RIGHT_CLASS,
@@ -186,6 +186,7 @@ class SBAdminRoleConfiguration(metaclass=Singleton):
186
186
  filters_version = FilterVersions.FILTERS_VERSION_1
187
187
  default_color_scheme = ColorScheme.AUTO
188
188
  login_view_class = LoginView
189
+ admin_title = "SBAdmin"
189
190
 
190
191
  def __init__(
191
192
  self,
@@ -196,6 +197,7 @@ class SBAdminRoleConfiguration(metaclass=Singleton):
196
197
  filters_version=None,
197
198
  default_color_scheme=None,
198
199
  login_view_class=None,
200
+ admin_title=None,
199
201
  ) -> None:
200
202
  super().__init__()
201
203
  self.default_view = default_view or self.default_view or []
@@ -207,6 +209,7 @@ class SBAdminRoleConfiguration(metaclass=Singleton):
207
209
  self.filters_version = filters_version or self.filters_version
208
210
  self.default_color_scheme = default_color_scheme or self.default_color_scheme
209
211
  self.login_view_class = login_view_class or self.login_view_class
212
+ self.admin_title = admin_title or self.admin_title
210
213
 
211
214
  def init_registered_views(self):
212
215
  registered_views = []
@@ -386,3 +389,6 @@ class SBAdminRoleConfiguration(metaclass=Singleton):
386
389
  request,
387
390
  ) -> bool:
388
391
  return not is_modal(request)
392
+
393
+ def get_admin_title(self):
394
+ return self.admin_title