예제 #1
0
def register():
    """
    New user's registration
    :return:
    """
    form = RegistrationForm(request.form)
    if form.validate():
        nickname = form.nickname.data
        pyname = ''.join(lazy_pinyin(nickname, errors='replace'))
        pyname = User.make_unique_pyname(pyname)
        user = User(email=form.email.data, nickname=nickname, pyname=pyname,
                    password=form.password.data)
        user.save()
        login_user(user)
        registration_notify(user)
        return json.dumps({'msg': 'OK'})

    error_list = []
    [error_list.append(error) for field_name, field_errors in form.errors.items() for error in field_errors]
    return json.dumps({'msg': error_list})
예제 #2
0
def _edit_profile():
    """
    Edit the personal information
    :return:
    """
    pyname = current_user.pyname
    user = User.query.filter_by(pyname=pyname).first()

    new_nickname = request.form['new_nickname']
    new_gender = request.form['new_gender']
    new_about_me = request.form['new_about_me']

    zoom = request.form['zoom']
    x_offset = request.form['x_offset']
    y_offset = request.form['y_offset']
    width = request.form['width']
    height = request.form['height']

    if 'new_avatar' in request.files:
        new_avatar = request.files['new_avatar']
        filename = unique_filename(new_avatar.filename)
        filepath = os.path.join(app.config['UPLOAD_FOLDER'], filename)
        new_avatar.save(filepath)
        im = Image.open(filepath)

        def get_raw_pixel(pixel, z=zoom):
            return int(fabs(round(float(pixel)/(float(z)))))

        raw_x = get_raw_pixel(x_offset)
        raw_y = get_raw_pixel(y_offset)
        raw_width = get_raw_pixel(width)
        raw_height = get_raw_pixel(height)
        box = (raw_x, raw_y, raw_x+raw_width, raw_y+raw_height)
        region = im.crop(box)
        max_width = app.config['MAX_AVATAR_IMG_WIDTH']
        if raw_width > max_width:
            region = region.resize((max_width, max_width), Image.ANTIALIAS)
        region.save(filepath)
        user.avatar = url_for('uploaded_file', filename=filename)
    else:
        pass

    if user.nickname != new_nickname:
        user.nickname = new_nickname
        new_pyname = ''.join(lazy_pinyin(new_nickname, errors='replace'))
        new_pyname = User.make_unique_pyname(new_pyname)
        user.pyname = new_pyname

    if new_gender == 'female':
        gender = 0
    elif new_gender == 'male':
        gender = 1
    else:
        gender = 10
    user.gender = gender
    user.about_me = new_about_me
    user.save()
    new_profile_data = {'nickname': new_nickname, 'gender': new_gender,
                        'about-me': new_about_me, 'avatar': current_user.avatar}

    return json.dumps(new_profile_data)