Skip to content

Commit 0057531

Browse files
authored
Used the "disable" label in place of "delete" in User admin #245 (#247)
Signed-off-by: tdruez <tdruez@nexb.com>
1 parent ed25634 commit 0057531

4 files changed

Lines changed: 75 additions & 2 deletions

File tree

dje/admin.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from django.contrib.auth.views import LogoutView
3232
from django.contrib.contenttypes.admin import GenericTabularInline
3333
from django.contrib.contenttypes.models import ContentType
34+
from django.contrib.messages.api import get_messages
3435
from django.core import checks
3536
from django.core.exceptions import FieldDoesNotExist
3637
from django.core.exceptions import FieldError
@@ -1394,6 +1395,7 @@ class DejacodeUserAdmin(
13941395
add_form = DejacodeUserCreationForm
13951396
change_list_template = "admin/change_list_extended.html"
13961397
add_form_template = "admin/dje/dejacode_user/change_form.html"
1398+
delete_confirmation_template = "admin/dje/dejacode_user/delete_confirmation.html"
13971399
change_form_template = add_form_template
13981400
activity_log = True
13991401
readonly_fields = ("last_login", "last_api_access", "date_joined")
@@ -1506,6 +1508,30 @@ def log_addition(self, request, object, change_message=None):
15061508
self.message_user(request, self.activation_email_msg, messages.SUCCESS)
15071509
return super().log_addition(request, object, change_message)
15081510

1511+
def changeform_view(self, request, object_id=None, form_url="", extra_context=None):
1512+
extra_context = extra_context or {}
1513+
extra_context["delete_button_label"] = _("Disable")
1514+
return super().changeform_view(request, object_id, form_url, extra_context)
1515+
1516+
def response_delete(self, request, obj_display, obj_id):
1517+
"""Use the "disabled" label in place of "deleted"."""
1518+
response = super().response_delete(request, obj_display, obj_id)
1519+
1520+
updated_messages = []
1521+
# Iterate over messages and modify the one you want
1522+
for message in get_messages(request):
1523+
if "deleted" in message.message:
1524+
new_message = message.message.replace("deleted", "disabled")
1525+
updated_messages.append(new_message)
1526+
else:
1527+
updated_messages.append(message.message)
1528+
1529+
# Clear the existing messages and add updated ones
1530+
for msg in updated_messages:
1531+
messages.success(request, msg)
1532+
1533+
return response
1534+
15091535
def delete_model(self, request, obj):
15101536
"""
15111537
Instead of deleting the User, makes it inactive.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{% extends 'admin/delete_confirmation.html' %}
2+
3+
{% load i18n admin_urls %}
4+
5+
{% block content %}
6+
<div class="g-d-c">
7+
{% if perms_lacking or protected %}
8+
<div class="grp-group">
9+
<h2>You cannot disable this user.</h2>
10+
</div>
11+
{% else %}
12+
<div class="grp-group">
13+
<h2>{% blocktrans with escaped_object=object %}Are you sure you want to disable the {{ object_name }} "{{ escaped_object }}"?{% endblocktrans %}</h2>
14+
</div>
15+
<form action="" method="post" novalidate>{% csrf_token %}
16+
<div class="grp-module grp-submit-row grp-fixed-footer">
17+
<ul>
18+
{% url opts|admin_urlname:'change' object.pk|admin_urlquote as object_url %}
19+
<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>
20+
<li><input type="submit" value="{% trans "Yes, I’m sure" %}" class="grp-button grp-default" /></li>
21+
</ul>
22+
<input type="hidden" name="post" value="yes" />
23+
{% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
24+
{% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
25+
</div>
26+
</form>
27+
{% endif %}
28+
</div>
29+
{% endblock %}

dje/templates/admin/submit_line.html

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,19 @@
22
<footer class="grp-module grp-submit-row grp-fixed-footer">
33
<header style="display:none"><h1>Submit Options</h1></header>
44
<ul>
5+
{# DJE CUSTOM #}
56
{% if show_delete_link %}
67
{% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %}
7-
<li class="grp-float-left"><a href="{% add_preserved_filters delete_url %}" class="grp-button grp-delete-link">{% trans "Delete" %}</a></li>
8+
<li class="grp-float-left">
9+
<a href="{% add_preserved_filters delete_url %}" class="grp-button grp-delete-link">
10+
{% if delete_button_label %}
11+
{% trans delete_button_label %}
12+
{% else %}
13+
{% trans "Delete" %}
14+
{% endif %}
15+
</a>
16+
</li>
817
{% endif %}
9-
{# DJE CUSTOM: Add #}
1018
<li class="grp-float-left">
1119
{% if not is_popup %}
1220
{% url opts|admin_urlname:'changelist' as changelist_url %}

dje/tests/test_user.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -403,6 +403,16 @@ def test_user_admin_changeform_group_field_includes_link_to_details(self):
403403
response = self.client.get(url)
404404
self.assertContains(response, reverse("admin:auth_group_permission_details"))
405405

406+
def test_user_admin_changeform_submit_row_delete_button_label(self):
407+
self.client.login(username="nexb_user", password="secret")
408+
url = reverse("admin:dje_dejacodeuser_change", args=[self.other_user.pk])
409+
response = self.client.get(url)
410+
expected = (
411+
f'<a href="/admin/dje/dejacodeuser/{self.other_user.pk}/delete/" '
412+
f'class="grp-button grp-delete-link">Disable</a>'
413+
)
414+
self.assertContains(response, expected, html=True)
415+
406416
def test_user_admin_form_scope_homepage_layout_choices(self):
407417
self.client.login(username=self.nexb_user.username, password="secret")
408418
url = reverse("admin:dje_dejacodeuser_change", args=[self.nexb_user.pk])

0 commit comments

Comments
 (0)