Добавил возможность админам редактировать профили пользователей

This commit is contained in:
Andrei 2023-03-12 17:53:17 +05:00
parent 0fe07673b7
commit 0c587d0eff
3 changed files with 46 additions and 7 deletions

45
main.py
View File

@ -62,6 +62,45 @@ def base():
return redirect('/projects')
@app.route('/admin/user/<string:login_usr>', methods=['GET', 'POST'])
def admin_user(login_usr):
if current_user.is_authenticated:
if current_user.banned:
return redirect('/logout')
if current_user.role == 1:
data_session = db_session.create_session()
user = data_session.query(User).filter(User.login == login_usr).first()
if user and user.role != 1:
form = EditProfileForm(
CombinedMultiDict((request.files, request.form)),
email=user.email,
name=user.name,
surname=user.surname,
about=user.about,
birthday=user.birthday
)
if form.del_photo.data:
os.remove(user.photo)
user.photo = 'static/images/none_logo.png'
data_session.commit()
if form.validate_on_submit():
if form.photo.data:
with open(f'static/app_files/user_logo/{user.login}.png', 'wb') as file:
form.photo.data.save(file)
user.photo = f'static/app_files/user_logo/{user.login}.png'
user.name = form.name.data
user.surname = form.surname.data
user.about = form.about.data
user.birthday = form.birthday.data
user.email = form.email.data
data_session.commit()
return redirect(f'/admin/user/{str(login_usr)}')
return render_template('profile.html', title=user.login, form=form, message='', user=user)
else:
abort(403)
abort(404)
@app.route('/admin', methods=['GET', 'POST'])
def admin():
if current_user.is_authenticated:
@ -646,7 +685,7 @@ def profile():
user = data_session.query(User).filter(User.id == current_user.id).first()
if not user:
return render_template('profile.html', title='Профиль', form=form,
message='Ошибка, пользователь ненайден')
message='Ошибка, пользователь ненайден', user=current_user)
os.remove(current_user.photo)
user.photo = 'static/images/none_logo.png'
data_session.commit()
@ -654,7 +693,7 @@ def profile():
user = data_session.query(User).filter(User.id == current_user.id).first()
if not user:
return render_template('profile.html', title='Профиль', form=form,
message='Ошибка, пользователь ненайден')
message='Ошибка, пользователь ненайден', user=current_user)
if form.email.data != current_user.email:
token = s.dumps(form.email.data)
link_conf = url_for('confirmation', token=token, _external=True)
@ -672,7 +711,7 @@ def profile():
user.birthday = form.birthday.data
data_session.commit()
return redirect('/profile')
return render_template('profile.html', title='Профиль', form=form, message='')
return render_template('profile.html', title='Профиль', form=form, message='', user=current_user)
else:
return redirect('/login')

View File

@ -8,7 +8,7 @@
<div class="users_block">
{% for user in users %}
<div class="user">
<a class="link_to_user" href="/user/{{ user.login }}">
<a class="link_to_user" href="/admin/user/{{ user.login }}">
<img class="user_logo" src="{{user.photo}}">
<p class="user_names">{{user.name}}</p>
</a>

View File

@ -1,9 +1,9 @@
<link rel="stylesheet" href="../static/css/profile.css"/>
<link rel="stylesheet" href="../../../static/css/profile.css"/>
{% extends "base.html" %} {% block content %}
<div class="profile_page">
<div class="profile_block">
<div class="header_profile">
<img class="user_photo" src="../{{current_user.photo}}"/>
<img class="user_photo" src="../../../{{user.photo}}"/>
</div>
<div class="edit_form">
<form
@ -52,7 +52,7 @@
<div class="alert alert-danger" role="alert">{{ error }}</div>
{% endfor %}
</div>
{% if 'none' in current_user.photo %}
{% if 'none' in user.photo %}
<div class="form_data">
<label class="form-label">{{ form.photo.label }}</label>
{{ form.photo(class="input_data dop_data", type="file") }} {% for