Добавил кнопку раскрытия редактора профиля

This commit is contained in:
Andrei 2022-12-25 20:24:38 +05:00
parent 4a8a967d86
commit f05d705219
8 changed files with 120 additions and 46 deletions

View File

@ -1,8 +1,5 @@
from datetime import date
import sqlalchemy
from flask_login import UserMixin
from werkzeug.security import check_password_hash, generate_password_hash
from .db_session import SqlAlchemyBase

View File

@ -22,7 +22,7 @@ class User(SqlAlchemyBase, UserMixin):
password = sqlalchemy.Column(sqlalchemy.String, nullable=True)
data_reg = sqlalchemy.Column(sqlalchemy.Date,
default=date.today())
role = sqlalchemy.Column(sqlalchemy.String, nullable=True)
role = sqlalchemy.Column(sqlalchemy.Integer, sqlalchemy.ForeignKey("roles.id"), nullable=True)
activity = sqlalchemy.Column(sqlalchemy.DateTime, nullable=True)
birthday = sqlalchemy.Column(sqlalchemy.Date, nullable=True)
activated = sqlalchemy.Column(sqlalchemy.Boolean, nullable=False, default=False)

15
main.py
View File

@ -12,6 +12,7 @@ from forms.edit_profile import EditProfileForm
from forms.login import LoginForm
from forms.register import RegisterForm
from data.users import User
from data.files import Files
from waitress import serve
from data import db_session
@ -28,13 +29,13 @@ def base():
if not current_user.is_authenticated:
return render_template('main.html', title='Главная')
else:
return redirect('/project')
return redirect('/projects')
@app.route('/project')
@app.route('/projects')
def project():
if current_user.is_authenticated:
return redirect(f'/profile')
return render_template('projects.html', title='Проекты')
else:
return redirect('/login')
@ -105,7 +106,7 @@ def login():
if user and user.check_password(form.password.data):
if user.activated:
login_user(user, remember=form.remember_me.data)
return redirect('/')
return redirect('/projects')
else:
return render_template('login.html',
message="Ваша почта не подтверждена",
@ -118,7 +119,7 @@ def login():
return render_template('login.html', title='Авторизация', form=form, message=message,
danger=danger)
else:
return redirect('/project')
return redirect('/projects')
@app.route('/logout')
@ -149,7 +150,7 @@ def register():
activity=datetime.datetime.now(),
data_reg=datetime.date.today(),
photo='static/images/none_logo.png',
role='user'
role=1
)
user.set_password(form.password.data)
data_session.add(user)
@ -162,7 +163,7 @@ def register():
return redirect('/login?message=Мы выслали ссылку для подтверждения почты')
return render_template('register.html', form=form, message='', title='Регистрация')
else:
return redirect('/project')
return redirect('/projects')
@app.route('/confirmation/<token>')

View File

@ -1,15 +1,15 @@
.profile_page {
display: flex;
flex-direction: column;
height: 70vw;
height: auto;
width: 100%;
background: linear-gradient( rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.8) ), url(../images/back_profile_one.jpg);background-repeat: repeat; background-position: center;
}
.profile_block {
height: 83%;
height: 65vw;
width: 85%;
margin-left: 7.5%;
margin-top: 10%;
margin-bottom: 6%;
background: linear-gradient( rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3) ), url(../images/back_profile_two.jpg);background-repeat: repeat; background-position: center;
display: flex;
flex-direction: column;
@ -114,3 +114,53 @@ form {
font-size: 1.5vw;
margin-top: 6%;
}
.open_button_block {
height: 35vw;
width: 85%;
margin-left: 7.5%;
margin-top: 3%;
margin-bottom: 6%;
background: linear-gradient( rgba(0, 0, 0, 0.3), rgba(0, 0, 0, 0.3) ), url(../images/back_profile_two.jpg);background-repeat: repeat; background-position: center;
display: flex;
flex-direction: column;
overflow-y: auto;
}
.open_button_content {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
justify-content: center;
align-items: center;
}
.open_button_title {
margin-bottom: 3%;
color: #ffffff;
font: bold;
font-size: 4.5vw;
}
.open_button_article {
margin-bottom: 5%;
color: #ffffff;
font: bold;
font-size: 2vw;
}
.open_button {
background-color: #ffffff;
color: #000000;
width: 20vw;
height: 5vw;
vertical-align: middle;
border-radius: 30px;
}
.open_button:hover {
text-decoration: none;
color: #000000;
}
.open_button_text {
width: 100%;
height: 100%;
text-align: center;
font-size: 1.5vw;
margin-top: 5%;
}

