Пример #1
0
    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)