Exemple #1
0
def createNewProfile(user):

    # Create an empty profile
    userProfile = UserProfile(user = user)
    userProfile.put()  # save the new (and empty) profile in the Datastore in order to obtain its key
    logging.info("New profile created, key = " + str(userProfile.key()))

    # User settings
    userSettings = UserSettings(parent = userProfile)
    userSettings.put()
    userProfile.userSettings = userSettings

    # Primary email address (needed for notifications, etc.)
    userEmail = UserEmail(parent = userProfile,
                          itemValue = user.email(),  # "*****@*****.**"
                          privacyType = 'Home',
                          primary = True)
    userEmail.put()

    userProfile.defaultGroup  = createNewGroup(userProfile, 'Default')
    userProfile.defaultPersona = createNewPersona(userProfile, 'Default', userEmail)
    userProfile.publicPersona  = createNewPersona(userProfile, 'Public', userEmail)

    # Save the updated user profile
    userProfile.put()

    
    nickname = UserNickname(parent = userProfile,
                            itemValue = user.nickname())
    nickname.put()

    return userProfile
Exemple #2
0
    def searchemail(self):

        # Search for the owner of the email address
        email = self.request.get("email")
        email = email.lower()

        userEmail = UserEmail.all(keys_only=True).filter("itemValue =", email).get()
        if not userEmail:

            self.sendJsonOK({"found": False})

        else:

            # Check if it's not my own email address
            userProfile = UserProfile.get(userEmail.parent())
            if userProfile.key() == self.userProfile.key():
                raise AjaxError("It is your own email address.")

            # Check if there already is a Psinque from that user
            psinque = self._getPsinqueFrom(userProfile)
            if not psinque is None:
                raise AjaxError("You already have a psinque with this email address.")

            # Check if the account is active
            if not userProfile.active:
                self.sendJsonOK({"found": False})  # act like this person is not registered

            self.sendJsonOK(
                {
                    "found": True,
                    "key": str(userProfile.key()),
                    "displayName": userProfile.displayName,
                    "publicEnabled": userProfile.publicEnabled,
                }
            )
Exemple #3
0
    def addemail(self):

        email = self._checkNewItemByName(UserEmail, 'email')
        email = email.lower()

        userEmail = UserEmail(parent = self.userProfile,
                              itemValue = email,
                              privacyType = self.getRequiredParameter('privacy'),
                              primary = self.getRequiredBoolParameter('primary'))
        userEmail.put()

        # Add permissions for this email in every outgoing group
        for persona in self.userProfile.personas:
            permitEmail = PermitEmail(parent = persona,
                                      userEmail = userEmail)
            permitEmail.put()

        self._updateAllVCards()

        self.sendJsonOK({'key': str(userEmail.key())})
Exemple #4
0
def deleteProfile(userProfileKey):

    userProfile = UserProfile.get(userProfileKey)    
    
    for e in CardDAVLogin.all().ancestor(userProfile):
        e.delete()
    for e in IndividualPermit.all().ancestor(userProfile):
        e.delete()
    for e in Persona.all().ancestor(userProfile):
        e.delete()
    for e in Psinque.all().ancestor(userProfile):
        e.delete()
    for e in Contact.all().ancestor(userProfile):
        e.delete()
    for e in Group.all().ancestor(userProfile):
        e.delete()
    for e in UserAddress.all().ancestor(userProfile):
        e.delete()
    for e in UserEmail.all().ancestor(userProfile):
        e.delete()
    for e in UserIM.all().ancestor(userProfile):
        e.delete()
    for e in UserPhoneNumber.all().ancestor(userProfile):
        e.delete()
    for e in UserPhoto.all().ancestor(userProfile):
        e.image.delete()
        e.delete()
    for e in UserNickname.all().ancestor(userProfile):
        e.delete()
    for e in UserCompany.all().ancestor(userProfile):
        e.delete()
    for e in UserWebpage.all().ancestor(userProfile):
        e.delete()
    
    if not userProfile.userSettings is None:
        userProfile.userSettings.delete()
        
    userProfile.delete()
    logging.info("User profile deleted")