def rearrange_episodes(cls, programme, after): # TODO: improve from apps.schedules.models import Schedule next_episodes = Episode.objects.filter(issue_date__gte=after) | Episode.objects.filter(issue_date__isnull=True) if programme: next_episodes = next_episodes.filter(programme=programme) next_episodes = next_episodes.order_by('programme', 'season', 'number_in_season').select_related('programme') dt = after current_programme = None for episode in next_episodes: if current_programme != episode.programme: # reset dt if programme change current_programme = episode.programme dt = after if dt: schedule, date = Schedule.get_next_date(programme=episode.programme, after=dt) episode.issue_date = date if date: dt = date + episode.runtime else: dt = None else: episode.issue_date = None episode.save()
def rearrange_episodes(cls, programme, after): # TODO: improve from apps.schedules.models import Schedule next_episodes = Episode.objects.filter( issue_date__gte=after) | Episode.objects.filter( issue_date__isnull=True) if programme: next_episodes = next_episodes.filter(programme=programme) next_episodes = next_episodes.order_by( 'programme', 'season', 'number_in_season').select_related('programme') dt = after current_programme = None for episode in next_episodes: if current_programme != episode.programme: # reset dt if programme change current_programme = episode.programme dt = after if dt: schedule, date = Schedule.get_next_date( programme=episode.programme, after=dt) episode.issue_date = date if date: dt = date + episode.runtime else: dt = None else: episode.issue_date = None episode.save()
def save_model(self, request, obj, form, change): if not obj.pk: programme = obj.programme last_episode = Episode.get_last_episode(programme) now = datetime.datetime.now() if last_episode: after = last_episode.issue_date + programme.runtime if after < now: after = now else: after = now schedule, date = Schedule.get_next_date(programme=programme, after=after) Episode.create_episode(episode=obj, date=date, programme=programme, last_episode=last_episode) else: obj.save()
def clean_programme(self): programme = self.cleaned_data['programme'] now = datetime.datetime.now() if not self.instance.pk: last_episode = Episode.get_last_episode(programme) if last_episode: if last_episode.issue_date: after = last_episode.issue_date + programme.runtime if after < now: after = now else: raise forms.ValidationError(_('There are no available schedules.')) else: after = now schedule, date = Schedule.get_next_date(programme=programme, after=after) if not date: raise forms.ValidationError(_('There are no available schedules.')) return programme
def save_model(self, request, obj, form, change): if not obj.pk: programme = obj.programme last_episode = Episode.get_last_episode(programme) now = datetime.datetime.now() if last_episode: after = last_episode.issue_date + programme.runtime if after < now: after = now else: after = now schedule, date = Schedule.get_next_date(programme=programme, after=after) Episode.create_episode(episode=obj, date=date, programme=programme, last_episode=last_episode) else: obj.save()
def clean_programme(self): programme = self.cleaned_data['programme'] now = datetime.datetime.now() if not self.instance.pk: last_episode = Episode.get_last_episode(programme) if last_episode: if last_episode.issue_date: after = last_episode.issue_date + programme.runtime if after < now: after = now else: raise forms.ValidationError( _('There are no available schedules.')) else: after = now schedule, date = Schedule.get_next_date(programme=programme, after=after) if not date: raise forms.ValidationError( _('There are no available schedules.')) return programme