добавил удаление пользователей, немного косметических изменений

This commit is contained in:
VladislavOstapov 2024-01-25 18:16:59 +03:00
parent 1c16ba2889
commit 07f8b967a8
5 changed files with 61 additions and 11 deletions

View File

@ -0,0 +1,37 @@
{% extends 'base.html' %}
{% load static %}
{% block title %} Удаление пользователя {{ target_user.login }} {% endblock %}
{% block header-title %} Удаление пользователя {{ target_user.login }} {% endblock %}
{% block styles %}
<style>
#submit {
font-weight: bolder;
background: var(--text-bad);
text-align: center;
padding: 0.5em;
border: 2px var(--text-color) solid;
border-radius: 4px;
}
</style>
{% endblock %}
{% block content %}
<div id="form-wrapper">
<form method="POST">
{% csrf_token %}
<p>
Вы собираетесь удалить пользователя {{ target_user.login }}, отменить это действие невозможно!
</p>
<p>
Вы уверены, что хотите продолжить?
</p>
<input id="submit" type="submit" value="Да, удалить">
<p>
После удаления вы попадете на страницу просмотра пользователей.
</p>
</form>
</div>
{% endblock %}

View File

@ -23,12 +23,9 @@
</style> </style>
{% endblock %} {% endblock %}
{% block header %} {% block header-title %} Просмотр аккаунтов {% endblock %}
<h1> Просмотр аккаунтов </h1>
{% endblock %}
{% block content %} {% block content %}
<p> Добавить нового пользователя можно <a href="{% url 'register' %}">тут</a>.</p> <p> Добавить нового пользователя можно <a href="{% url 'register' %}">тут</a>.</p>
<div class="table-wrapper"> <div class="table-wrapper">
<table> <table>

View File

@ -15,7 +15,8 @@
<h1>{% block header-title %} Мониторинг водозаборного узла {% endblock %}</h1> <h1>{% block header-title %} Мониторинг водозаборного узла {% endblock %}</h1>
{% if user.is_authenticated %} {% if user.is_authenticated %}
<div id="header-login-block"> <div id="header-login-block">
<span> {{ user.login }} </span> <a href="/">На главную</a>
<a href="{% url 'account-view' %}">{{ user.login }}</a>
<a href="{% url 'logout' %}">Выход</a> <a href="{% url 'logout' %}">Выход</a>
</div> </div>
{% endif %} {% endif %}

View File

@ -25,5 +25,5 @@ urlpatterns = [
path('list', views.view_list, name='accounts-list'), path('list', views.view_list, name='accounts-list'),
path('view/<str:username>', views.view_account, name='account-view'), path('view/<str:username>', views.view_account, name='account-view'),
path('change-password', views.view_change_password, name='change-password'), path('change-password', views.view_change_password, name='change-password'),
path('delete/<str:username>', views.default_view, name='delete-account'), path('delete/<str:username>', views.view_delete, name='delete-account'),
] ]

View File

@ -10,10 +10,6 @@ from .models import User
from .forms import UserRegisterForm from .forms import UserRegisterForm
def default_view(request, *args, **kwargs):
return HttpResponse('Not implemented!')
def view_logout(request): def view_logout(request):
logout(request) logout(request)
# перенаправляем на страницу авторизации # перенаправляем на страницу авторизации
@ -68,7 +64,7 @@ def view_account(request, username=None):
except: except:
return Http404() return Http404()
else: else:
raise PermissionError() return HttpResponseForbidden()
return render(request, 'account/view.html', {'view_user': view_user}) return render(request, 'account/view.html', {'view_user': view_user})
@ -147,3 +143,22 @@ def view_change_password(request):
@permission_required(perm='users.view_user', raise_exception=True) @permission_required(perm='users.view_user', raise_exception=True)
def view_list(request): def view_list(request):
return render(request, 'account/list.html', {'users': User.objects.order_by('login')}) return render(request, 'account/list.html', {'users': User.objects.order_by('login')})
@login_required
@permission_required(perm='users.delete_user', raise_exception=True)
def view_delete(request, username):
if username != request.user.login:
try:
target_user = User.objects.get_by_natural_key(username)
if request.method == 'GET':
return render(request, 'account/delete.html', {'target_user': target_user})
elif request.method == 'POST':
target_user.delete()
return HttpResponseRedirect('/account/list')
else:
return HttpResponseBadRequest()
except:
return Http404()
else:
return HttpResponseForbidden()