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)
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')
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)
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)
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)