예제 #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)
예제 #2
0
    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]