Skip to content

Commit

Permalink
Used the "disable" label in place of "delete" in User admin #245
Browse files Browse the repository at this point in the history
Signed-off-by: tdruez <[email protected]>
  • Loading branch information
tdruez committed Jan 27, 2025
1 parent ed25634 commit ea5c95e
Show file tree
Hide file tree
Showing 4 changed files with 75 additions and 2 deletions.
26 changes: 26 additions & 0 deletions dje/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
from django.contrib.auth.views import LogoutView
from django.contrib.contenttypes.admin import GenericTabularInline
from django.contrib.contenttypes.models import ContentType
from django.contrib.messages.api import get_messages
from django.core import checks
from django.core.exceptions import FieldDoesNotExist
from django.core.exceptions import FieldError
Expand Down Expand Up @@ -1394,6 +1395,7 @@ class DejacodeUserAdmin(
add_form = DejacodeUserCreationForm
change_list_template = "admin/change_list_extended.html"
add_form_template = "admin/dje/dejacode_user/change_form.html"
delete_confirmation_template = "admin/dje/dejacode_user/delete_confirmation.html"
change_form_template = add_form_template
activity_log = True
readonly_fields = ("last_login", "last_api_access", "date_joined")
Expand Down Expand Up @@ -1506,6 +1508,30 @@ def log_addition(self, request, object, change_message=None):
self.message_user(request, self.activation_email_msg, messages.SUCCESS)
return super().log_addition(request, object, change_message)

def changeform_view(self, request, object_id=None, form_url="", extra_context=None):
extra_context = extra_context or {}
extra_context["delete_button_label"] = _("Disable")
return super().changeform_view(request, object_id, form_url, extra_context)

def response_delete(self, request, obj_display, obj_id):
"""Use the "disabled" label in place of "deleted"."""
response = super().response_delete(request, obj_display, obj_id)

updated_messages = []
# Iterate over messages and modify the one you want
for message in get_messages(request):
if "deleted" in message.message:
new_message = message.message.replace("deleted", "disabled")
updated_messages.append(new_message)
else:
updated_messages.append(message.message)

# Clear the existing messages and add updated ones
for msg in updated_messages:
messages.success(request, msg)

return response

def delete_model(self, request, obj):
"""
Instead of deleting the User, makes it inactive.
Expand Down
29 changes: 29 additions & 0 deletions dje/templates/admin/dje/dejacode_user/delete_confirmation.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{% extends 'admin/delete_confirmation.html' %}

{% load i18n admin_urls %}

{% block content %}
<div class="g-d-c">
{% if perms_lacking or protected %}
<div class="grp-group">
<h2>You cannot disable this user.</h2>
</div>
{% else %}
<div class="grp-group">
<h2>{% blocktrans with escaped_object=object %}Are you sure you want to disable the {{ object_name }} "{{ escaped_object }}"?{% endblocktrans %}</h2>
</div>
<form action="" method="post" novalidate>{% csrf_token %}
<div class="grp-module grp-submit-row grp-fixed-footer">
<ul>
{% url opts|admin_urlname:'change' object.pk|admin_urlquote as object_url %}
<li class="grp-float-left"><a href="{% add_preserved_filters object_url %}" class="grp-button grp-cancel-link">{% trans "No, take me back" %}</a></li>
<li><input type="submit" value="{% trans "Yes, I’m sure" %}" class="grp-button grp-default" /></li>
</ul>
<input type="hidden" name="post" value="yes" />
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
</div>
</form>
{% endif %}
</div>
{% endblock %}
12 changes: 10 additions & 2 deletions dje/templates/admin/submit_line.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,19 @@
<footer class="grp-module grp-submit-row grp-fixed-footer">
<header style="display:none"><h1>Submit Options</h1></header>
<ul>
{# DJE CUSTOM #}
{% if show_delete_link %}
{% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %}
<li class="grp-float-left"><a href="{% add_preserved_filters delete_url %}" class="grp-button grp-delete-link">{% trans "Delete" %}</a></li>
<li class="grp-float-left">
<a href="{% add_preserved_filters delete_url %}" class="grp-button grp-delete-link">
{% if delete_button_label %}
{% trans delete_button_label %}
{% else %}
{% trans "Delete" %}
{% endif %}
</a>
</li>
{% endif %}
{# DJE CUSTOM: Add #}
<li class="grp-float-left">
{% if not is_popup %}
{% url opts|admin_urlname:'changelist' as changelist_url %}
Expand Down
10 changes: 10 additions & 0 deletions dje/tests/test_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -403,6 +403,16 @@ def test_user_admin_changeform_group_field_includes_link_to_details(self):
response = self.client.get(url)
self.assertContains(response, reverse("admin:auth_group_permission_details"))

def test_user_admin_changeform_submit_row_delete_button_label(self):
self.client.login(username="nexb_user", password="secret")
url = reverse("admin:dje_dejacodeuser_change", args=[self.other_user.pk])
response = self.client.get(url)
expected = (
f'<a href="/admin/dje/dejacodeuser/{self.other_user.pk}/delete/" '
f'class="grp-button grp-delete-link">Disable</a>'
)
self.assertContains(response, expected, html=True)

def test_user_admin_form_scope_homepage_layout_choices(self):
self.client.login(username=self.nexb_user.username, password="secret")
url = reverse("admin:dje_dejacodeuser_change", args=[self.nexb_user.pk])
Expand Down

0 comments on commit ea5c95e

Please sign in to comment.