Добавил возможность админам редактировать профили пользователей
This commit is contained in:
parent
0fe07673b7
commit
0c587d0eff
45
main.py
45
main.py
@ -62,6 +62,45 @@ def base():
|
|||||||
return redirect('/projects')
|
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'])
|
@app.route('/admin', methods=['GET', 'POST'])
|
||||||
def admin():
|
def admin():
|
||||||
if current_user.is_authenticated:
|
if current_user.is_authenticated:
|
||||||
@ -646,7 +685,7 @@ def profile():
|
|||||||
user = data_session.query(User).filter(User.id == current_user.id).first()
|
user = data_session.query(User).filter(User.id == current_user.id).first()
|
||||||
if not user:
|
if not user:
|
||||||
return render_template('profile.html', title='Профиль', form=form,
|
return render_template('profile.html', title='Профиль', form=form,
|
||||||
message='Ошибка, пользователь ненайден')
|
message='Ошибка, пользователь ненайден', user=current_user)
|
||||||
os.remove(current_user.photo)
|
os.remove(current_user.photo)
|
||||||
user.photo = 'static/images/none_logo.png'
|
user.photo = 'static/images/none_logo.png'
|
||||||
data_session.commit()
|
data_session.commit()
|
||||||
@ -654,7 +693,7 @@ def profile():
|
|||||||
user = data_session.query(User).filter(User.id == current_user.id).first()
|
user = data_session.query(User).filter(User.id == current_user.id).first()
|
||||||
if not user:
|
if not user:
|
||||||
return render_template('profile.html', title='Профиль', form=form,
|
return render_template('profile.html', title='Профиль', form=form,
|
||||||
message='Ошибка, пользователь ненайден')
|
message='Ошибка, пользователь ненайден', user=current_user)
|
||||||
if form.email.data != current_user.email:
|
if form.email.data != current_user.email:
|
||||||
token = s.dumps(form.email.data)
|
token = s.dumps(form.email.data)
|
||||||
link_conf = url_for('confirmation', token=token, _external=True)
|
link_conf = url_for('confirmation', token=token, _external=True)
|
||||||
@ -672,7 +711,7 @@ def profile():
|
|||||||
user.birthday = form.birthday.data
|
user.birthday = form.birthday.data
|
||||||
data_session.commit()
|
data_session.commit()
|
||||||
return redirect('/profile')
|
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:
|
else:
|
||||||
return redirect('/login')
|
return redirect('/login')
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,7 @@
|
|||||||
<div class="users_block">
|
<div class="users_block">
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<div class="user">
|
<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}}">
|
<img class="user_logo" src="{{user.photo}}">
|
||||||
<p class="user_names">{{user.name}}</p>
|
<p class="user_names">{{user.name}}</p>
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
@ -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 %}
|
{% extends "base.html" %} {% block content %}
|
||||||
<div class="profile_page">
|
<div class="profile_page">
|
||||||
<div class="profile_block">
|
<div class="profile_block">
|
||||||
<div class="header_profile">
|
<div class="header_profile">
|
||||||
<img class="user_photo" src="../{{current_user.photo}}"/>
|
<img class="user_photo" src="../../../{{user.photo}}"/>
|
||||||
</div>
|
</div>
|
||||||
<div class="edit_form">
|
<div class="edit_form">
|
||||||
<form
|
<form
|
||||||
@ -52,7 +52,7 @@
|
|||||||
<div class="alert alert-danger" role="alert">{{ error }}</div>
|
<div class="alert alert-danger" role="alert">{{ error }}</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% if 'none' in current_user.photo %}
|
{% if 'none' in user.photo %}
|
||||||
<div class="form_data">
|
<div class="form_data">
|
||||||
<label class="form-label">{{ form.photo.label }}</label>
|
<label class="form-label">{{ form.photo.label }}</label>
|
||||||
{{ form.photo(class="input_data dop_data", type="file") }} {% for
|
{{ form.photo(class="input_data dop_data", type="file") }} {% for
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user