Skip to content

Commit b0820ad

Browse files
authored
feat: improved functionality of admin view for BabyServer (#103)
(cherry picked from commit 367671922deb9a77ed554bf93b5b28945ca25661)
1 parent 51a6665 commit b0820ad

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/baby_serverlist/admin.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,26 @@
11
from django.contrib import admin
2+
from django.http import HttpRequest, HttpResponse, HttpResponseRedirect
23

34
from .models import BabyServer
45

56

67
@admin.register(BabyServer)
78
class BabyServerAdmin(admin.ModelAdmin):
8-
list_display = ("id", "owner", "whitelisted", "serverlist_token")
9+
list_display = ("id", "owner", "whitelisted", "serverlist_token_display")
910
search_fields = ("id", "owner__email", "owner__unique_identifier")
1011
list_filter = ("whitelisted",)
12+
readonly_fields = ("serverlist_token",)
13+
change_form_template = "admin/baby_serverlist/babyserver/change_form.html"
14+
15+
@admin.display(description="Server token", ordering="serverlist_token")
16+
def serverlist_token_display(self, obj: BabyServer) -> str:
17+
# Return the full token so it can be copied without Django's default truncation.
18+
return obj.serverlist_token
19+
20+
def response_change(self, request: HttpRequest, obj: BabyServer) -> HttpResponse:
21+
if "_regenerate_token" in request.POST:
22+
obj.serverlist_token = obj.generate_serverlist_token()
23+
obj.save(update_fields=["serverlist_token"])
24+
self.message_user(request, "Server token regenerated.")
25+
return HttpResponseRedirect(request.path)
26+
return super().response_change(request, obj)
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
{% extends "admin/change_form.html" %}
2+
{% load i18n %}
3+
4+
{% block object-tools-items %}
5+
{{ block.super }}
6+
{% if original %}
7+
<li>
8+
<button type="submit"
9+
form="{{ opts.model_name }}_form"
10+
class="button"
11+
name="_regenerate_token"
12+
value="1">
13+
{% trans "Regenerate token" %}
14+
</button>
15+
</li>
16+
{% endif %}
17+
{% endblock %}

0 commit comments

Comments
 (0)