def acceptrequest(self): try: psinque = self._getPsinqueByKey() except AjaxError: self.displayMessage("templates/Message_PsinqueNotFound.html") return contactIn = self._getContactForIncoming(psinque) contactOut = self._getContactForOutgoing(psinque) if contactOut is None: contactOut = Contact( parent=self.userProfile, friend=contactIn.parent(), friendsContact=contactIn, group=self.userProfile.defaultGroup, persona=self.userProfile.defaultPersona, ) contactOut.put() contactIn.friendsContact = contactOut if not contactOut.outgoing is None: raise AjaxError("There already is a psinque from this user") existingPsinque = contactIn.incoming if not existingPsinque is None: if existingPsinque.private: psinque.delete() raise AjaxError("There already is a private psinque from this user") else: existingPsinque.delete() contactIn.incoming = psinque contactIn.status = "private" contactIn.persona = contactIn.parent().defaultPersona contactIn.put() contactOut.outgoing = psinque contactOut.status = "private" contactOut.persona = contactOut.parent().defaultPersona contactOut.put() psinque.status = "established" psinque.persona = psinque.fromUser.defaultPersona psinque.put() Notifications.notifyAcceptedRequest(psinque) if self.request.get("email") == "true": self.displayMessage( "templates/Message_Accepted.html", templateVariables={"friendsName": contactOut.displayName} ) else: self._sendNewContact(contactOut)
def _addPublicPsinque(self, friendsProfile): contact = contactExists(self.userProfile, friendsProfile) if contact is None: contactExisted = False contact = Contact( parent=self.userProfile, friend=friendsProfile, group=self.userProfile.defaultGroup, persona=self.userProfile.publicPersona, ) contact.put() friendsContact = Contact.all().ancestor(friendsProfile).filter("friend =", self.userProfile).get() if not friendsContact is None: persona = friendsContact.persona if not persona.public: contact.status = "private" else: persona = friendsProfile.publicPersona newPsinque = Psinque( parent=contact, fromUser=friendsProfile, private=False, persona=persona, status="established" ) newPsinque.put() if not friendsContact is None: if friendsContact.incoming: contact.outgoing = friendsContact.incoming friendsContact.outgoing = newPsinque friendsContact.put() contact.incoming = newPsinque contact.put() return [contactExisted, contact, newPsinque]