1.1 --- a/imip_manager.py Tue Mar 10 18:27:14 2015 +0100
1.2 +++ b/imip_manager.py Tue Mar 10 19:12:03 2015 +0100
1.3 @@ -876,13 +876,15 @@
1.4 is_organiser = get_uri(obj.get_value("ORGANIZER")) == self.user
1.5
1.6 if is_organiser:
1.7 - (dtstart, dtstart_attr), (dtend, dtend_attr) = self.show_object_organiser_controls(obj)
1.8 + (dtstart, dtstart_attr), (dtend, dtend_attr) = self.get_active_event_period(obj)
1.9 new_attendees, new_attendee = self.handle_new_attendees(obj)
1.10 else:
1.11 (dtstart, dtstart_attr), (dtend, dtend_attr) = self.get_event_period(obj)
1.12 new_attendees = []
1.13 new_attendee = ""
1.14
1.15 + self.show_object_datetime_controls(dtstart, dtend)
1.16 +
1.17 # Provide a summary of the object.
1.18
1.19 page.table(class_="object", cellspacing=5, cellpadding=5)
1.20 @@ -1044,24 +1046,6 @@
1.21
1.22 page.form.close()
1.23
1.24 - def get_event_period(self, obj):
1.25 -
1.26 - """
1.27 - Return (dtstart, dtstart attributes), (dtend, dtend attributes) for
1.28 - 'obj'.
1.29 - """
1.30 -
1.31 - dtstart, dtstart_attr = obj.get_datetime_item("DTSTART")
1.32 - if obj.has_key("DTEND"):
1.33 - dtend, dtend_attr = obj.get_datetime_item("DTEND")
1.34 - elif obj.has_key("DURATION"):
1.35 - duration = obj.get_duration("DURATION")
1.36 - dtend = dtstart + duration
1.37 - dtend_attr = dtstart_attr
1.38 - else:
1.39 - dtend, dtend_attr = dtstart, dtstart_attr
1.40 - return (dtstart, dtstart_attr), (dtend, dtend_attr)
1.41 -
1.42 def handle_new_attendees(self, obj):
1.43
1.44 "Add or remove new attendees. This does not affect the stored object."
1.45 @@ -1086,9 +1070,30 @@
1.46
1.47 return new_attendees, new_attendee
1.48
1.49 - def show_object_organiser_controls(self, obj):
1.50 -
1.51 - "Provide controls to change the displayed object 'obj'."
1.52 + def get_event_period(self, obj):
1.53 +
1.54 + """
1.55 + Return (dtstart, dtstart attributes), (dtend, dtend attributes) for
1.56 + 'obj'.
1.57 + """
1.58 +
1.59 + dtstart, dtstart_attr = obj.get_datetime_item("DTSTART")
1.60 + if obj.has_key("DTEND"):
1.61 + dtend, dtend_attr = obj.get_datetime_item("DTEND")
1.62 + elif obj.has_key("DURATION"):
1.63 + duration = obj.get_duration("DURATION")
1.64 + dtend = dtstart + duration
1.65 + dtend_attr = dtstart_attr
1.66 + else:
1.67 + dtend, dtend_attr = dtstart, dtstart_attr
1.68 + return (dtstart, dtstart_attr), (dtend, dtend_attr)
1.69 +
1.70 + def get_active_event_period(self, obj):
1.71 +
1.72 + """
1.73 + Return (dtstart, dtstart attributes), (dtend, dtend attributes) for
1.74 + 'obj', overridden by request parameters, if present.
1.75 + """
1.76
1.77 page = self.page
1.78 args = self.env.get_args()
1.79 @@ -1123,11 +1128,23 @@
1.80 if dtend and not isinstance(dtend, datetime):
1.81 dtend -= timedelta(1)
1.82
1.83 - # Show the end datetime controls if already active or if an object needs
1.84 - # them.
1.85 -
1.86 - dtend_enabled = dtend_control == "enable" or isinstance(dtend, datetime) or dtstart != dtend
1.87 - dttimes_enabled = dttimes_control == "enable" or isinstance(dtstart, datetime) or isinstance(dtend, datetime)
1.88 + return (dtstart, dtstart_attr), (dtend, dtend_attr)
1.89 +
1.90 + def show_object_datetime_controls(self, start, end):
1.91 +
1.92 + """
1.93 + Show datetime-related controls if already active or if an object needs
1.94 + them for the given 'start' to 'end' period.
1.95 + """
1.96 +
1.97 + page = self.page
1.98 + args = self.env.get_args()
1.99 +
1.100 + dtend_control = args.get("dtend-control", [None])[0]
1.101 + dttimes_control = args.get("dttimes-control", [None])[0]
1.102 +
1.103 + dtend_enabled = dtend_control == "enable" or isinstance(end, datetime) or start != end
1.104 + dttimes_enabled = dttimes_control == "enable" or isinstance(start, datetime) or isinstance(end, datetime)
1.105
1.106 if dtend_enabled:
1.107 page.input(name="dtend-control", type="radio", value="enable", id="dtend-enable", checked="checked")
1.108 @@ -1143,8 +1160,6 @@
1.109 page.input(name="dttimes-control", type="radio", value="enable", id="dttimes-enable")
1.110 page.input(name="dttimes-control", type="radio", value="disable", id="dttimes-disable", checked="checked")
1.111
1.112 - return (dtstart, dtstart_attr), (dtend, dtend_attr)
1.113 -
1.114 def show_recurrences(self, obj):
1.115
1.116 "Show recurrences for the object having the given representation 'obj'."