admin: add buttons to disable and enable users
This commit is contained in:
parent
713025d218
commit
20ee634cda
|
@ -0,0 +1,42 @@
|
||||||
|
{% extends "administration/base.html" %}
|
||||||
|
|
||||||
|
{% load i18n %}
|
||||||
|
{% load passbook_utils %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<section class="pf-c-page__main-section pf-m-light">
|
||||||
|
<div class="pf-c-content">
|
||||||
|
{% block above_form %}
|
||||||
|
<h1>
|
||||||
|
{% blocktrans with object_type=object|verbose_name %}
|
||||||
|
Disable {{ object_type }}
|
||||||
|
{% endblocktrans %}
|
||||||
|
</h1>
|
||||||
|
{% endblock %}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="pf-c-page__main-section">
|
||||||
|
<div class="pf-l-stack">
|
||||||
|
<div class="pf-l-stack__item">
|
||||||
|
<div class="pf-c-card">
|
||||||
|
<div class="pf-c-card__body">
|
||||||
|
<form action="" method="post" class="pf-c-form">
|
||||||
|
{% csrf_token %}
|
||||||
|
<p>
|
||||||
|
{% blocktrans with object_type=object|verbose_name name=object %}
|
||||||
|
Are you sure you want to disable {{ object_type }} "{{ object }}"?
|
||||||
|
{% endblocktrans %}
|
||||||
|
</p>
|
||||||
|
<div class="pf-c-form__group pf-m-action">
|
||||||
|
<div class="pf-c-form__actions">
|
||||||
|
<input class="pf-c-button pf-m-danger" type="submit" value="{% trans 'Disable' %}" />
|
||||||
|
<a class="pf-c-button pf-m-secondary" href="{% back %}">{% trans "Back" %}</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{% endblock %}
|
|
@ -54,7 +54,11 @@
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a class="pf-c-button pf-m-secondary" href="{% url 'passbook_admin:user-update' pk=user.pk %}?back={{ request.get_full_path }}">{% trans 'Edit' %}</a>
|
<a class="pf-c-button pf-m-secondary" href="{% url 'passbook_admin:user-update' pk=user.pk %}?back={{ request.get_full_path }}">{% trans 'Edit' %}</a>
|
||||||
<a class="pf-c-button pf-m-danger" href="{% url 'passbook_admin:user-delete' pk=user.pk %}?back={{ request.get_full_path }}">{% trans 'Delete' %}</a>
|
{% if user.is_active %}
|
||||||
|
<a class="pf-c-button pf-m-warning" href="{% url 'passbook_admin:user-disable' pk=user.pk %}?back={{ request.get_full_path }}">{% trans 'Disable' %}</a>
|
||||||
|
{% else %}
|
||||||
|
<a class="pf-c-button pf-m-primary" href="{% url 'passbook_admin:user-enable' pk=user.pk %}?back={{ request.get_full_path }}">{% trans 'Enable' %}</a>
|
||||||
|
{% endif %}
|
||||||
<a class="pf-c-button pf-m-tertiary" href="{% url 'passbook_admin:user-password-reset' pk=user.pk %}?back={{ request.get_full_path }}">{% trans 'Reset Password' %}</a>
|
<a class="pf-c-button pf-m-tertiary" href="{% url 'passbook_admin:user-password-reset' pk=user.pk %}?back={{ request.get_full_path }}">{% trans 'Reset Password' %}</a>
|
||||||
<a class="pf-c-button pf-m-tertiary" href="{% url 'passbook_core:impersonate-init' user_id=user.pk %}">{% trans 'Impersonate' %}</a>
|
<a class="pf-c-button pf-m-tertiary" href="{% url 'passbook_core:impersonate-init' user_id=user.pk %}">{% trans 'Impersonate' %}</a>
|
||||||
</td>
|
</td>
|
||||||
|
|
|
@ -247,6 +247,10 @@ urlpatterns = [
|
||||||
path("users/create/", users.UserCreateView.as_view(), name="user-create"),
|
path("users/create/", users.UserCreateView.as_view(), name="user-create"),
|
||||||
path("users/<int:pk>/update/", users.UserUpdateView.as_view(), name="user-update"),
|
path("users/<int:pk>/update/", users.UserUpdateView.as_view(), name="user-update"),
|
||||||
path("users/<int:pk>/delete/", users.UserDeleteView.as_view(), name="user-delete"),
|
path("users/<int:pk>/delete/", users.UserDeleteView.as_view(), name="user-delete"),
|
||||||
|
path(
|
||||||
|
"users/<int:pk>/disable/", users.UserDisableView.as_view(), name="user-disable"
|
||||||
|
),
|
||||||
|
path("users/<int:pk>/enable/", users.UserEnableView.as_view(), name="user-enable"),
|
||||||
path(
|
path(
|
||||||
"users/<int:pk>/reset/",
|
"users/<int:pk>/reset/",
|
||||||
users.UserPasswordResetView.as_view(),
|
users.UserPasswordResetView.as_view(),
|
||||||
|
|
|
@ -6,6 +6,7 @@ from django.contrib.auth.mixins import (
|
||||||
)
|
)
|
||||||
from django.contrib.messages.views import SuccessMessageMixin
|
from django.contrib.messages.views import SuccessMessageMixin
|
||||||
from django.http import HttpRequest, HttpResponse
|
from django.http import HttpRequest, HttpResponse
|
||||||
|
from django.http.response import HttpResponseRedirect
|
||||||
from django.shortcuts import redirect
|
from django.shortcuts import redirect
|
||||||
from django.urls import reverse, reverse_lazy
|
from django.urls import reverse, reverse_lazy
|
||||||
from django.utils.http import urlencode
|
from django.utils.http import urlencode
|
||||||
|
@ -98,6 +99,53 @@ class UserDeleteView(LoginRequiredMixin, PermissionRequiredMixin, DeleteMessageV
|
||||||
success_message = _("Successfully deleted User")
|
success_message = _("Successfully deleted User")
|
||||||
|
|
||||||
|
|
||||||
|
class UserDisableView(
|
||||||
|
LoginRequiredMixin, PermissionRequiredMixin, BackSuccessUrlMixin, DeleteMessageView
|
||||||
|
):
|
||||||
|
"""Disable user"""
|
||||||
|
|
||||||
|
object: User
|
||||||
|
|
||||||
|
model = User
|
||||||
|
permission_required = "passbook_core.update_user"
|
||||||
|
|
||||||
|
# By default the object's name is user which is used by other checks
|
||||||
|
context_object_name = "object"
|
||||||
|
template_name = "administration/user/disable.html"
|
||||||
|
success_url = reverse_lazy("passbook_admin:users")
|
||||||
|
success_message = _("Successfully disabled User")
|
||||||
|
|
||||||
|
def delete(self, request: HttpRequest, *args, **kwargs) -> HttpResponse:
|
||||||
|
self.object: User = self.get_object()
|
||||||
|
success_url = self.get_success_url()
|
||||||
|
self.object.is_active = False
|
||||||
|
self.object.save()
|
||||||
|
return HttpResponseRedirect(success_url)
|
||||||
|
|
||||||
|
|
||||||
|
class UserEnableView(
|
||||||
|
LoginRequiredMixin, PermissionRequiredMixin, BackSuccessUrlMixin, DetailView
|
||||||
|
):
|
||||||
|
"""Enable user"""
|
||||||
|
|
||||||
|
object: User
|
||||||
|
|
||||||
|
model = User
|
||||||
|
permission_required = "passbook_core.update_user"
|
||||||
|
|
||||||
|
# By default the object's name is user which is used by other checks
|
||||||
|
context_object_name = "object"
|
||||||
|
success_url = reverse_lazy("passbook_admin:users")
|
||||||
|
success_message = _("Successfully enabled User")
|
||||||
|
|
||||||
|
def get(self, request: HttpRequest, *args, **kwargs):
|
||||||
|
self.object: User = self.get_object()
|
||||||
|
success_url = self.get_success_url()
|
||||||
|
self.object.is_active = True
|
||||||
|
self.object.save()
|
||||||
|
return HttpResponseRedirect(success_url)
|
||||||
|
|
||||||
|
|
||||||
class UserPasswordResetView(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
|
class UserPasswordResetView(LoginRequiredMixin, PermissionRequiredMixin, DetailView):
|
||||||
"""Get Password reset link for user"""
|
"""Get Password reset link for user"""
|
||||||
|
|
||||||
|
|
Reference in New Issue