예제 #1
0
def register():
    if request.method == 'GET':
        return render_template('register.html')
    username = request.form.get('username')
    password = request.form.get('password')
    nickname = request.form.get('nickname')
    age = request.form.get('age')
    sex = request.form.get('sex')
    height = request.form.get('height')
    weight = request.form.get('weight')
    action = request.form.get('button')
    if action == 'tologin':
        return redirect(url_for('login'))
    if not username:
        flash('请填写用户名')
        return render_template('register.html')
    elif not password:
        flash('请填写密码')
        return render_template('register.html')
    elif not nickname:
        flash('请填写昵称')
        return render_template('register.html')
    elif not sex:
        flash('请填写性别')
        return render_template('register.html')
    elif not age:
        flash('请填写年龄')
        return render_template('register.html')
    elif not height:
        flash('请填写身高')
        return render_template('register.html')
    elif not weight:
        flash('请填写体重')
        return render_template('register.html')
    age = int(age)
    height = float(height)
    weight = float(weight)
    sex = 'm' if '男' in sex else 'f'
    self_infos = get_healthy_stats(sex, age, height)

    family_numbers = 0
    family_members = []
    for key in list(request.form.keys()):
        if 'relationship_' in key:
            index = int(key.replace('relationship_', ''))
            c_key = 'relationship'
            c_value = request.form.get(key)
        elif 'age_' in key:
            index = int(key.replace('age_', ''))
            c_key = 'age'
            c_value = int(request.form.get(key))
        elif 'sex_' in key:
            index = int(key.replace('sex_', ''))
            c_key = 'sex'
            c_value = request.form.get(key)
            c_value = 'm' if '男' in c_value else 'f'
        elif 'height_' in key:
            index = int(key.replace('height_', ''))
            c_key = 'height'
            c_value = float(request.form.get(key))
        elif 'weight_' in key:
            index = int(key.replace('weight_', ''))
            c_key = 'weight'
            c_value = float(request.form.get(key))
        else:
            continue
        while len(family_members) < index+1:
            family_members.append(dict())
        family_members[index][c_key] = c_value

    family_members.append({
        'relationship': '本人',
        'age': age,
        'sex': sex,
        'height': height,
        'weight': weight,
        'need_protein': self_infos['np'],
        'need_energy': self_infos['ne'],
        'need_fat': self_infos['nf']
    })

    for member in family_members:
        age = member['age']
        sex = member['sex']
        height = member['height']
        weight = member['weight']
        stats = get_healthy_stats(sex, age, height)
        member['need_protein'] = stats['np']
        member['need_energy'] = stats['ne']
        member['need_fat'] = stats['nf']

    new_user = User(username, db, nickname=nickname)
    if new_user.exists():
        flash('用户名 {} 已被注册'.format(username))
        return render_template('login.html', register=True)
    else:
        new_user.password(password)
        sql = "INSERT INTO `SuperMenu`.`family_member` (`user`, `relationship`, `sex`, `age`, `need_energy`, `need_protein`, `need_axunge`) VALUES ('{}', '{}', '{}', '{}', '{}', '{}', '{}');"
        for member in family_members:
            db.execute(sql.format(
                username, member['relationship'], member['sex'],
                member['age'], member['need_energy'],
                member['need_protein'], member['need_fat']
            ))
        flash('{} 注册成功'.format(username))
        return redirect(url_for('login'))