from django.contrib import admin,messages from django.utils.translation import ngettext from prompt_toolkit.shortcuts import print_container from .models import SimpsonsData,simpsons_data_object,urlData from .utils import mark_episode_watched,unwatch_all_episodes,generate_new_urls_for_episode from import_export import resources from import_export.admin import ImportExportModelAdmin from django.utils import timezone # Register your models here. DB = 'simpsons_db' @admin.action(description="Mark episode as seen") def make_seen(modeladmin, request, queryset): updated = queryset.update(seen="True",modified_at=timezone.now()) for query in queryset.values(): print(query) season_number = query.get('season') episode_number = query.get('episode') mark_episode_watched(season_number,episode_number,"watched") modeladmin.message_user( request, ngettext( "%d episode was successfully marked as seen.", "%d episodes were successfully marked as seen.", updated, ) % updated, messages.SUCCESS, ) @admin.action(description="Mark episode as not seen") def make_unseen(modeladmin, request, queryset): updated = queryset.update(seen="False") for query in queryset.values(): print(query) season_number = query.get('season') episode_number = query.get('episode') mark_episode_watched(season_number,episode_number,"unwatched") modeladmin.message_user( request, ngettext( "%d episode was successfully marked as not seen.", "%d episodes were successfully marked as not seen.", updated, ) % updated, messages.SUCCESS, ) @admin.action(description="mark all of them as unseen on betaserie") def unseen_betaserie(modeladmin, request, queryset): unwatch_all_episodes() @admin.action(description="generate new urls for episode") def generate_new_urls(modeladmin, request, queryset): generate_new_urls_for_episode() @admin.register(SimpsonsData) class EpisodeAdmin(ImportExportModelAdmin): list_display = [field.name for field in SimpsonsData._meta.fields if field.name != 'id'] list_filter = ['seen','modified_at'] #list_filter = ['seen'] fields = ['season', 'episode', 'url', 'seen'] actions = [make_seen,make_unseen,unseen_betaserie,generate_new_urls] search_fields = ['season', 'episode', 'url', 'seen'] def get_queryset(self, request): return super().get_queryset(request).using(DB) def save_model(self, request, obj, form, change): obj.save(using=DB) def delete_model(self, request, obj): obj.delete(using=DB) def delete_queryset(self, request, queryset): queryset.using(DB).delete() @admin.register(urlData) class urldataAdmin(ImportExportModelAdmin): list_display = ('url_example', 'prefix', 'infix', 'suffix','addedDate') #fields = ['url_example', 'prefix', 'infix', 'suffix'] #fields = ( # ('prefix', 'infix', 'suffix'), # 'url_example' #) fieldsets = [ ( None, { "description": ["collapse"], 'fields': (('prefix', 'infix', 'suffix'), 'url_example') }, ) ]