# Generated by Django 3.0.2 on 2020-04-25 20:45 import logging from django.db import migrations from django.utils.dateparse import parse_date from nefarious.tmdb import get_tmdb_client def populate_release_date(apps, schema_editor): WatchMovie = apps.get_model('nefarious', 'WatchMovie') WatchTVEpisode = apps.get_model('nefarious', 'WatchTVEpisode') WatchTVSeason = apps.get_model('nefarious', 'WatchTVSeason') NefariousSettings = apps.get_model('nefarious', 'NefariousSettings') nefarious_settings = NefariousSettings.objects.all().first() if not nefarious_settings: # skip if no settings exist return tmdb_client = get_tmdb_client(nefarious_settings) logging.info('Adding release dates') for media in WatchMovie.objects.all(): try: movie_result = tmdb_client.Movies(media.tmdb_movie_id) data = movie_result.info() release_date = parse_date(data.get('release_date', '')) update_release_date(media, release_date) except Exception as e: logging.exception(e) for media in WatchTVSeason.objects.all(): try: season_result = tmdb_client.TV_Seasons(media.watch_tv_show.tmdb_show_id, media.season_number) data = season_result.info() release_date = parse_date(data.get('air_date', '')) update_release_date(media, release_date) except Exception as e: logging.exception(e) for media in WatchTVEpisode.objects.all(): try: episode_result = tmdb_client.TV_Episodes(media.watch_tv_show.tmdb_show_id, media.season_number, media.episode_number) data = episode_result.info() release_date = parse_date(data.get('air_date', '')) update_release_date(media, release_date) except Exception as e: logging.exception(e) def update_release_date(media, release_date): if release_date: logging.info('Adding release date {} for {}'.format(release_date, media)) media.release_date = release_date media.save() else: logging.warning('Skipping empty release date for {}'.format(media)) class Migration(migrations.Migration): dependencies = [ ('nefarious', '0054_auto_20200425_2109'), ] operations = [ migrations.RunPython(populate_release_date), ]