|
1 | 1 | from django.contrib import admin |
| 2 | +from django.http import HttpRequest, HttpResponse, HttpResponseRedirect |
2 | 3 |
|
3 | 4 | from .models import BabyServer |
4 | 5 |
|
5 | 6 |
|
6 | 7 | @admin.register(BabyServer) |
7 | 8 | class BabyServerAdmin(admin.ModelAdmin): |
8 | | - list_display = ("id", "owner", "whitelisted", "serverlist_token") |
| 9 | + list_display = ("id", "owner", "whitelisted", "serverlist_token_display") |
9 | 10 | search_fields = ("id", "owner__email", "owner__unique_identifier") |
10 | 11 | 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) |
0 commit comments