Доработана (почти) функция регистрации

This commit is contained in:
mrmur 2022-04-02 21:38:23 +05:00
parent 6e8fc6eb43
commit 3f66e6476d
3 changed files with 42 additions and 14 deletions

View File

@ -1,5 +1,7 @@
import sqlalchemy
from datetime import date from datetime import date
import sqlalchemy
from werkzeug.security import check_password_hash, generate_password_hash
from .db_session import SqlAlchemyBase from .db_session import SqlAlchemyBase
@ -21,3 +23,9 @@ class User(SqlAlchemyBase):
default=date.today()) default=date.today())
role = sqlalchemy.Column(sqlalchemy.String, nullable=True) role = sqlalchemy.Column(sqlalchemy.String, nullable=True)
activity = sqlalchemy.Column(sqlalchemy.Date, nullable=True) activity = sqlalchemy.Column(sqlalchemy.Date, nullable=True)
def check_password(self, password):
return check_password_hash(self.hashed_password, password)
def set_password(self, password):
self.password = generate_password_hash(password)

Binary file not shown.

26
main.py
View File

@ -1,7 +1,7 @@
from random import randint from random import randint
from PIL import Image from PIL import Image
from flask import Flask, render_template from flask import Flask, render_template, request
from werkzeug.utils import redirect from werkzeug.utils import redirect
from data import db_session from data import db_session
@ -12,6 +12,8 @@ from post import mail
app = Flask(__name__) app = Flask(__name__)
app.config['SECRET_KEY'] = 'moona_secret_key' app.config['SECRET_KEY'] = 'moona_secret_key'
help_arg = None help_arg = None
send_msg = False
secret_code = None
def save_photo(photo, login): def save_photo(photo, login):
@ -34,27 +36,45 @@ def main_page():
@app.route('/confirmation', methods=['GET', 'POST']) @app.route('/confirmation', methods=['GET', 'POST'])
def confirmation(): def confirmation():
global help_arg global help_arg
global send_msg
global secret_code
form = help_arg form = help_arg
session = db_session.create_session() session = db_session.create_session()
conf = Confirmation() conf = Confirmation()
if not send_msg:
secret_code = secret_key() secret_code = secret_key()
mail(f'Ваш секретный код: {secret_code}', form.email.data, 'Moona Код') mail(f'Ваш секретный код: {secret_code}', form.email.data, 'Moona Код')
send_msg = True
if conf.validate_on_submit(): if conf.validate_on_submit():
if str(conf.code_key.data).strip() == str(secret_code).strip(): if str(conf.code_key.data).strip() == str(secret_code).strip():
if form.photo.data:
user = User( user = User(
name=form.name.data, name=form.name.data,
surname=form.surname.data, surname=form.surname.data,
login=form.login.data, login=form.login.data,
age=form.age.data, age=form.age.data,
about=form.about.data, about=form.about.data,
photo=save_photo(form.photo.data, form.login.data) email=form.email.data,
photo=save_photo(request.files['file'], form.login.data),
role='user'
)
else:
user = User(
name=form.name.data,
surname=form.surname.data,
login=form.login.data,
age=form.age.data,
about=form.about.data,
email=form.email.data,
role='user'
) )
user.set_password(form.password.data) user.set_password(form.password.data)
session.add(user) session.add(user)
session.commit() session.commit()
send_msg = False
return redirect('/login') return redirect('/login')
else: else:
return render_template('confirmation_reg.html', title='Подтверждение', form=form, return render_template('confirmation_reg.html', title='Подтверждение', form=conf,
message='Коды не совпадают') message='Коды не совпадают')
return render_template('confirmation_reg.html', title='Подтверждение', form=conf) return render_template('confirmation_reg.html', title='Подтверждение', form=conf)