Skip to content

Commit

Permalink
Check if last day of month when cloning an event
Browse files Browse the repository at this point in the history
  • Loading branch information
Natalia Juszka authored and ThiefMaster committed Jan 18, 2018
1 parent 67d4f99 commit f266856
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions indico/modules/events/management/controllers/cloning.py
Expand Up @@ -17,7 +17,7 @@
from __future__ import unicode_literals

from collections import OrderedDict
from datetime import datetime
from datetime import datetime, timedelta

from dateutil import rrule
from flask import flash, jsonify, request, session
Expand Down Expand Up @@ -111,9 +111,17 @@ class IntervalCloneCalculator(CloneCalculator):
form_class = CloneRepeatIntervalForm

def _calculate(self, form):
args = {'dtstart': self._naivify(form.start_dt.data)}
args.update(self._calc_stop_criteria(form))
freq, interval = relativedelta_to_rrule_interval(form.recurrence.data)
# check if last day of month
dtstart = self._naivify(form.start_dt.data)
next_day = dtstart + timedelta(days=1)
if freq == rrule.MONTHLY and next_day.day == 1:
args = {'dtstart': next_day}
args.update(self._calc_stop_criteria(form))
dates = rrule.rrule(freq, interval=interval, **args)
return self._tzify([date - timedelta(days=1) for date in dates])
args = {'dtstart': dtstart}
args.update(self._calc_stop_criteria(form))
return self._tzify(rrule.rrule(freq, interval=interval, **args))


Expand Down

0 comments on commit f266856

Please sign in to comment.