From 4e57f94ff9c69ac6daf16ca5c5813a22786d45b8 Mon Sep 17 00:00:00 2001 From: len-odoo Date: Tue, 22 May 2018 12:36:04 +0200 Subject: [PATCH] [FIX] calendar: do not create events past year 9999 datetime.date(year, month, day).weekday() is undefined for year > 9999. When creating a google recurrent event that is set to never end, Odoo tries to create 100 individual events. If in Google calendar the user sets a recurring event to a custom interval, of say a century, then the hundredth event is in 100x100 years, so in 12018. Since 12018 > 9999, we get a traceback and synchronisation never happens. opw 1845311 --- addons/calendar/models/calendar.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/addons/calendar/models/calendar.py b/addons/calendar/models/calendar.py index c84dc053ecc..e84825a0c5d 100644 --- a/addons/calendar/models/calendar.py +++ b/addons/calendar/models/calendar.py @@ -655,7 +655,13 @@ class Meeting(models.Model): }[data['rrule_type']] deadline = fields.Datetime.from_string(data['stop']) - return deadline + relativedelta(**{delay: count * mult}) + computed_final_date = False + while not computed_final_date and count > 0: + try: # may crash if year > 9999 (in case of recurring events) + computed_final_date = deadline + relativedelta(**{delay: count * mult}) + except ValueError: + count -= data['interval'] + return computed_final_date or deadline return final_date @api.multi