3
static/css/projects.css Normal file
View File

@ -0,0 +1,3 @@
.projects_page {
height: 65vw;
}

View File

@ -1,33 +1,49 @@
<link rel="stylesheet" href="../static/css/profile.css"/>
{% extends "base.html" %} {% block content %}
<div class="profile_page">
<div class="profile_block">
<div class="open_button_block">
<div class="open_button_content">
<h2 class="open_button_title">Профиль</h2>
<p class="open_button_article">Здесь можно поменять настройки учетной записи</p>
<a class="open_button" data-bs-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
<div class="open_button_text">
Редикторовать
</div>
</a>
</div>
</div>
<div class="profile_block collapse" id="collapseExample">
<div class="header_profile">
<img class="user_photo" src="../{{current_user.photo}}">
<img class="user_photo" src="../{{current_user.photo}}"/>
</div>
<div class="edit_form">
<form action="" method="post" class="register_form" enctype="multipart/form-data">
<form
action=""
method="post"
class="register_form"
enctype="multipart/form-data">
{{ form.hidden_tag() }}
<div class="form_blocks">
<div class="data_block">
<div class="form_data">
<label class="form-label">{{ form.email.label }}</label>
{{ form.email(class="input_data", type="email", placeholder='example@mail.ex') }} {% for
error in form.email.errors %}
{{ form.email(class="input_data", type="email",
placeholder='example@mail.ex') }} {% for error in
form.email.errors %}
<div class="alert alert-danger" role="alert">{{ error }}</div>
{% endfor %}
</div>
<div class="form_data">
<label class="form-label">{{ form.name.label }}</label>
{{ form.name(class="input_data", type="name", placeholder='name') }} {%
for error in form.name.errors %}
{{ form.name(class="input_data", type="name", placeholder='name')
}} {% for error in form.name.errors %}
<div class="alert alert-danger" role="alert">{{ error }}</div>
{% endfor %}
</div>
<div class="form_data">
<label class="form-label">{{ form.surname.label }}</label>
{{ form.surname(class="input_data", type="surname", placeholder='surname') }}
{% for error in form.surname.errors %}
{{ form.surname(class="input_data", type="surname",
placeholder='surname') }} {% for error in form.surname.errors %}
<div class="alert alert-danger" role="alert">{{ error }}</div>
{% endfor %}
</div>
@ -35,36 +51,37 @@
<div class="data_block">
<div class="form_data">
<label class="form-label">{{ form.birthday.label }}</label>
{{ form.birthday(class="input_data", type="date") }}
{% for error in form.birthday.errors %}
<div class="alert alert-danger" role="alert">
{{ error }}
</div>
{{ form.birthday(class="input_data", type="date") }} {% for error
in form.birthday.errors %}
<div class="alert alert-danger" role="alert">{{ error }}</div>
{% endfor %}
</div>
<div class="form_data">
<label class="form-label">{{ form.about.label }}</label>
{{ form.about(class="input_data dop_data", type="name", placeholder='about') }} {%
for error in form.about.errors %}
{{ form.about(class="input_data dop_data", type="name",
placeholder='about') }} {% for error in form.about.errors %}
<div class="alert alert-danger" role="alert">{{ error }}</div>
{% endfor %}
</div>
{% if 'none' in current_user.photo %}
<div class="form_data">
<label class="form-label">{{ form.photo.label }}</label>
{{ form.photo(class="input_data dop_data", type="file") }}
{% for error in form.photo.errors %}
{{ form.photo(class="input_data dop_data", type="file") }} {% for
error in form.photo.errors %}
<div class="alert alert-danger" role="alert">{{ error }}</div>
{% endfor %}
</div>
{% else %}
<div class="form_data_button">
{{ form.del_photo(type="submit", class="profile_button", id="delete_button") }}
{{ form.del_photo(type="submit", class="profile_button",
id="delete_button") }}
</div>
{% endif %}
<div class="message_block">
{% if message != '' %}
<div class="alert alert-danger message" role="alert">{{ message }}</div>
<div class="alert alert-danger message" role="alert">
{{ message }}
</div>
{% endif %}
</div>
</div>

6
templates/projects.html Normal file
View File

@ -0,0 +1,6 @@
<link rel="stylesheet" href="../static/css/projects.css"/>
{% extends "base.html" %} {% block content %}
<div class="projects_page">
</div>
{% endblock %}