1.1 --- a/imipweb/event.py Fri May 15 20:16:29 2015 +0200
1.2 +++ b/imipweb/event.py Fri May 15 20:17:26 2015 +0200
1.3 @@ -120,6 +120,13 @@
1.4 except PeriodError, exc:
1.5 return exc.args
1.6
1.7 + # Set the periods in the object, first obtaining removed and
1.8 + # modified period information.
1.9 +
1.10 + to_unschedule = []
1.11 + for i in args.get("recur-remove", []):
1.12 + to_unschedule.append(periods[int(i)])
1.13 +
1.14 self.set_period_in_object(obj, period)
1.15 self.set_periods_in_object(obj, periods)
1.16
1.17 @@ -158,8 +165,10 @@
1.18
1.19 elif self.is_organiser(obj) and (invite or cancel):
1.20
1.21 + # Invitation, uninvitation and unscheduling...
1.22 +
1.23 if handler.process_created_request(
1.24 - invite and "REQUEST" or "CANCEL", to_cancel):
1.25 + invite and "REQUEST" or "CANCEL", to_cancel, to_unschedule):
1.26
1.27 self.remove_request(uid, recurrenceid)
1.28
1.29 @@ -208,8 +217,7 @@
1.30 if obj.has_key("RDATE"):
1.31 del obj["RDATE"]
1.32
1.33 - for period in periods:
1.34 - p = event_period_from_period(period)
1.35 + for p in periods:
1.36 if p.origin != "RRULE":
1.37 tzid = p.start_attr and p.start_attr.get("TZID") or p.end_attr and p.end_attr.get("TZID")
1.38 new_rdates.append(get_period_item(p.start, p.end, tzid))
1.39 @@ -681,7 +689,6 @@
1.40 # Permit the removal of newly-added attendees.
1.41
1.42 remove_type = (not existing or sequence is None or attendee == self.user) and "submit" or "checkbox"
1.43 -
1.44 self._control("remove", remove_type, str(i), str(i) in args.get("remove", []), id="remove-%d" % i, class_="remove")
1.45
1.46 page.label("Remove", for_="remove-%d" % i, class_="remove")
1.47 @@ -767,6 +774,9 @@
1.48 """
1.49
1.50 page = self.page
1.51 + args = self.env.get_args()
1.52 +
1.53 + sequence = obj.get_value("SEQUENCE")
1.54
1.55 # Isolate the controls from neighbouring tables.
1.56
1.57 @@ -789,6 +799,21 @@
1.58 self.show_recurrence_controls(obj, index, period, recurrenceid, recurrenceids, False)
1.59 page.tr.close()
1.60
1.61 + # Permit the removal of recurrences.
1.62 +
1.63 + page.tr()
1.64 + page.th("")
1.65 + page.td()
1.66 +
1.67 + remove_type = sequence is None or not period.origin and "submit" or "checkbox"
1.68 + self._control("recur-remove", remove_type, str(index), str(index) in args.get("recur-remove", []), id="recur-remove-%d" % index, class_="remove")
1.69 +
1.70 + page.label("Remove", for_="recur-remove-%d" % index, class_="remove")
1.71 + page.label("Removed", for_="recur-remove-%d" % index, class_="removed")
1.72 +
1.73 + page.td.close()
1.74 + page.tr.close()
1.75 +
1.76 page.tbody.close()
1.77 page.table.close()
1.78