From 668b31a30c2a80da60f64d60fcf4a25f0d78fff5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 28 Apr 2021 22:26:52 +0200 Subject: [PATCH] Ensure zero padding for year It is needed to parse it back as a full year and not a year in current century. issue10343 review346051003 --- tryton/common/datetime_.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/tryton/common/datetime_.py b/tryton/common/datetime_.py index aafc8b5569..36b4670983 100644 --- a/tryton/common/datetime_.py +++ b/tryton/common/datetime_.py @@ -15,6 +15,14 @@ __all__ = ['Date', 'CellRendererDate', 'Time', 'CellRendererTime', 'DateTime'] _ = gettext.gettext +def _fix_format(format_): + if '%Y' in format_: + if (datetime.date.min.strftime('%Y') != '0001' + and datetime.date.min.strftime('%4Y') == '0001'): + format_ = format_.replace('%Y', '%4Y') + return format_ + + def date_parse(text, format_='%x'): try: return datetime.datetime.strptime(text, format_) @@ -192,7 +200,7 @@ class Date(Gtk.Entry): self.update_label() self.emit('date-changed') elif prop.name == 'format': - self.__format = value + self.__format = _fix_format(value) self.update_label() def do_get_property(self, prop): @@ -223,7 +231,7 @@ class CellRendererDate(Gtk.CellRendererText): def do_set_property(self, prop, value): if prop.name == 'format': - self.__format = value + self.__format = _fix_format(value) return Gtk.CellRendererText.set_property(self, prop, value) @@ -363,7 +371,7 @@ class Time(Gtk.ComboBox): self.update_label() self.emit('time-changed') elif prop.name == 'format': - self.__format = value + self.__format = _fix_format(value) self.update_label() self.update_model() @@ -395,7 +403,7 @@ class CellRendererTime(Gtk.CellRendererCombo): def do_set_property(self, prop, value): if prop.name == 'format': - self.__format = value + self.__format = _fix_format(value) return Gtk.CellRendererText.set_property(self, prop, value)