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
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, } )
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())})
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")