From f334fe0224bcbb444107259662d1e5a824a10a46 Mon Sep 17 00:00:00 2001 From: Shirlei Aparecida de Chaves <shirlei.chaves@ifsc.edu.br> Date: Sun, 7 Feb 2021 19:39:15 -0300 Subject: [PATCH] Compress values before passing to format_value See comments on the added method for more details --- helios/widgets.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/helios/widgets.py b/helios/widgets.py index 1f7fe0c..8e3f3e8 100644 --- a/helios/widgets.py +++ b/helios/widgets.py @@ -187,6 +187,23 @@ class SplitSelectDateTimeWidget(MultiWidget): return [value.date(), value.time().replace(microsecond=0)] return [None, None] + def compress(self, data_list): + """ + Takes the values from the MultiWidget and passes them as a + list to this function. This function needs to compress the + list into a single object in order to be correctly rendered by the widget. + For instace, django.forms.widgets.SelectDateWidget.format_value(value) + expects a date object or a string, not a list. + This method was taken from helios/fields.py + """ + if data_list: + import datetime + if not (data_list[0] and data_list[1]): + return None + return datetime.datetime.combine(*data_list) + return None + def render(self, name, value, attrs=None, renderer=None): + value = self.compress(value) rendered_widgets = list(widget.render(name, value, attrs=attrs, renderer=renderer) for widget in self.widgets) return '<br/>'.join(rendered_widgets) -- GitLab