1.1 --- a/imip_manager.py Sun Oct 26 19:43:41 2014 +0100
1.2 +++ b/imip_manager.py Sun Oct 26 19:44:25 2014 +0100
1.3 @@ -4,7 +4,10 @@
1.4
1.5 sys.path.append("/var/lib/imip-agent")
1.6
1.7 -from imiptools.content import get_values, parse_object
1.8 +from imiptools.content import format_datetime, get_datetime, get_item, \
1.9 + get_utc_datetime, get_values, parse_object, \
1.10 + to_timezone
1.11 +from imiptools.period import have_conflict
1.12 import markup
1.13 import imip_store
1.14
1.15 @@ -120,16 +123,68 @@
1.16 if not request:
1.17 return False
1.18
1.19 + # Handle a submitted form.
1.20 +
1.21 + args = self.env.get_args()
1.22 + show_form = False
1.23 +
1.24 + if args.has_key("accept"):
1.25 + pass
1.26 + elif args.has_key("decline"):
1.27 + pass
1.28 + elif args.has_key("ignore"):
1.29 + pass
1.30 + else:
1.31 + show_form = True
1.32 +
1.33 self.new_page(title="Request")
1.34 +
1.35 + # Provide a summary of the request.
1.36 +
1.37 self.page.p("The following request was received:")
1.38 self.page.dl()
1.39
1.40 - for name in ["DTSTART", "DTEND", "ORGANIZER", "ATTENDEE"]:
1.41 + for name in ["SUMMARY", "DTSTART", "DTEND", "ORGANIZER", "ATTENDEE"]:
1.42 for value in get_values(request, name):
1.43 self.page.dt(name)
1.44 self.page.dd(value)
1.45
1.46 self.page.dl.close()
1.47 +
1.48 + dtstart = format_datetime(get_utc_datetime(request, "DTSTART"))
1.49 + dtend = format_datetime(get_utc_datetime(request, "DTEND"))
1.50 +
1.51 + # Indicate whether there are conflicting events.
1.52 +
1.53 + freebusy = self.store.get_freebusy(self.user)
1.54 + if freebusy:
1.55 +
1.56 + # Obtain any time zone details from the suggested event.
1.57 +
1.58 + _dtstart, attr = get_item(request, "DTSTART")
1.59 + tzid = attr.get("TZID")
1.60 +
1.61 + # Show any conflicts.
1.62 +
1.63 + for start, end, uid in have_conflict(freebusy, [(dtstart, dtend)], True):
1.64 + start = format_datetime(to_timezone(get_datetime(start), tzid))
1.65 + end = format_datetime(to_timezone(get_datetime(end), tzid))
1.66 + self.page.p("Event conflicts with another from %s to %s." % (start, end))
1.67 +
1.68 + # Show a form if no action has just been taken.
1.69 +
1.70 + if show_form:
1.71 + self.page.p("Action to take for this request:")
1.72 + self.page.form(method="POST")
1.73 + self.page.p()
1.74 + self.page.input(name="accept", type="submit", value="Accept")
1.75 + self.page.add(" ")
1.76 + self.page.input(name="decline", type="submit", value="Decline")
1.77 + self.page.add(" ")
1.78 + self.page.input(name="ignore", type="submit", value="Ignore")
1.79 + self.page.p.close()
1.80 + self.page.form.close()
1.81 +
1.82 return True
1.83
1.84 def select_action(self):