From db9becfd6d857b9cfab6ede574db453d847471f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 6 Jun 2024 10:01:55 +0200 Subject: [PATCH] Exclude records without dtstart or dtend from calendar view Closes #13302 --- sao/src/view/calendar.js | 9 +++++++-- .../view_form/view/calendar_gtk/calendar_.py | 19 ++++++++++++------- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/sao/src/view/calendar.js b/sao/src/view/calendar.js index 8252face1e..14204536ff 100644 --- a/sao/src/view/calendar.js +++ b/sao/src/view/calendar.js @@ -350,13 +350,18 @@ var last_datetime = Sao.DateTime(this.end); var dtstart = this.attributes.dtstart; var dtend = this.attributes.dtend || dtstart; - return ['OR', + return [ + [dtstart, '!=', null], + [dtend, '!=', null], + ['OR', ['AND', [dtstart, '>=', first_datetime], [dtstart, '<', last_datetime]], ['AND', [dtend, '>=', first_datetime], [dtend, '<', last_datetime]], ['AND', [dtstart, '<', first_datetime], - [dtend, '>', last_datetime]]]; + [dtend, '>', last_datetime]], + ], + ]; }, get_displayed_period: function(){ var DatesPeriod = []; diff --git a/tryton/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py b/tryton/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py index 76e46dc683..906a007bb3 100644 --- a/tryton/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py +++ b/tryton/tryton/gui/window/view_form/view/calendar_gtk/calendar_.py @@ -67,13 +67,18 @@ class Calendar_(goocalendar.Calendar): self.current_domain_period.get_dates(True) dtstart = self.attrs['dtstart'] dtend = self.attrs.get('dtend') or dtstart - domain = ['OR', - ['AND', (dtstart, '>=', first_datetime), - (dtstart, '<', last_datetime)], - ['AND', (dtend, '>=', first_datetime), - (dtend, '<', last_datetime)], - ['AND', (dtstart, '<', first_datetime), - (dtend, '>', last_datetime)]] + domain = [ + (dtstart, '!=', None), + (dtend, '!=', None), + ['OR', + ['AND', (dtstart, '>=', first_datetime), + (dtstart, '<', last_datetime)], + ['AND', (dtend, '>=', first_datetime), + (dtend, '<', last_datetime)], + ['AND', (dtstart, '<', first_datetime), + (dtend, '>', last_datetime)], + ], + ] return domain def get_colors(self, record):