Изменение профиля

This commit is contained in:
mrmur 2022-04-25 20:58:03 +05:00
parent 215f6f8399
commit 4a7f0747f8
10 changed files with 139 additions and 5 deletions

Binary file not shown.

View File

@ -6,6 +6,5 @@ from wtforms.validators import DataRequired
class LoginForm(FlaskForm):
email = EmailField('Почта', validators=[DataRequired()])
password = PasswordField('Пароль', validators=[DataRequired()])
style = {"type": "checkbox", "class": "btn-check", "id": "btn-check", "autocomplete": "off"}
remember_me = BooleanField('Запомнить меня')
submit = SubmitField('Войти')

View File

@ -15,6 +15,8 @@ class RegisterForm(FlaskForm):
password = PasswordField('Пароль', validators=[DataRequired()])
password2 = PasswordField('Повторите пароль', validators=[DataRequired()])
submit = SubmitField('Регистрация')
del_photo = SubmitField('Удалить фотографию')
submit2 = SubmitField('Сохранить')
class Confirmation(FlaskForm):

49
main.py
View File

@ -72,6 +72,48 @@ def main_page():
return render_template('base.html', title='moona')
@app.route('/edit_profile/<string:logins>', methods=['GET', 'POST'])
def edit_profile(logins):
global photo
global help_arg
form = RegisterForm()
session = db_session.create_session()
ph_f = False
if form.del_photo.data:
help_arg = photo
photo = '../static/img/None_logo.png'
if form.submit2.data:
user = session.query(User).filter(User.login == logins).first()
user.name = form.name.data
user.surname = form.surname.data
user.age = form.age.data
user.about = form.about.data
if not ph_f and form.photo.data:
photo = save_photo(form.photo.data, logins)
if help_arg:
os.remove(help_arg)
help_arg = False
user.photo = photo
session.commit()
return redirect('/profile')
if request.method == "GET":
if current_user.login == logins:
form.email.data = current_user.email
form.name.data = current_user.name
form.surname.data = current_user.surname
form.login.data = logins
form.age.data = current_user.age
form.about.data = current_user.about
form.password.data = None
form.password2.data = None
if current_user.photo != '../static/img/None_logo.png':
photo = current_user.photo
ph_f = True
else:
photo = None
return render_template('edit_profile.html', title='Редактирование профиля', form=form, message='', ph_f=ph_f)
@app.route('/profile')
def profile():
db_sess = db_session.create_session()
@ -523,7 +565,6 @@ def confirmation():
if not send_msg:
secret_code = secret_key()
mail(f'Ваш секретный код: {secret_code}', form.email.data, 'Moona Код')
print(secret_code)
send_msg = True
if conf.validate_on_submit():
if str(conf.code_key.data).strip() == str(secret_code).strip():
@ -575,6 +616,10 @@ def register():
return render_template('register.html', title='Регистрация',
form=form,
message="Такой пользователь уже есть")
if session.query(User).filter(User.email == form.email.data).first():
return render_template('register.html', title='Регистрация',
form=form,
message="Такая почта уже есть")
help_arg = form
if form.photo.data:
photo = save_photo(form.photo.data, form.login.data)
@ -596,7 +641,7 @@ def recovery():
user_email = form.email.data
if not send_msg:
secret_code = secret_key()
mail(f'Ваш секретный код: {secret_code}', form.email.data, 'Moona Код')
mail(f'Ваш секретный код: {secret_code}', form.email.data, 'Восстановление пароля')
send_msg = True
print(secret_code)
return render_template('recovery.html', title='Восстановление пароля', form=conf, message='', s='2')

View File

@ -43,4 +43,9 @@ table {
width: 35%;
margin-right: auto;
margin-left: auto;
}
.logout_btn {
width: 96%;
margin-right: 2%;
margin-left: 2%;
}

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -0,0 +1,81 @@
<meta charset="UTF-8">
<link rel="stylesheet" href="../static/css/register.css">
{% extends "base.html" %}
{% block content %}
<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-6">
<label class="form-label">{{ form.age.label }}</label>
{{ form.age(class="form-control", type="number") }}
{% for error in form.age.errors %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endfor %}
</div>
<div class="col-12">
<label class="form-label">{{ form.about.label }}</label>
{{ form.about(class="form-control", type="textarea") }}
{% for error in form.about.errors %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endfor %}
</div>
{% if ph_f %}
{{ form.del_photo(type="submit", class="btn btn-primary") }}
{% for error in form.del_photo.errors %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endfor %}
{% else %}
<p>
{{ form.photo.label }}<br>
{{ form.photo(class="form-control") }}<br>
{% for error in form.photo.errors %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{% endfor %}
</p>
{% endif %}
<div class="but">
<p>{{ form.submit2(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>
{% endblock %}

View File

@ -14,8 +14,11 @@
</h5>
{% endif %}
<div>
<a href="/edit_profile/{{current_user.id}}" type="submit" class="btn btn-primary"
<a href="/edit_profile/{{current_user.login}}" type="submit" class="btn btn-primary"
style="background-color:#38aaff">Редактировать профиль</a>
<a style="border-radius: 15px;" href="/logout" class="btn btn-danger logout_btn">
Выйти
</a>
</div>
</th>
<th class="row_centre">

View File

@ -1,4 +1,3 @@
<meta charset="UTF-8">
<link rel="stylesheet" href="../static/css/register.css">
{% extends "base.html" %}
{% block content %}