log tv episode change

This commit is contained in:
Your Name 2023-06-20 12:19:10 -04:00 committed by Henri Dickson
parent eedbbf8d0e
commit dba06e7e70
3 changed files with 17 additions and 7 deletions

View file

@ -150,8 +150,7 @@ class IMDB(AbstractSite):
return episodes
@staticmethod
def fetch_episodes_for_season(season_uuid):
season = TVSeason.get_by_url(season_uuid)
def fetch_episodes_for_season(season):
if not season.season_number or not season.imdb:
_logger.warning(f"season {season} is missing season number or imdb id")
return

View file

@ -190,25 +190,25 @@ class IMDBTestCase(TestCase):
season = SiteManager.get_site_by_url(t_url).get_resource_ready().item
self.assertIsNotNone(season)
self.assertIsNone(season.season_number)
IMDB.fetch_episodes_for_season(season.uuid)
IMDB.fetch_episodes_for_season(season)
# no episodes fetch bc no season number
episodes = list(season.episodes.all().order_by("episode_number"))
self.assertEqual(len(episodes), 0)
# set season number and fetch again
season.season_number = 1
season.save()
IMDB.fetch_episodes_for_season(season.uuid)
IMDB.fetch_episodes_for_season(season)
episodes = list(season.episodes.all().order_by("episode_number"))
self.assertEqual(len(episodes), 2)
# fetch again, no duplicated episodes
IMDB.fetch_episodes_for_season(season.uuid)
IMDB.fetch_episodes_for_season(season)
episodes2 = list(season.episodes.all().order_by("episode_number"))
self.assertEqual(episodes, episodes2)
# delete one episode and fetch again
episodes[0].delete()
episodes3 = list(season.episodes.all().order_by("episode_number"))
self.assertEqual(len(episodes3), 1)
IMDB.fetch_episodes_for_season(season.uuid)
IMDB.fetch_episodes_for_season(season)
episodes4 = list(season.episodes.all().order_by("episode_number"))
self.assertEqual(len(episodes4), 2)
self.assertEqual(episodes[1], episodes4[1])

View file

@ -13,6 +13,7 @@ from .forms import *
from .search.views import *
from journal.models import update_journal_for_merged_item
from common.utils import get_uuid_or_404
from auditlog.context import set_actor
_logger = logging.getLogger(__name__)
@ -219,11 +220,21 @@ def fetch_tvepisodes(request, item_path, item_uuid):
if item.class_name != "tvseason" or not item.imdb or item.season_number is None:
raise BadRequest()
item.log_action({"!fetch_tvepisodes": ["", ""]})
django_rq.get_queue("crawl").enqueue(IMDB.fetch_episodes_for_season, item.uuid)
django_rq.get_queue("crawl").enqueue(
fetch_episodes_for_season_task, item.uuid, request.user
)
messages.add_message(request, messages.INFO, _("已开始更新单集信息"))
return redirect(item.url)
def fetch_episodes_for_season_task(item_uuid, user):
with set_actor(user):
season = Item.get_by_url(item_uuid)
episodes = season.episode_uuids
IMDB.fetch_episodes_for_season(season)
season.log_action({"!fetch_tvepisodes": [episodes, season.episode_uuids]})
@login_required
def merge(request, item_path, item_uuid):
if request.method != "POST":