Пример #1
0
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'))
Пример #2
0
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'))