Added link generator. Added link to /stat/ json object
Some checks failed
Docker hub build / docker (push) Has been cancelled

This commit is contained in:
Ultradesu
2025-03-04 17:18:51 +00:00
parent 8f51b4cf9e
commit ca463fe5ab
3 changed files with 38 additions and 25 deletions

View File

@ -0,0 +1,20 @@
// static/admin/js/generate_uuid.js
function generateLink(button) {
let row = button.closest('tr');
let inputField = row.querySelector('input[name$="link"]');
if (inputField) {
inputField.value = generateRandomString(16);
}
}
function generateRandomString(length) {
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
let result = '';
for (let i = 0; i < length; i++) {
result += chars.charAt(Math.floor(Math.random() * chars.length));
}
return result;
}

View File

@ -1,21 +0,0 @@
// static/admin/js/generate_uuid.js
function generateUUID() {
let uuid = '';
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const length = 10;
for (let i = 0; i < length; i++) {
const randomIndex = Math.floor(Math.random() * characters.length);
uuid += characters[randomIndex];
}
const hashField = document.getElementById('id_hash');
if (hashField) {
hashField.value = uuid;
}
}
document.addEventListener('DOMContentLoaded', function () {
generateUUID();
});

View File

@ -4,6 +4,7 @@ from polymorphic.admin import (
)
from django.contrib import admin
from django.utils.safestring import mark_safe
from django.utils.html import format_html
from django.db.models import Count
from django.contrib.auth.admin import UserAdmin
@ -93,10 +94,14 @@ class ServerAdmin(PolymorphicParentModelAdmin):
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
form = UserForm
list_display = ('username', 'comment', 'registration_date', 'hash', 'server_count')
list_display = ('username', 'comment', 'registration_date', 'hash_link', 'server_count')
search_fields = ('username', 'hash')
readonly_fields = ('hash',)
readonly_fields = ('hash_link',)
@admin.display(description='API access', ordering='hash')
def hash_link(self, obj):
url = f"{EXTERNAL_ADDRESS}/stat/{obj.hash}"
return format_html('<a href="{}">JSON server list</a>', url, obj.hash)
@admin.display(description='Allowed servers', ordering='server_count')
def server_count(self, obj):
@ -139,13 +144,22 @@ class ACLLinkInline(admin.TabularInline):
help_text = 'Add or change ACL links'
verbose_name = 'Dynamic link'
verbose_name_plural = 'Dynamic links'
fields = ('link', 'comment')
fields = ('link', 'generate_link_button', 'comment')
readonly_fields = ('generate_link_button',)
@admin.display(description="Generate")
def generate_link_button(self, obj=None):
return format_html(
'<button type="button" class="generate-link" onclick="generateLink(this)">🔄</button>'
)
class Media:
js = ('admin/js/generate_link.js',)
@admin.register(ACL)
class ACLAdmin(admin.ModelAdmin):
list_display = ('user', 'server', 'server_type', 'display_links', 'created_at')
#list_editable = ('server', )
list_filter = (UserNameFilter, 'server__server_type', ServerNameFilter)
search_fields = ('user__name', 'server__name', 'server__comment', 'user__comment', 'links__link')
readonly_fields = ('user_info',)