Добавлены страницы упрощенной регистрации и подтверждения почты, а также API страницы для проверки пользователя и выдачи ему ключа от Яндекс.Карт
This commit is contained in:
parent
31fade6647
commit
2297b1a220
@ -9,7 +9,7 @@ class RegisterForm(FlaskForm):
|
||||
name = StringField('Имя', validators=[DataRequired()])
|
||||
surname = StringField('Фамилия', validators=[DataRequired()])
|
||||
login = StringField('Логин', validators=[DataRequired()])
|
||||
age = IntegerField('Возраст', validators=[DataRequired()])
|
||||
age = IntegerField('Возраст')
|
||||
about = TextAreaField('Расскажите о себе', default='')
|
||||
photo = FileField('Фото', validators=[FileAllowed(['jpg', 'png'], 'Images only!')])
|
||||
password = PasswordField('Пароль', validators=[DataRequired()])
|
||||
@ -17,6 +17,7 @@ class RegisterForm(FlaskForm):
|
||||
submit = SubmitField('Регистрация')
|
||||
del_photo = SubmitField('Удалить фотографию')
|
||||
submit2 = SubmitField('Сохранить')
|
||||
simple = False
|
||||
|
||||
|
||||
class Confirmation(FlaskForm):
|
||||
|
||||
76
main.py
76
main.py
@ -4,7 +4,7 @@ from random import randint, choices
|
||||
from waitress import serve
|
||||
import logging
|
||||
|
||||
from flask import Flask, render_template, request
|
||||
from flask import Flask, render_template, request, jsonify, make_response
|
||||
from flask_login import LoginManager, login_user, logout_user, login_required, current_user
|
||||
from flask_restful import abort
|
||||
from werkzeug.utils import redirect
|
||||
@ -693,11 +693,22 @@ def confirmation():
|
||||
session.commit()
|
||||
send_msg = False
|
||||
help_arg = False
|
||||
return redirect('/login')
|
||||
if form.simple:
|
||||
return redirect('/simple/can_close')
|
||||
else:
|
||||
return redirect('/login')
|
||||
else:
|
||||
return render_template('confirmation_reg.html', title='Подтверждение', form=conf,
|
||||
message='Коды не совпадают')
|
||||
return render_template('confirmation_reg.html', title='Подтверждение', form=conf, message='')
|
||||
if form.simple:
|
||||
return render_template('simple_confimication.html', title='Подтверждение', form=conf,
|
||||
message='Коды не совпадают')
|
||||
else:
|
||||
return render_template('confirmation_reg.html', title='Подтверждение', form=conf,
|
||||
message='Коды не совпадают')
|
||||
if form.simple:
|
||||
return render_template('simple_confimication.html', title='Подтверждение', form=conf,
|
||||
message='Коды не совпадают')
|
||||
else:
|
||||
return render_template('confirmation_reg.html', title='Подтверждение', form=conf, message='')
|
||||
else:
|
||||
conf = Confirmation()
|
||||
if not send_msg:
|
||||
@ -713,11 +724,37 @@ def confirmation():
|
||||
send_msg = False
|
||||
help_arg = False
|
||||
return redirect('/profile')
|
||||
return render_template('confirmation_reg.html', title='Подтверждение', form=conf, message='')
|
||||
|
||||
if form.simple:
|
||||
return render_template('simple_confimication.html', title='Подтверждение', form=conf,
|
||||
message='Коды не совпадают')
|
||||
else:
|
||||
return render_template('confirmation_reg.html', title='Подтверждение', form=conf, message='')
|
||||
else:
|
||||
return redirect('/')
|
||||
|
||||
|
||||
@app.route('/school_app_check_auth', methods=['POST'])
|
||||
def check_auth():
|
||||
req = request.json
|
||||
email = req['login']
|
||||
password = req['password']
|
||||
session = db_session.create_session()
|
||||
user = session.query(User).filter(User.email == email).first()
|
||||
if user:
|
||||
if user.check_password(password):
|
||||
return make_response(jsonify({'key': ''}), 200)
|
||||
else:
|
||||
return abort(403)
|
||||
else:
|
||||
return abort(404)
|
||||
|
||||
|
||||
@app.route('/simple/can_close')
|
||||
def can_close():
|
||||
return render_template('simple_can_close.html', title='Можете закрыть страницу')
|
||||
|
||||
|
||||
@app.route('/register', methods=['GET', 'POST'])
|
||||
def register():
|
||||
global help_arg
|
||||
@ -744,6 +781,33 @@ def register():
|
||||
return render_template('register.html', title='Регистрация', form=form, message='')
|
||||
|
||||
|
||||
@app.route('/simple/register', methods=['GET', 'POST'])
|
||||
def school_reg():
|
||||
global help_arg
|
||||
global photo
|
||||
form = RegisterForm()
|
||||
form.simple = True
|
||||
if form.validate_on_submit():
|
||||
if form.password.data != form.password2.data:
|
||||
return render_template('simple_register.html', title='Регистрация',
|
||||
form=form,
|
||||
message="Пароли не совпадают")
|
||||
session = db_session.create_session()
|
||||
if session.query(User).filter(User.login == form.login.data).first():
|
||||
return render_template('simple_register.html', title='Регистрация',
|
||||
form=form,
|
||||
message="Такой пользователь уже есть")
|
||||
if session.query(User).filter(User.email == form.email.data).first():
|
||||
return render_template('simple_register.html', title='Регистрация',
|
||||
form=form,
|
||||
message="Такая почта уже есть")
|
||||
help_arg = form
|
||||
if form.photo.data:
|
||||
photo = save_photo(form.photo.data, form.login.data)
|
||||
return redirect('/confirmation')
|
||||
return render_template('simple_register.html', title='Регистрация', form=form, message='')
|
||||
|
||||
|
||||
@app.route('/recovery', methods=['GET', 'POST'])
|
||||
def recovery():
|
||||
global send_msg
|
||||
|
||||
12
static/css/simple_can_close.css
Normal file
12
static/css/simple_can_close.css
Normal file
@ -0,0 +1,12 @@
|
||||
.can_centre {
|
||||
width: 80%;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
#hz1, #hz2 {
|
||||
width: 60%;
|
||||
margin-left: 20%;
|
||||
margin-right: 20%;
|
||||
text-align: center;
|
||||
margin-top: 25px;
|
||||
}
|
||||
22
templates/simple_can_close.html
Normal file
22
templates/simple_can_close.html
Normal file
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet"
|
||||
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
|
||||
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
|
||||
crossorigin="anonymous">
|
||||
<link rel="icon" href="../static/img/MoonCcircl.ico" type="image/x-icon">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Comfortaa:wght@700&family=Montserrat+Alternates:wght@600&display=swap"
|
||||
rel="stylesheet">
|
||||
<link rel="stylesheet" href="../static/css/base.css">
|
||||
<link rel="stylesheet" href="../static/css/simple_can_close.css">
|
||||
<title>{{title}}</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="can_centre">
|
||||
<h1 id="hz1">Можете закрыть страницу</h1>
|
||||
<h2 id="hz2">Вы можете закрыть эту страницу и перейти на страницу входа</h2>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
39
templates/simple_confimication.html
Normal file
39
templates/simple_confimication.html
Normal file
@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet"
|
||||
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
|
||||
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
|
||||
crossorigin="anonymous">
|
||||
<link rel="icon" href="../static/img/MoonCcircl.ico" type="image/x-icon">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Comfortaa:wght@700&family=Montserrat+Alternates:wght@600&display=swap"
|
||||
rel="stylesheet">
|
||||
<link rel="stylesheet" href="../static/css/base.css">
|
||||
<link rel="stylesheet" href="../static/css/register.css">
|
||||
<title>{{title}}</title>
|
||||
</head>
|
||||
<body>
|
||||
<div class="divlog">
|
||||
<h1 class="title">Подтверждение почты</h1>
|
||||
<form action="" method="post">
|
||||
{{ form.hidden_tag() }}
|
||||
{{ form.csrf_token }}
|
||||
<h3>Мы отправили секретный код вам на почту</h3>
|
||||
<p>
|
||||
{{ form.code_key.label }}<br>
|
||||
{{ form.code_key(class="form-control") }}<br>
|
||||
{% for error in form.code_key.errors %}
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ error }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</p>
|
||||
<p>{{ form.submit(type="submit", class="btn btn-primary") }}</p>
|
||||
{% if message != '' %}
|
||||
<div class="alert alert-danger" role="alert">{{ message }}</div>
|
||||
{% endif %}
|
||||
</form>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
82
templates/simple_register.html
Normal file
82
templates/simple_register.html
Normal file
@ -0,0 +1,82 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet"
|
||||
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
|
||||
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
|
||||
crossorigin="anonymous">
|
||||
<link rel="icon" href="../static/img/MoonCcircl.ico" type="image/x-icon">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Comfortaa:wght@700&family=Montserrat+Alternates:wght@600&display=swap"
|
||||
rel="stylesheet">
|
||||
<link rel="stylesheet" href="../static/css/base.css">
|
||||
<link rel="stylesheet" href="../static/css/register.css">
|
||||
<title>{{title}}</title>
|
||||
</head>
|
||||
<div class="divlog">
|
||||
<h1 class="title">Регистрация</h1>
|
||||
<form class="row g-3" action="" method="POST" enctype="multipart/form-data">
|
||||
{{ form.hidden_tag() }}
|
||||
{{ form.csrf_token }}
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">{{ form.name.label }}</label>
|
||||
{{ form.name(class="form-control", type="text") }}
|
||||
{% for error in form.name.errors %}
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ error }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">{{ form.surname.label }}</label>
|
||||
{{ form.surname(class="form-control", type="text") }}
|
||||
{% for error in form.surname.errors %}
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ error }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label">{{ form.email.label }}</label>
|
||||
{{ form.email(class="form-control", type="email") }}
|
||||
{% for error in form.email.errors %}
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ error }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label">{{ form.password.label }}</label>
|
||||
{{ form.password(class="form-control", type="password") }}
|
||||
{% for error in form.password.errors %}
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ error }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label">{{ form.password2.label }}</label>
|
||||
{{ form.password2(class="form-control", type="password") }}
|
||||
{% for error in form.password2.errors %}
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ error }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label">{{ form.login.label }}</label>
|
||||
{{ form.login(class="form-control", type="text") }}
|
||||
{% for error in form.login.errors %}
|
||||
<div class="alert alert-danger" role="alert">
|
||||
{{ error }}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
<div class="but">
|
||||
<p>{{ form.submit(type="submit", class="btn btn-primary", style="background-color:#38aaff") }}</p>
|
||||
{% if message != '' %}
|
||||
<div class="alert alert-danger" role="alert">{{ message }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
Loading…
x
Reference in New Issue
Block a user