mirror of
https://gitlab.science.ru.nl/technicie/MarietjeDjango.git
synced 2025-12-09 21:12:23 +01:00
91 lines
2.5 KiB
Python
91 lines
2.5 KiB
Python
from typing import Optional
|
|
|
|
from django.contrib import admin
|
|
from django.contrib.auth import get_user_model
|
|
|
|
from .models import Queue, Playlist, PlaylistSong, QueueCommand, QueueLogEntry, UserQueue
|
|
from marietje.admin import UserAdmin as BaseUserAdmin
|
|
from django.utils.translation import gettext_lazy as _
|
|
|
|
from .services import get_queue_for_user
|
|
|
|
admin.site.register(Playlist)
|
|
|
|
User = get_user_model()
|
|
|
|
|
|
@admin.register(Queue)
|
|
class OrderAdmin(admin.ModelAdmin):
|
|
list_display = ("name", "playlist", "random_playlist")
|
|
|
|
|
|
@admin.register(PlaylistSong)
|
|
class PlaylistSongAdmin(admin.ModelAdmin):
|
|
list_display = ("playlist", "song", "user", "state", "played_at")
|
|
list_display_links = ("song",)
|
|
list_filter = ("playlist", "state", "user")
|
|
search_fields = ("song__title", "song__artist", "user__name")
|
|
autocomplete_fields = ("user",)
|
|
readonly_fields = ("song",)
|
|
|
|
|
|
admin.site.register(QueueCommand)
|
|
|
|
|
|
@admin.register(QueueLogEntry)
|
|
class QueueLogEntryAdmin(admin.ModelAdmin):
|
|
"""Admin for log entries."""
|
|
|
|
list_display = [
|
|
"timestamp",
|
|
"queue",
|
|
"action",
|
|
"user",
|
|
"description",
|
|
]
|
|
|
|
list_filter = [
|
|
"queue",
|
|
"action",
|
|
("timestamp", admin.DateFieldListFilter),
|
|
]
|
|
|
|
def has_delete_permission(self, request, obj=None):
|
|
"""Disable delete permission."""
|
|
return False
|
|
|
|
def has_add_permission(self, request):
|
|
"""Disable add permission."""
|
|
return False
|
|
|
|
def has_change_permission(self, request, obj=None):
|
|
"""Disable change permission."""
|
|
return False
|
|
|
|
|
|
class UserQueueInline(admin.StackedInline):
|
|
model = UserQueue
|
|
fields = ("queue",)
|
|
|
|
|
|
class UserAdmin(BaseUserAdmin):
|
|
fieldsets = (
|
|
(None, {"fields": ("username", "password")}),
|
|
(_("Personal info"), {"fields": ("name", "email")}),
|
|
(_("Permissions"), {"fields": ("is_active", "is_staff", "is_superuser", "groups", "user_permissions")}),
|
|
(_("Important dates"), {"fields": ("last_login", "date_joined")}),
|
|
(_("Activation"), {"fields": ("activation_token", "reset_token")}),
|
|
)
|
|
list_display = ("username", "email", "name", "date_joined", "last_login", "queue__queue", "is_staff")
|
|
inlines = (UserQueueInline,)
|
|
|
|
def queue__queue(self, obj: User) -> Optional[Queue]:
|
|
"""Retrieve the Queue for a User."""
|
|
return get_queue_for_user(obj)
|
|
|
|
queue__queue.short_description = "queue"
|
|
|
|
|
|
admin.site.unregister(User)
|
|
admin.site.register(User, UserAdmin)
|