diff --git a/tubesync/sync/admin.py b/tubesync/sync/admin.py index b734f384..a69ebaf2 100644 --- a/tubesync/sync/admin.py +++ b/tubesync/sync/admin.py @@ -1,4 +1,5 @@ from django.contrib import admin +from common.utils import django_queryset_generator as qs_gen from .models import ( Source, Media, @@ -22,16 +23,33 @@ class SourceAdmin(admin.ModelAdmin): class MediaAdmin(admin.ModelAdmin): # https://docs.djangoproject.com/en/5.2/ref/contrib/admin/actions/ - # - skip - # - unskip - # - clear metadata - # - redownload - # actions = [] + actions = ['clear_metadata', 'redownload', 'skip', 'unskip'] ordering = ('-created',) list_display = ('uuid', 'key', 'source', 'can_download', 'skip', 'downloaded') readonly_fields = ('uuid', 'created') search_fields = ('uuid', 'source__key', 'key') + @admin.action(description='Clear metadata from selected Media instances') + def clear_metadata(self, request, queryset): + # clear the metadata + for media in qs_gen(queryset): + media.metadata_clear(save=True) + + @admin.action(description='Redownload selected Media instances') + def redownload(self, request, queryset): + # unset skip, manual_skip and downloaded + queryset.update(skip=False, manual_skip=False, downloaded=False) + + @admin.action(description='Skip selected Media instances') + def skip(self, request, queryset): + # set skip and manual_skip + queryset.update(skip=True, manual_skip=True) + + @admin.action(description='Unskip selected Media instances') + def unskip(self, request, queryset): + # unset skip and manual_skip + queryset.update(skip=False, manual_skip=False) + @admin.register(Metadata) class MetadataAdmin(admin.ModelAdmin):