def get_sorted_newsitems(self):
return self.newsitem_set.select_related().order_by('-date')
- def get_next_planned_date(self, since=None):
+ def get_next_planned_date_and_schedule(self, since=None):
schedules = self.schedule_set.filter(rerun=False)
if not schedules:
return None
since = datetime.datetime.today()
possible_dates = []
for schedule in schedules:
- possible_dates.append(schedule.get_next_planned_date(since))
+ possible_dates.append((schedule.get_next_planned_date(since), schedule))
possible_dates.sort()
return possible_dates[0]
+ def get_next_planned_date(self, since=None):
+ result = self.get_next_planned_date_and_schedule(since=since)
+ return result[0] if result else None
+
+ def get_next_planned_duration(self, since=None):
+ result = self.get_next_planned_date_and_schedule(since=since)
+ if not result:
+ return None
+ return result[1].duration or self.duration
@python_2_unicode_compatible
class Schedule(models.Model, WeekdayMixin):
def get_initial(self):
initial = super(EpisodeCreateView, self).get_initial()
initial['emission'] = Emission.objects.get(slug=self.kwargs.get('emission_slug'))
- initial['duration'] = initial['emission'].duration
+ initial['duration'] = initial['emission'].get_next_planned_duration()
initial['first_diffusion'] = initial['emission'].get_next_planned_date()
for i, schedule in enumerate(
Schedule.objects.filter(emission=initial['emission'],