예제 #1
0
def victorine():

    if 'username' not in session:
        return redirect('/sign_in')

    form = QuizForm()

    if form.validate_on_submit():
        result = []
        true_answers = 0
        status = (None, None)

        for i in range(6):
            block = 'block_' + str(i + 1)
            result.append(request.form.get(block))

        for elem in result:
            if elem == 'True':
                true_answers += 1

        if true_answers == 0:
            status = (str(true_answers), 'Среднестатистический обыватель!')
        else:
            status = (str(true_answers), alias[true_answers - 1])

        um = UserModel(db.get_connection())
        if um.exists(session['username'])[0]:
            um.change_status(status[1], um.exists(session['username'])[1])

        return render_template('result_quiz.html', r=status)
    else:
        return render_template('victorine.html', form=form)
예제 #2
0
def delete():
    if 'username' not in session:
        return redirect('/sign_in')

    um = UserModel(db.get_connection())
    if um.exists(session['username'])[0]:
        photo = um.get(um.exists(session['username'])[1])[6]
        um.delete(um.exists(session['username'])[1])

    way = 'static/img/' + photo
    os.remove(way)

    session.pop('username', 0)
    session.pop('photo', 0)
    session.pop('id', 0)

    return redirect('/login')
예제 #3
0
def sign_in():
    form = SignInForm()
    err = None
    if form.validate_on_submit():
        name = request.form['username']
        password = request.form['password']

        user = UserModel(db.get_connection())
        exists = user.exists(name)
        if (exists[0]):
            password_model = user.get(exists[1])[2]
            salt = len(user.get(exists[1])[3])

            # Проверка валидности введеных данных
            if check_password_hash(password_model[:len(password_model) - salt],
                                   password):
                photo = user.get(exists[1])[6]
                session['username'] = name
                session['photo'] = photo
                session['id'] = exists[1]

                return redirect('/main')
            else:
                err = 'Ошибка в логине или пароле'
                return render_template('sign_in.html',
                                       title='Авторизация',
                                       form=form,
                                       err=err)
        else:
            err = 'Пользователь не существует'
            return render_template('sign_in.html',
                                   title='Авторизация',
                                   form=form,
                                   err=err)

    return render_template('sign_in.html',
                           title='Авторизация',
                           form=form,
                           err=err)
예제 #4
0
def login():
    form = LoginForm()
    err = None
    if form.validate_on_submit():
        name = request.form['username']
        pso = request.form['password_one']
        pst = request.form['password_two']
        data = datetime.date.today()

        check = [False, False]

        # Проверка логина и пароля
        if UserModel(db.get_connection()).exists(name)[0]:
            err = 'Такой логин уже существует'
            return render_template('login.html',
                                   title='Регистрация',
                                   form=form,
                                   err=err)

        if len(name) > 5:
            for letter in name:
                if letter.isalpha():
                    check[0] = True
                    if letter not in string.ascii_letters:
                        err = 'Логин должен содержать латинские буквы и цифры'
                        return render_template('login.html',
                                               title='Регистрация',
                                               form=form,
                                               err=err)
                if letter.isdigit():
                    check[1] = True
        else:
            err = 'Логин должен быть длиннее 5 символов'
            return render_template('login.html',
                                   title='Регистрация',
                                   form=form,
                                   err=err)

        if check[0] is False or check[1] is False:
            err = 'Логин должен содержать латинские буквы и цифры'
            return render_template('login.html',
                                   title='Регистрация',
                                   form=form,
                                   err=err)

        if pso != pst:
            err = 'Пароли не одинаковы'
            return render_template('login.html',
                                   title='Регистрация',
                                   form=form,
                                   err=err)
        else:
            if len(pso) > 5:
                # Создание пользователя
                user = UserModel(db.get_connection())

                hash, salt = password_salt(pso)

                user.insert(name, hash, salt, data,
                            'Cреднестатистический обыватель', 'default.png')

                session['username'] = name
                session['photo'] = 'default.png'

                if user.exists(name)[0]:
                    session['id'] = user.exists(name)[1]

                return redirect('/success_login')
            else:
                err = 'Пароль должен быть длиннее 5 символов'
                return render_template('login.html',
                                       title='Регистрация',
                                       form=form,
                                       err=err)

    return render_template('login.html',
                           title='Регистрация',
                           form=form,
                           err=err)
예제 #5
0
def cabinet():
    if 'username' not in session:
        return redirect('/sign_in')

    um = UserModel(db.get_connection())
    all = []
    err = None

    if um.exists(session['username'])[0]:
        all = um.get(um.exists(session['username'])[1])

    tm = TheoryModel(db.get_connection())
    content = 'Всего теорий: ' + str(len(tm.get_all(user_id=all[0])))

    form = LoadPhotoForm()

    # Загрузка фотографии
    if form.validate_on_submit():
        f = form.file.data

        if f:
            name = f.filename
            session['photo'] = name
            result = open(name, 'wb')
            result.write(f.read())
            result.close()

            way = 'static/img/' + name

            # Если фотография уже существует в нашей папке, то удаляем ее
            move_photo(way, name)

            # Проверка того, является ли файл фотографией
            if not imghdr.what(way):
                err = 'Файл недопустимого формата'
                os.remove(way)
                return render_template('cabinet.html',
                                       n=session['username'],
                                       i=all[0],
                                       d=all[4],
                                       l=content,
                                       s=all[5],
                                       p=all[6],
                                       err=err)
            else:
                um = UserModel(db.get_connection())
                if um.exists(session['username'])[0]:
                    id = um.exists(session['username'])[1]
                um.change_photo(name, id)

        return redirect('/cabinet')

    else:
        return render_template('cabinet.html',
                               n=session['username'],
                               i=all[0],
                               d=all[4],
                               l=content,
                               s=all[5],
                               p=all[6],
                               err=err,
                               form=form)