From a611b1784dc02e92fd92ea172f1f54896b051e41 Mon Sep 17 00:00:00 2001 From: VladislavOstapov Date: Thu, 18 Jan 2024 19:23:04 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=87=D0=B8=D0=B5=20=D1=81=D1=81=D1=8B?= =?UTF-8?q?=D0=BB=D0=BA=D0=B8=20=D0=BD=D0=B0=20=D0=BF=D1=80=D0=BE=D1=81?= =?UTF-8?q?=D0=BC=D0=BE=D1=82=D1=80=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0?= =?UTF-8?q?=20=D0=B0=D0=BA=D0=BA=D0=B0=D1=83=D0=BD=D1=82=D0=BE=D0=B2=20?= =?UTF-8?q?=D0=B8=20=D0=BA=D0=B0=D0=B6=D0=B4=D0=BE=D0=B3=D0=BE=20=D0=BE?= =?UTF-8?q?=D1=82=D0=B4=D0=B5=D0=BB=D1=8C=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B0?= =?UTF-8?q?=D0=BA=D0=BA=D0=B0=D1=83=D0=BD=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- templates/account/list.html | 2 +- templates/account/view.html | 33 +++++++++++++-------------------- templates/base.html | 5 ++--- templates/index.html | 6 ++++++ users/models.py | 1 - users/urls.py | 2 ++ users/views.py | 18 ++++++++++++++++-- 7 files changed, 40 insertions(+), 27 deletions(-) diff --git a/templates/account/list.html b/templates/account/list.html index 841caae..f086832 100644 --- a/templates/account/list.html +++ b/templates/account/list.html @@ -44,7 +44,7 @@ {% for u in users %} - {{ u.login }} + {{ u.login }} {{ u.is_superuser }} {{ u.last_login }} {{ u.last_password_change }} diff --git a/templates/account/view.html b/templates/account/view.html index 4d8f79d..01b6350 100644 --- a/templates/account/view.html +++ b/templates/account/view.html @@ -1,23 +1,11 @@ {% extends 'base.html' %} {% load static %} +{% block title %} Просмотр аккаунта {{ view_user.login }} {% endblock %} + {% block styles %} {% endblock %} @@ -26,12 +14,17 @@ {% endblock %} {% block content %} -{% if have_permissions %} +

Статус администратора: {{ view_user.is_superuser }}

+

Последний вход: {{ view_user.last_login }}

+

Последнее обновление пароля: {{ view_user.last_password_change }} + {% if perms.users.change_user or view_user.login == user.login %} + (сменить) + {% endif %} +

+

Зарегистрирован: {{ view_user.registered }}

- - -{% else %} -

Недостаточно прав для просмотра страницы

-

Для просмотра списка пользователей необходимо иметь статус администратора.

+{% if perms.users.delete_user %} +

Удалить аккаунт

{% endif %} + {% endblock %} diff --git a/templates/base.html b/templates/base.html index 69477cc..e4616bb 100644 --- a/templates/base.html +++ b/templates/base.html @@ -3,7 +3,6 @@ - {% block title %} Мониторинг резервуара {% endblock %} {% load static %} @@ -15,9 +14,9 @@ {% block header %}

{% block header-title %} Мониторинг водозаборного узла {% endblock %}

{% if user.is_authenticated %} -
+
{{ user.login }} - Выход + Выход
{% endif %} {% endblock %} diff --git a/templates/index.html b/templates/index.html index ddae5fd..4d10d91 100644 --- a/templates/index.html +++ b/templates/index.html @@ -2,6 +2,8 @@ {% load static %} {% block head %} + + @@ -96,6 +98,10 @@

+

Просмотр профиля: {{ user.login }}

+ {% if perms.users.view_user %} +

Просмотр всех аккаунтов

+ {% endif %}
diff --git a/users/models.py b/users/models.py index b7caf60..ece6e68 100644 --- a/users/models.py +++ b/users/models.py @@ -46,7 +46,6 @@ class User(AbstractBaseUser): permissions = { 'view_logs': 0, 'view_pump_stats': 1, - 'change_users': 1, 'users.add_user': 1, 'users.change_user': 1, diff --git a/users/urls.py b/users/urls.py index f934245..80d3468 100644 --- a/users/urls.py +++ b/users/urls.py @@ -23,5 +23,7 @@ urlpatterns = [ path('login', views.view_login, name='login'), path('logout', views.view_logout, name='logout'), path('list', views.view_list, name='accounts-list'), + path('view', views.view_account, name='account-view'), path('change-password', views.default_view, name='change-password'), + path('delete/', views.default_view, name='delete-account'), ] diff --git a/users/views.py b/users/views.py index 193b071..7f89b8a 100644 --- a/users/views.py +++ b/users/views.py @@ -1,6 +1,6 @@ import os -from django.http import HttpResponse, HttpResponseRedirect, HttpResponseBadRequest +from django.http import HttpResponse, HttpResponseRedirect, HttpResponseBadRequest, Http404 from django.shortcuts import render # from django.db.models import Manager from django.contrib.auth import authenticate, login, logout @@ -9,7 +9,7 @@ from .models import User from .forms import UserRegisterForm -def default_view(request): +def default_view(request, *args, **kwargs): return HttpResponse('Not implemented!') @@ -53,6 +53,20 @@ def view_login(request): return HttpResponseBadRequest() +@login_required +def view_account(request): + view_user = request.user + if 'username' in request.GET: + if request.user.has_perm('users.view_user'): + try: + view_user = User.objects.get_by_natural_key(request.GET['username']) + except: + return Http404() + else: + raise PermissionError() + return render(request, 'account/view.html', {'view_user': view_user}) + + @login_required @permission_required(perm='users.add_user', raise_exception=True) def view_register(request):