def succeed(): """ """ # Request all submitted values profile_field = self.request.POST.get("profile") username_field = self.request.POST.get("username") firstname_field = self.request.POST.get("firstname") lastname_field = self.request.POST.get("lastname") password_field = self.request.POST.get("password") email_field = self.request.POST.get("email") # Get the selected profile selected_profile = Session.query(Profile).filter( Profile.code == profile_field).first() # Get the initial user group user_group = Session.query(Group).filter( Group.name == "editors").first() # Create an activation uuid activation_uuid = uuid.uuid4() # Create a new user new_user = User(username_field, password_field, email_field, firstname=firstname_field, lastname=lastname_field, activation_uuid=activation_uuid, registration_timestamp=datetime.now()) # Set the user profile new_user.profiles = [selected_profile] new_user.groups = [user_group] # Commit the new user Session.add(new_user) activation_dict = { "firstname": new_user.firstname, "lastname": new_user.lastname, "activation_link": "http://%s/users/activate?uuid=%s&username="******"%s" % ( self.request.environ['HTTP_HOST'], activation_uuid, new_user.username) } email_text = render( get_customized_template_path( self.request, 'emails/account_activation.mak'), activation_dict, self.request) self._send_email( [email_field], _(u"Activate your Account"), email_text) return render_to_response( get_customized_template_path( self.request, 'users/registration_success.mak'), {}, self.request)
def add_user(request): if 'groups' in request.params: requested_groups = request.POST.getall('groups') else: raise HTTPBadRequest("Missing group parameter") if 'username' in request.params: username = request.params['username'] else: raise HTTPBadRequest("Missing username parameter") if 'email' in request.params: email = request.params['email'] else: raise HTTPBadRequest("Missing email parameter") if 'password' in request.params: password = request.params['password'] else: raise HTTPBadRequest("Missing password parameter") # Check email email_query = Session.query(User).filter(User.email == email) try: email_query.one() raise HTTPBadRequest( 'There already exists a user with this email address') except NoResultFound: pass # Check groups groups = Session.query(Group).filter( Group.name.in_(requested_groups)).all() if len(groups) == 0: raise HTTPBadRequest("Invalid group parameter") if not _user_exists(User.username, username): # Create an activation uuid activation_uuid = uuid.uuid4() # Create a new user new_user = User(username=username, password=password, email=email, activation_uuid=activation_uuid, registration_timestamp=datetime.now()) new_user.groups = groups return {"success": True, "msg": "New user created successfully."} else: request.response.status = 400 return {"success": False, "msg": "User exists."}