Esempio n. 1
0
    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()
Esempio n. 2
0
    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()
Esempio n. 3
0
 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()
Esempio n. 4
0
 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
Esempio n. 5
0
 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()
Esempio n. 6
0
 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