From 851c0bcc610d601724512cd11ebd5e65da67f2a9 Mon Sep 17 00:00:00 2001 From: Gilles <43683714+corp-0@users.noreply.github.com> Date: Sat, 1 Nov 2025 09:09:05 -0300 Subject: [PATCH] feat: improved functionality of admin view for BabyServer (cherry picked from commit 367671922deb9a77ed554bf93b5b28945ca25661) --- src/baby_serverlist/admin.py | 18 +++++++++++++++++- .../babyserver/change_form.html | 17 +++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/templates/admin/baby_serverlist/babyserver/change_form.html diff --git a/src/baby_serverlist/admin.py b/src/baby_serverlist/admin.py index fa52808..b434279 100644 --- a/src/baby_serverlist/admin.py +++ b/src/baby_serverlist/admin.py @@ -1,10 +1,26 @@ from django.contrib import admin +from django.http import HttpRequest, HttpResponse, HttpResponseRedirect from .models import BabyServer @admin.register(BabyServer) class BabyServerAdmin(admin.ModelAdmin): - list_display = ("id", "owner", "whitelisted", "serverlist_token") + list_display = ("id", "owner", "whitelisted", "serverlist_token_display") search_fields = ("id", "owner__email", "owner__unique_identifier") list_filter = ("whitelisted",) + readonly_fields = ("serverlist_token",) + change_form_template = "admin/baby_serverlist/babyserver/change_form.html" + + @admin.display(description="Server token", ordering="serverlist_token") + def serverlist_token_display(self, obj: BabyServer) -> str: + # Return the full token so it can be copied without Django's default truncation. + return obj.serverlist_token + + def response_change(self, request: HttpRequest, obj: BabyServer) -> HttpResponse: + if "_regenerate_token" in request.POST: + obj.serverlist_token = obj.generate_serverlist_token() + obj.save(update_fields=["serverlist_token"]) + self.message_user(request, "Server token regenerated.") + return HttpResponseRedirect(request.path) + return super().response_change(request, obj) diff --git a/src/templates/admin/baby_serverlist/babyserver/change_form.html b/src/templates/admin/baby_serverlist/babyserver/change_form.html new file mode 100644 index 0000000..4b4da2f --- /dev/null +++ b/src/templates/admin/baby_serverlist/babyserver/change_form.html @@ -0,0 +1,17 @@ +{% extends "admin/change_form.html" %} +{% load i18n %} + +{% block object-tools-items %} + {{ block.super }} + {% if original %} +