1.1 --- a/imipweb/event.py Wed Sep 13 00:11:22 2017 +0200
1.2 +++ b/imipweb/event.py Wed Sep 13 00:29:48 2017 +0200
1.3 @@ -25,7 +25,7 @@
1.4 from imiptools.mail import Messenger
1.5 from imipweb.data import EventPeriod, event_period_from_period, \
1.6 filter_duplicates, get_active_periods, \
1.7 - remove_from_collection, \
1.8 + get_removed_periods, remove_from_collection, \
1.9 get_period_control_values, \
1.10 PeriodError
1.11 from imipweb.resource import DateTimeFormUtilities, FormUtilities, ResourceClientForObject
1.12 @@ -1044,31 +1044,21 @@
1.13 excluded).
1.14 """
1.15
1.16 + # Get remaining periods and those whose removal is deferred.
1.17 +
1.18 + remaining, to_remove = get_removed_periods(periods,
1.19 + self.get_state("recur-remove", list))
1.20 +
1.21 + # Sort the deferred removal periods into categories.
1.22 +
1.23 to_unschedule = set()
1.24 to_exclude = set()
1.25
1.26 - # Get all periods that are not replaced.
1.27 -
1.28 - active_periods = get_active_periods(periods)
1.29 -
1.30 - for period in self.get_state("recur-remove", list):
1.31 - active_periods[period] -= 1
1.32 -
1.33 + for period in to_remove:
1.34 if not self.can_edit_recurrence(period) and self.is_organiser():
1.35 - l = to_unschedule
1.36 + to_unschedule.add(period)
1.37 else:
1.38 - l = to_exclude
1.39 - l.add(period)
1.40 -
1.41 - # Determine whether some periods are both removed and added.
1.42 -
1.43 - remaining = []
1.44 - for period, n in active_periods.items():
1.45 - if n > 0:
1.46 - remaining.append(period)
1.47 -
1.48 - to_unschedule.difference_update(remaining)
1.49 - to_exclude.difference_update(remaining)
1.50 + to_exclude.add(period)
1.51
1.52 return remaining, to_unschedule, to_exclude
1.53