def user_save(): from model import User # Load user id from original username user = User.getInstanceFromUsername(request.form['original_username']) errors = [] # Validate data # Check for required fields labels = {'username': '******', 'email': 'E-mail', 'display_name': 'Display Name'} for el in ['username', 'email', 'display_name']: if el not in request.form or len(request.form[el]) == 0: errors.append("'{0}' is a required field.".format(labels[el])) # Make sure username is not currently used if user.username != request.form['username'] and User.usernameExists(request.form['username'], exclude_user_id = user.user_id): errors.append("The username '{username}' already exists in our system. Please choose a different one.".format(username = request.form['username'])) # No spaces in username or password if ' ' in request.form['username']: errors.append('Username may not contain spaces') if len(request.form['username']) not in range(4, 31): errors.append('Username must be 4-30 characters long.') # If errors, display form again if len(errors) != 0: role_id = '' if 'role_id' in request.form and len(request.form['role_id']) > 0: role_id = int(request.form['role_id']) return render_template( 'user/form.html', error = "<br/>\n".join(errors), original_username = request.form['original_username'], username = request.form['username'], email = request.form['email'], display_name = request.form['display_name'], active = int(request.form['active']), role_ids = [role_id] ) # If no errors, save user as not active and redirect to awaiting approval page user.username = request.form['username'] user.email = request.form['email'] user.display_name = request.form['display_name'] user.active = request.form['active'] user.save() user.update_roles([request.form['role_id']]) return redirect(url_for('user_manage'))
def register_submit(): from model import User errors = [] # Validate data # Check captcha from recaptcha.client import captcha captcha_response = captcha.submit( request.form['recaptcha_challenge_field'], request.form['recaptcha_response_field'], '6Ldyx9cSAAAAAOKLEN0G2dGGSFH1t0_ueKkoymY0', request.remote_addr, ) if not captcha_response.is_valid: errors.append('The words you typed in the captcha were not correct.') # Check for required fields labels = {'username': '******', 'password': '******', 'password2': 'Re-type Password', 'email': 'E-mail', 'email2': 'Re-type Email', 'display_name': 'Display Name'} for el in ['username', 'password', 'password2', 'email', 'email2', 'display_name']: if el not in request.form or len(request.form[el]) == 0: errors.append("'{0}' is a required field.".format(labels[el])) # Make sure username is not currently used if User.usernameExists(request.form['username']): errors.append("The username '{username}' already exists in our system. Please choose a different one.".format(username = request.form['username'])) # Compared passwords and emails if request.form['password'] != request.form['password2']: errors.append('Passwords must match.') if request.form['email'] != request.form['email2']: errors.append('E-mail addresses must match.') # No spaces in username or password if ' ' in request.form['username']: errors.append('Username may not contain spaces') if len(request.form['username']) not in range(4, 31): errors.append('Username must be 4-30 characters long.') if len(request.form['password']) not in range(6, 21): errors.append('Password must be 6-20 characters long.') # If errors, display form again if len(errors) != 0: captcha_js = captcha.displayhtml('6Ldyx9cSAAAAABAAXEIXwgBeLriZG29rEPFjzfD3') return render_template( 'register.html', error = "<br/>\n".join(errors), username = request.form['username'], password = request.form['password'], password2 = request.form['password2'], email = request.form['email'], email2 = request.form['email2'], display_name = request.form['display_name'], captcha_js = captcha_js ) # If no errors, save user as not active and redirect to awaiting approval page user = User.User() user.username = request.form['username'] user.set_encrypted_password(request.form['password']) user.email = request.form['email'] user.display_name = request.form['display_name'] user.save() import smtplib import string subject = "New Registration on ClimbSpotter.com" to = "*****@*****.**" frm = request.form['email'] text = "A new registration has been received for '{0}' ({1})".format(request.form['display_name'], request.form['username']) body = string.join(( "From: [email protected]", # % frm, "Reply-to: %s" % frm, "To: %s" % to, "Subject: %s" % subject , "", text ), "\r\n") server = smtplib.SMTP('localhost') server.sendmail(frm, [to], body) server.quit() return redirect(url_for('register_done'))