From ad9c6c7a2a9e5978abedb7f790c2cd49bef20f21 Mon Sep 17 00:00:00 2001 From: pierregeeraert Date: Thu, 25 Jun 2026 16:01:08 +0100 Subject: [PATCH] adding the unseen all option --- django_code/apps/random_simpsons/admin.py | 11 ++++++----- django_code/apps/random_simpsons/utils.py | 17 ++++++++++++++++- django_code/apps/random_simpsons/views.py | 7 ++++++- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/django_code/apps/random_simpsons/admin.py b/django_code/apps/random_simpsons/admin.py index 3fcb5be..2a1cc6b 100644 --- a/django_code/apps/random_simpsons/admin.py +++ b/django_code/apps/random_simpsons/admin.py @@ -2,7 +2,7 @@ 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 -from .utils import mark_episode_watched +from .utils import mark_episode_watched,unwatch_all_episodes from import_export import resources from import_export.admin import ImportExportModelAdmin # Register your models here. @@ -50,16 +50,17 @@ def make_unseen(modeladmin, request, queryset): messages.SUCCESS, ) -@admin.action(description="create_entry") -def create_entry(modeladmin, request, queryset): - simpsons_data_object.create(season=2, episode=3, url="google.com", seen=True) +@admin.action(description="mark all of them as unseen on betaserie") +def unseen_betaserie(modeladmin, request, queryset): + unwatch_all_episodes() + @admin.register(SimpsonsData) class EpisodeAdmin(ImportExportModelAdmin): list_display = [field.name for field in SimpsonsData._meta.fields if field.name != 'id'] list_filter = ['seen'] fields = ['season', 'episode', 'url', 'seen'] - actions = [make_seen,make_unseen,create_entry] + actions = [make_seen,make_unseen,unseen_betaserie] def get_queryset(self, request): return super().get_queryset(request).using(DB) diff --git a/django_code/apps/random_simpsons/utils.py b/django_code/apps/random_simpsons/utils.py index 66c599f..f02dab7 100644 --- a/django_code/apps/random_simpsons/utils.py +++ b/django_code/apps/random_simpsons/utils.py @@ -1,5 +1,8 @@ from apps.betaserie.utils import betaserieUtils +from django.db.models import Count from celery.worker.state import active_requests +from requests.compat import str +from .models import simpsons_data_object betaserie = betaserieUtils() @@ -19,4 +22,16 @@ def mark_episode_watched(season,episode,action): elif action == "unwatched": betaserie.unmark_episodes_watched(episode_id) else: - print("Parameter action not in range") \ No newline at end of file + print("Parameter action not in range") + + + +def unwatch_all_episodes(): + maximum_number_of_seasons = simpsons_data_object.aggregate(unique_season=Count('season', distinct=True))['unique_season'] + print("maximum_number_of_seasons: "+str(maximum_number_of_seasons)) + for season in range(1,maximum_number_of_seasons+1): + maximum_number_of_episodes = simpsons_data_object.filter(season=season).count() + print("maximum_number_of_episodes for "+str(season)+": "+str(maximum_number_of_episodes)) + for episode in range(1,maximum_number_of_episodes+1): + print("S"+str(season)+"E"+str(episode)) + mark_episode_watched(season,episode,"unwatched") diff --git a/django_code/apps/random_simpsons/views.py b/django_code/apps/random_simpsons/views.py index c0b32df..a6df540 100644 --- a/django_code/apps/random_simpsons/views.py +++ b/django_code/apps/random_simpsons/views.py @@ -1,7 +1,8 @@ from django.http import HttpResponse from django.db.models import Count from django.shortcuts import redirect -from apps.random_simpsons.models import SimpsonsData,simpsons_data_object +from .models import SimpsonsData,simpsons_data_object +from .utils import mark_episode_watched import random @@ -36,6 +37,9 @@ def episode_generator(request): # It will still update an already seem episode but it works and I'm lazy simpsons_data_object.filter(season=random_seasons, episode=random_episode).values('seen').update(seen=True) + + #Mark episode as seen on betaseries + mark_episode_watched(random_seasons,random_episode,"watched") return redirect(str(random_url)) @@ -60,3 +64,4 @@ def download_mo(request,file): file_name = file[5:] response['Content-Disposition'] = 'inline; filename=' + file_name return response +