1.1 --- a/imip_manager.py Tue Mar 10 16:53:56 2015 +0100
1.2 +++ b/imip_manager.py Tue Mar 10 17:07:31 2015 +0100
1.3 @@ -879,16 +879,7 @@
1.4 (dtstart, dtstart_attr), (dtend, dtend_attr) = self.show_object_organiser_controls(obj)
1.5 new_attendees, new_attendee = self.handle_new_attendees(obj)
1.6 else:
1.7 - dtstart, dtstart_attr = obj.get_datetime_item("DTSTART")
1.8 - if obj.has_key("DTEND"):
1.9 - dtend, dtend_attr = obj.get_datetime_item("DTEND")
1.10 - elif obj.has_key("DURATION"):
1.11 - duration = obj.get_duration("DURATION")
1.12 - dtend = dtstart + duration
1.13 - dtend_attr = dtstart_attr
1.14 - else:
1.15 - dtend, dtend_attr = dtstart, dtstart_attr
1.16 -
1.17 + (dtstart, dtstart_attr), (dtend, dtend_attr) = self.get_event_period(obj)
1.18 new_attendees = []
1.19 new_attendee = ""
1.20
1.21 @@ -1053,6 +1044,24 @@
1.22
1.23 page.form.close()
1.24
1.25 + def get_event_period(self, obj):
1.26 +
1.27 + """
1.28 + Return (dtstart, dtstart attributes), (dtend, dtend attributes) for
1.29 + 'obj'.
1.30 + """
1.31 +
1.32 + dtstart, dtstart_attr = obj.get_datetime_item("DTSTART")
1.33 + if obj.has_key("DTEND"):
1.34 + dtend, dtend_attr = obj.get_datetime_item("DTEND")
1.35 + elif obj.has_key("DURATION"):
1.36 + duration = obj.get_duration("DURATION")
1.37 + dtend = dtstart + duration
1.38 + dtend_attr = dtstart_attr
1.39 + else:
1.40 + dtend, dtend_attr = dtstart, dtstart_attr
1.41 + return (dtstart, dtstart_attr), (dtend, dtend_attr)
1.42 +
1.43 def handle_new_attendees(self, obj):
1.44
1.45 "Add or remove new attendees. This does not affect the stored object."
1.46 @@ -1090,11 +1099,14 @@
1.47 dttimes_control = args.get("dttimes-control", [None])[0]
1.48 with_time = dttimes_control == "enable"
1.49
1.50 + # Start with the object's original details, overriding them with request
1.51 + # information.
1.52 +
1.53 + (dtstart, dtstart_attr), (dtend, dtend_attr) = self.get_event_period(obj)
1.54 +
1.55 t = self.handle_date_controls("dtstart", with_time)
1.56 if t:
1.57 dtstart, dtstart_attr = t
1.58 - else:
1.59 - dtstart, dtstart_attr = obj.get_datetime_item("DTSTART")
1.60
1.61 if dtend_control == "enable":
1.62 t = self.handle_date_controls("dtend", with_time)
1.63 @@ -1104,14 +1116,6 @@
1.64 dtend, dtend_attr = None, {}
1.65 elif dtend_control == "disable":
1.66 dtend, dtend_attr = None, {}
1.67 - elif obj.has_key("DTEND"):
1.68 - dtend, dtend_attr = obj.get_datetime_item("DTEND")
1.69 - elif obj.has_key("DURATION"):
1.70 - duration = obj.get_duration("DURATION")
1.71 - dtend = dtstart + duration
1.72 - dtend_attr = dtstart_attr
1.73 - else:
1.74 - dtend, dtend_attr = dtstart, dtstart_attr
1.75
1.76 # Change end dates to refer to the actual dates, not the iCalendar
1.77 # "next day" dates.