summaryrefslogtreecommitdiff
path: root/addons/web/static/src
diff options
context:
space:
mode:
authorNicolas Martinelli <nim@odoo.com>2018-06-27 21:41:29 +0200
committerNicolas Martinelli <nim-odoo@users.noreply.github.com>2018-08-07 09:02:44 +0200
commitb37416376b959ff1e7b3699308fa621d5dc8dbe7 (patch)
treedbc665a0d4c278d458c345d6d69d9be70ea73ed5 /addons/web/static/src
parenta4454fc7b1d6385f0efc5137a96b94bc9e1cb274 (diff)
[FIX] google_calendar: rrule crash
Consider the following: ``` python from datetime import datetime from dateutil import rrule import pytz dt = pytz.UTC.localize(datetime(2016, 9, 2, 15, 42, 43, 205)) rset = rrule.rrulestr('FREQ=WEEKLY;INTERVAL=2;BYDAY=SU,FR,SA', dtstart=dt, forceset=True, tzinfos={}) test = [d for d in rset] ``` This will generate the following error: ``` Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/dist-packages/dateutil/rrule.py", line 1164, in _iter advance_iterator(ritem) File "/usr/lib/python2.7/dist-packages/dateutil/rrule.py", line 1091, in __next__ self.dt = advance_iterator(self.gen) File "/usr/lib/python2.7/dist-packages/dateutil/rrule.py", line 649, in _iter date = datetime.date.fromordinal(ii.yearordinal+i) ValueError: year is out of range ``` If such an event is received from Google Calendar, the synchronization crashes. To avoid this, we enforce a `COUNT` condition if the latter or `UNTIL` is not explicitly specified. This gives: ``` python rset = rrule.rrulestr('FREQ=WEEKLY;INTERVAL=2;BYDAY=SU,FR,SA;COUNT=100', dtstart=dt, forceset=True, tzinfos={}) ``` Note that this was supposed to be fixed in https://github.com/odoo/odoo/blob/9dcc32c3041e7ad3549a09c5ed68ee3ef22c7a26/addons/calendar/models/calendar.py#L1287 However, this was working with the old API. The new API and its computed fields does something different: 1. create the calendar event with the provided `rrule` 2. trigger the inverse method `_inverse_rrule` => `count=100` is added to the computed parameters 3. however, doing so won't recompute `rrule` for obvious reasons (it was the initial value provided, so we don't recompute it) 4. the crash is met in `_get_recurrent_date_by_event` when using `self.rrule` The fundamental issue is that `_inverse_rrule` is not strictly the inverse of `_compute_rrule`. Fixes #25189 opw-1861658
Diffstat (limited to 'addons/web/static/src')
0 files changed, 0 insertions, 0 deletions