'datetime': datetime(2007, 1, day+1)})
context['days'] = days
- context['episodes'] = Episode.objects.prefetch_related('emission__categories').filter(
- soundfile__podcastable=True, soundfile__fragment=False) \
+ context['soundfiles'] = SoundFile.objects.prefetch_related('episode__emission__categories').filter(
+ podcastable=True, fragment=False) \
.select_related().extra(select={
'first_diffusion': 'emissions_diffusion.datetime', },
select_params=(False, True),
WHERE episode_id = emissions_episode.id)'''],
tables=['emissions_diffusion'],).order_by('-first_diffusion') [:6]
- # get all related soundfiles in a single query
- soundfiles = {}
- for soundfile in SoundFile.objects.select_related().filter(podcastable=True,
- fragment=False, episode__in=[x.id for x in context['episodes']]):
- soundfiles[soundfile.episode_id] = soundfile
-
- # replace dynamic property by a static attribute, to avoid database
- # lookups
- for episode in context['episodes']:
- episode.main_sound = soundfiles.get(episode.id)
-
context['newsletter_form'] = SubscribeForm()
return context
<div class="wrapper">
<h2><a href="{% url 'listen' %}">Derniers sons</a></h2>
<ul class="custom columns list">
- {% for episode in episodes %}
- <li class="item {% if episode.emission.categories.all.count = 0 %}nocat{% endif %} {% for category in episode.emission.categories.all %} {{ category|slugify }}{% endfor %}">
- {% episode_resume model="inline" klass="standalone"%}
+ {% for soundfile in soundfiles %}
+ <li class="item {% if soundfile.episode.emission.categories.all.count = 0 %}nocat{% endif %} {% for category in soundfile.episode.emission.categories.all %} {{ category|slugify }}{% endfor %}">
+ {% soundfile_resume soundfile=soundfile date=soundfile.first_diffusion %}
</li>
{% endfor %}
</ul>