Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 17 additions & 1 deletion src/baby_serverlist/admin.py
Original file line number Diff line number Diff line change
@@ -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)
17 changes: 17 additions & 0 deletions src/templates/admin/baby_serverlist/babyserver/change_form.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{% extends "admin/change_form.html" %}
{% load i18n %}

{% block object-tools-items %}
{{ block.super }}
{% if original %}
<li>
<button type="submit"
form="{{ opts.model_name }}_form"
class="button"
name="_regenerate_token"
value="1">
{% trans "Regenerate token" %}
</button>
</li>
{% endif %}
{% endblock %}
Loading