Skip to content
Snippets Groups Projects
admin.py 3.12 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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"]