aircox-radiocampus/aircox/views/home.py
2022-08-07 12:55:03 +02:00

50 lines
1.7 KiB
Python

from datetime import date
from django.utils.translation import gettext as _
from django.utils import timezone as tz
from django.views.generic import ListView
from ..models import Diffusion, Log, Page, StaticPage
from .base import BaseView
from .page import PageListView
class HomeView(BaseView, ListView):
template_name = 'aircox/home.html'
model = Diffusion
attach_to_value = StaticPage.ATTACH_TO_HOME
queryset = Diffusion.objects.on_air().select_related('episode')
logs_count = 5
has_filters = False
def get_queryset(self):
return super().get_queryset().date(date.today())
def get_logs(self, diffusions):
today = date.today()
logs = Log.objects.on_air().date(today).filter(track__isnull=False)
# diffs = Diffusion.objects.on_air().date(today)
return Log.merge_diffusions(logs, diffusions, self.logs_count)
def get_next_diffs(self):
now = tz.now()
current_diff = Diffusion.objects.on_air().now(now).first()
next_diffs = Diffusion.objects.on_air().after(now)
if current_diff:
diffs = [current_diff] + list(next_diffs.exclude(pk=current_diff.pk)[:2])
else:
diffs = next_diffs[:3]
return diffs
def get_last_publications(self):
return Page.objects.select_subclasses().published() \
.order_by('-pub_date')
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['logs'] = self.get_logs(context['object_list'])
context['next_diffs'] = self.get_next_diffs()
context['last_publications'] = self.get_last_publications()[:5]
return context