Skip to content
Snippets Groups Projects
admin.py 3.12 KiB
Newer Older
from funkwhale_api.common import admin
@admin.register(models.Artist)
class ArtistAdmin(admin.ModelAdmin):
Eliot Berriot's avatar
Eliot Berriot committed
    list_display = ["name", "mbid", "creation_date"]
    search_fields = ["name", "mbid"]
@admin.register(models.Album)
class AlbumAdmin(admin.ModelAdmin):
Eliot Berriot's avatar
Eliot Berriot committed
    list_display = ["title", "artist", "mbid", "release_date", "creation_date"]
    search_fields = ["title", "artist__name", "mbid"]
@admin.register(models.Track)
class TrackAdmin(admin.ModelAdmin):
Eliot Berriot's avatar
Eliot Berriot committed
    list_display = ["title", "artist", "album", "mbid"]
    search_fields = ["title", "artist__name", "album__title", "mbid"]
@admin.register(models.ImportBatch)
class ImportBatchAdmin(admin.ModelAdmin):
Eliot Berriot's avatar
Eliot Berriot committed
    list_display = ["submitted_by", "creation_date", "import_request", "status"]
    list_select_related = ["submitted_by", "import_request"]
    list_filter = ["status"]
    search_fields = ["import_request__name", "source", "batch__pk", "mbid"]
@admin.register(models.ImportJob)
class ImportJobAdmin(admin.ModelAdmin):
Eliot Berriot's avatar
Eliot Berriot committed
    list_display = ["source", "batch", "upload", "status", "mbid"]
    list_select_related = ["upload", "batch"]
Eliot Berriot's avatar
Eliot Berriot committed
    search_fields = ["source", "batch__pk", "mbid"]
    list_filter = ["status"]


@admin.register(models.Work)
class WorkAdmin(admin.ModelAdmin):
Eliot Berriot's avatar
Eliot Berriot committed
    list_display = ["title", "mbid", "language", "nature"]
Eliot Berriot's avatar
Eliot Berriot committed
    search_fields = ["title"]
    list_filter = ["language", "nature"]


@admin.register(models.Lyrics)
class LyricsAdmin(admin.ModelAdmin):
Eliot Berriot's avatar
Eliot Berriot committed
    list_display = ["url", "id", "url"]
Eliot Berriot's avatar
Eliot Berriot committed
    search_fields = ["url", "work__title"]
    list_filter = ["work__language"]
Eliot Berriot's avatar
Eliot Berriot committed
@admin.register(models.Upload)
class UploadAdmin(admin.ModelAdmin):
Eliot Berriot's avatar
Eliot Berriot committed
        "track",
        "audio_file",
        "source",
        "duration",
        "mimetype",
        "size",
        "bitrate",
Eliot Berriot's avatar
Eliot Berriot committed
    list_select_related = ["track"]
Eliot Berriot's avatar
Eliot Berriot committed
        "source",
        "acoustid_track_id",
        "track__title",
        "track__album__title",
        "track__artist__name",
    ]
    list_filter = ["mimetype", "import_status", "library__privacy_level"]


Eliot Berriot's avatar
Eliot Berriot committed
def launch_scan(modeladmin, request, queryset):
    for library in queryset:
        library.schedule_scan(actor=request.user.actor, force=True)


launch_scan.short_description = "Launch scan"


@admin.register(models.Library)
class LibraryAdmin(admin.ModelAdmin):
    list_display = ["id", "name", "actor", "uuid", "privacy_level", "creation_date"]
    list_select_related = True
    search_fields = ["actor__username", "name", "description"]
    list_filter = ["privacy_level"]
Eliot Berriot's avatar
Eliot Berriot committed
    actions = [launch_scan]


@admin.register(models.LibraryScan)
class LibraryScanAdmin(admin.ModelAdmin):
    list_display = [
        "id",
        "library",
        "actor",
        "status",
        "creation_date",
        "modification_date",
        "status",
        "total_files",
        "processed_files",
        "errored_files",
    ]
    list_select_related = True
    search_fields = ["actor__username", "library__name"]
    list_filter = ["status"]