+ if self.and_tags:
+ and_tags = get_parsed_tags(self.and_tags)
+ episodes_queryset = episodes_queryset.filter(tags__in=and_tags)
+
+ if self.period == 0:
+ episodes_queryset = episodes_queryset.extra(
+ select={ 'first_diffusion': 'emissions_diffusion.datetime', },
+ select_params=(False, True),
+ where=['''datetime = (SELECT MIN(datetime) FROM emissions_diffusion
+ WHERE episode_id = emissions_episode.id)'''],
+ tables=['emissions_diffusion'])
+ episodes_queryset = episodes_queryset.order_by('first_diffusion').distinct()
+ elif self.period == 1:
+ episodes_queryset = episodes_queryset.extra(
+ select={ 'first_diffusion': 'emissions_diffusion.datetime', },
+ select_params=(False, True),
+ where=['''datetime = (SELECT MIN(datetime) FROM emissions_diffusion
+ WHERE episode_id = emissions_episode.id) AND
+ datetime >= CURRENT_TIMESTAMP'''],
+ tables=['emissions_diffusion'])
+ episodes_queryset = episodes_queryset.order_by('-first_diffusion').distinct()
+ elif self.period == 2:
+ episodes_queryset = episodes_queryset.extra(
+ select={ 'first_diffusion': 'emissions_diffusion.datetime', },
+ select_params=(False, True),
+ where=['''datetime = (SELECT MIN(datetime) FROM emissions_diffusion
+ WHERE episode_id = emissions_episode.id) AND
+ datetime < CURRENT_TIMESTAMP'''],
+ tables=['emissions_diffusion'])
+ episodes_queryset = episodes_queryset.order_by('-first_diffusion').distinct()
+