1.1 --- a/imiptools/handlers/person.py Tue Nov 25 18:25:44 2014 +0100
1.2 +++ b/imiptools/handlers/person.py Tue Nov 25 18:26:30 2014 +0100
1.3 @@ -7,6 +7,7 @@
1.4 from email.mime.text import MIMEText
1.5 from imiptools.config import MANAGER_PATH, MANAGER_URL
1.6 from imiptools.content import Handler, to_part
1.7 +from imiptools.handlers.common import CommonFreebusy
1.8 from socket import gethostname
1.9 from vCalendar import to_node
1.10
1.11 @@ -150,7 +151,7 @@
1.12 url = "%s/%s" % (get_manager_url().rstrip("/"), self.uid)
1.13 return "REQUEST", MIMEText("A request has been queued and can be viewed here: %s" % url)
1.14
1.15 -class Freebusy(PersonHandler):
1.16 +class Freebusy(PersonHandler, CommonFreebusy):
1.17
1.18 "A free/busy handler."
1.19
1.20 @@ -176,46 +177,9 @@
1.21 information for each indicated attendee.
1.22 """
1.23
1.24 - # NOTE: This is currently the same as the resource handler but should be
1.25 - # NOTE: subject to policy/preferences.
1.26 -
1.27 - oa = self.require_organiser_and_attendees()
1.28 - if not oa:
1.29 - return None
1.30 -
1.31 - (organiser, organiser_attr), attendees = organiser_item, attendees = oa
1.32 -
1.33 - # Validate the organiser, ignoring spoofed requests.
1.34 -
1.35 - if not self.validate_identities([organiser_item]):
1.36 - return None
1.37 -
1.38 - # Construct an appropriate fragment.
1.39 -
1.40 - calendar = []
1.41 - cwrite = calendar.append
1.42 + # NOTE: This should be subject to policy/preferences.
1.43
1.44 - # Get the details for each attendee.
1.45 -
1.46 - for attendee, attendee_attr in attendees.items():
1.47 - freebusy = self.store.get_freebusy(attendee)
1.48 -
1.49 - record = []
1.50 - rwrite = record.append
1.51 -
1.52 - rwrite(("ORGANIZER", organiser_attr, organiser))
1.53 - rwrite(("ATTENDEE", attendee_attr, attendee))
1.54 - rwrite(("UID", {}, self.uid))
1.55 -
1.56 - if freebusy:
1.57 - for start, end, uid in freebusy:
1.58 - rwrite(("FREEBUSY", {"FBTYPE" : "BUSY"}, [start, end]))
1.59 -
1.60 - cwrite(("VFREEBUSY", {}, record))
1.61 -
1.62 - # Return the reply.
1.63 -
1.64 - return "REPLY", to_part("REPLY", calendar)
1.65 + return CommonFreebusy.request(self)
1.66
1.67 class Journal(PersonHandler):
1.68