добавил рабочие ссылки на просмотр списка аккаунтов и каждого отдельного аккаунта

This commit is contained in:
VladislavOstapov 2024-01-18 19:23:04 +03:00
parent ed37bcbfc2
commit a611b1784d
7 changed files with 40 additions and 27 deletions

View File

@ -44,7 +44,7 @@
<tbody>
{% for u in users %}
<tr>
<td>{{ u.login }}</td>
<td><a href="{% url 'account-view' %}?username={{ u.login }}"> {{ u.login }} </a></td>
<td>{{ u.is_superuser }}</td>
<td>{{ u.last_login }}</td>
<td>{{ u.last_password_change }}</td>

View File

@ -1,23 +1,11 @@
{% extends 'base.html' %}
{% load static %}
{% block title %} Просмотр аккаунта {{ view_user.login }} {% endblock %}
{% block styles %}
<style>
.table-wrapper {
overflow-x: auto;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
table, th, td {
padding: 5px;
border: 2px solid var(--bg-selected);
}
thead {
background: var(--brand-bg);
}
</style>
{% endblock %}
@ -26,12 +14,17 @@
{% endblock %}
{% block content %}
{% if have_permissions %}
{% else %}
<h2>Недостаточно прав для просмотра страницы</h2>
<p>Для просмотра списка пользователей необходимо иметь статус администратора.</p>
<p>Статус администратора: {{ view_user.is_superuser }}</p>
<p>Последний вход: {{ view_user.last_login }}</p>
<p>Последнее обновление пароля: {{ view_user.last_password_change }}
{% if perms.users.change_user or view_user.login == user.login %}
(<a href="{% url 'change-password' %}">сменить</a>)
{% endif %}
</p>
<p>Зарегистрирован: {{ view_user.registered }}</p>
{% if perms.users.delete_user %}
<p><a href="{% url 'delete-account' view_user.login %}" class="value-bad">Удалить аккаунт</a></p>
{% endif %}
{% endblock %}

View File

@ -3,7 +3,6 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Состояние резервуара, насосной станции и график резервуара">
<title> {% block title %} Мониторинг резервуара {% endblock %} </title>
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'css/style.css' %}">
@ -15,9 +14,9 @@
{% block header %}
<h1>{% block header-title %} Мониторинг водозаборного узла {% endblock %}</h1>
{% if user.is_authenticated %}
<div>
<div id="header-login-block">
<span> {{ user.login }} </span>
<a href="/account/logout">Выход</a>
<a href="{% url 'logout' %}">Выход</a>
</div>
{% endif %}
{% endblock %}

View File

@ -2,6 +2,8 @@
{% load static %}
{% block head %}
<meta name="description" content="Состояние резервуара, насосной станции и график резервуара">
<script src="{% static 'js/chart-4.4.1.umd.js' %}"></script>
<script src="{% static 'js/moment-2.js' %}"></script>
<script src="{% static 'js/chartjs-adapter-moment.js' %}"></script>
@ -96,6 +98,10 @@
<label for="settings-chart-time">Период на графике (дней): </label>
<input id="settings-chart-time" type="number" min="1" max="31">
</p>
<p>Просмотр профиля: <a href="{% url 'account-view' %}">{{ user.login }}</a></p>
{% if perms.users.view_user %}
<p><a href="{% url 'accounts-list' %}"> Просмотр всех аккаунтов </a></p>
{% endif %}
</div>
</div>
</div>

View File

@ -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,

View File

@ -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/<str:username>', views.default_view, name='delete-account'),
]

View File

@ -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):