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