1.1 --- a/imip_manager.py Wed Feb 04 14:53:47 2015 +0100
1.2 +++ b/imip_manager.py Wed Feb 04 15:04:15 2015 +0100
1.3 @@ -124,16 +124,18 @@
1.4
1.5 # Communication methods.
1.6
1.7 - def send_message(self, method, sender):
1.8 + def send_message(self, method, sender, for_organiser):
1.9
1.10 """
1.11 Create a full calendar object employing the given 'method', and send it
1.12 - to the appropriate recipients, also sending a copy to the 'sender'.
1.13 + to the appropriate recipients, also sending a copy to the 'sender'. The
1.14 + 'for_organiser' value indicates whether the organiser is sending this
1.15 + message.
1.16 """
1.17
1.18 parts = [self.obj.to_part(method)]
1.19
1.20 - if self.user == self.organiser:
1.21 + if for_organiser:
1.22 recipients = map(get_address, self.attendees)
1.23 else:
1.24 recipients = [get_address(self.organiser)]
1.25 @@ -184,7 +186,7 @@
1.26 self.obj["SEQUENCE"] = [(str(int(sequence) + 1), {})]
1.27 self.update_dtstamp()
1.28
1.29 - self.send_message("REPLY", get_address(attendee))
1.30 + self.send_message("REPLY", get_address(attendee), for_organiser=False)
1.31
1.32 return True
1.33
1.34 @@ -209,7 +211,7 @@
1.35 self.obj["SEQUENCE"] = [(str(int(sequence) + 1), {})]
1.36 self.update_dtstamp()
1.37
1.38 - self.send_message("REQUEST", get_address(self.organiser))
1.39 + self.send_message("REQUEST", get_address(self.organiser), for_organiser=True)
1.40
1.41 return True
1.42
1.43 @@ -443,8 +445,7 @@
1.44 if not participant:
1.45 continue
1.46 participant = get_uri(participant)
1.47 - if participant != self.user:
1.48 - rwrite(("ATTENDEE", {}, participant))
1.49 + rwrite(("ATTENDEE", {"RSVP" : "TRUE", "PARTSTAT" : "NEEDS-ACTION"}, participant))
1.50
1.51 obj = ("VEVENT", {}, record)
1.52
1.53 @@ -521,18 +522,18 @@
1.54
1.55 is_organiser = obj.get_value("ORGANIZER") == self.user
1.56
1.57 - if not is_organiser:
1.58 - attendees = obj.get_value_map("ATTENDEE")
1.59 - attendee_attr = attendees.get(self.user)
1.60 + attendees = obj.get_value_map("ATTENDEE")
1.61 + is_attendee = attendees.has_key(self.user)
1.62 + attendee_attr = attendees.get(self.user)
1.63
1.64 - if attendee_attr:
1.65 - partstat = attendee_attr.get("PARTSTAT")
1.66 - if partstat == "ACCEPTED":
1.67 - page.p("This request has been accepted.")
1.68 - elif partstat == "DECLINED":
1.69 - page.p("This request has been declined.")
1.70 - else:
1.71 - page.p("This request has not yet been dealt with.")
1.72 + if is_attendee:
1.73 + partstat = attendee_attr.get("PARTSTAT")
1.74 + if partstat == "ACCEPTED":
1.75 + page.p("This request has been accepted.")
1.76 + elif partstat == "DECLINED":
1.77 + page.p("This request has been declined.")
1.78 + else:
1.79 + page.p("This request has not yet been dealt with.")
1.80
1.81 if needs_action:
1.82 page.p("An action is required for this request:")
1.83 @@ -545,7 +546,8 @@
1.84
1.85 if is_organiser:
1.86 page.input(name="invite", type="submit", value="Invite")
1.87 - else:
1.88 +
1.89 + if is_attendee:
1.90 page.input(name="accept", type="submit", value="Accept")
1.91 page.add(" ")
1.92 page.input(name="decline", type="submit", value="Decline")