def signup(): form = RegisterForm.get_form() if request.method == 'POST': success = form.validate(request.form) data = form.data_by_attr() if success: try: user = User(email=data['email'], name=data['full_name'], _type=data['type'], username=data['username']) # In case there are no options, only set these if possible if data['team']: user.team = Team(id=data['team']) if data['major']: user.major = Major(key=data['major']) user.password = data['password'] user.save() except (mongoengine.errors.OperationError, mongoengine.errors.ValidationError): raise form.start.add_error( {'message': 'Unknown database error, please retry.'}) else: form.start.add_error( {'message': 'You\'ve been successfully registered, your account is pending approval', 'type': 'success'}) return render_template('signup.html', form=form.render())