Beispiel #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)
Beispiel #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]
Beispiel #3
0
    def get(self, personaKey):

        self.user = users.get_current_user()

        if not self.getUserProfile():
            self.sendJsonError("User profile not found")

        try:
            persona = Persona.get(personaKey)
            
            friendsProfile = persona.parent()
            
            if not contactExists(self.userProfile, friendsProfile) is None:
                self.sendJsonError("Person already in contacts.")
                return

            existingPsinque = Psinque.all(keys_only = True).ancestor(self.userProfile).filter("fromUser ="******"An incoming psinque from this person already exists")
                return

            newPsinque = Psinque(parent = self.userProfile,
                                 fromUser = friendsProfile,
                                 status = "established",
                                 private = not persona.public,
                                 persona = persona)
            newPsinque.put()
 
            # Contact on user's side
            if persona.public:
                status = "public"
            else:
                status = "private"

            contact = Contact(parent = self.userProfile,
                              incoming = newPsinque,
                              friend = friendsProfile,
                              group = self.userProfile.defaultGroup,
                              status = status,
                              persona = self.userProfile.publicPersona)
            contact.put()

            # Contact on user's friend's side
            friendsContact = Contact(parent = friendsProfile,
                              outgoing = newPsinque,
                              friend = self.userProfile,
                              friendsContact = contact,
                              group = friendsProfile.defaultGroup,
                              status = status,
                              persona = persona)
            friendsContact.put()

            contact.friendsContact = friendsContact
            contact.put()
            
            self.displayMessage("templates/Message_Success.html",
                              templateVariables = {
                                  'message': 'You have successfully added a new contact to your contact list',
            })
            
        except datastore_errors.BadKeyError:
            self.sendJsonError("Persona not found!")