+
{% block list %}
{% with object_list=object_list timetable=True %}
{% with widget|default:"item" as widget %}
diff --git a/radiocampus/urls.py b/radiocampus/urls.py
index bab3b3f..816f14f 100755
--- a/radiocampus/urls.py
+++ b/radiocampus/urls.py
@@ -2,25 +2,39 @@ from django.conf import settings
from django.conf.urls.static import static
from django.contrib import admin
from django.urls import include, path
+from django.utils.translation import gettext_lazy as _
-import aircox.urls
+from aircox.urls import urls
import aircox_streamer.urls
-from radiocampus.views import TimeTableView
+from radiocampus.views import HomeTimeTableView, TimeTableView
urlpatterns = [
- *aircox.urls.urls,
path("streamer/", include((aircox_streamer.urls.urls, "aircox_streamer"), namespace="streamer")),
path("admin/", admin.site.urls),
path("accounts/", include("django.contrib.auth.urls")),
path("filer/", include("filer.urls")),
]
-for i, pa in enumerate(urlpatterns):
- if "name" in pa.__dict__.keys() and pa.name == "home":
- urlpatterns.pop(i)
+for url in urls:
+ if "name" in url.__dict__.keys():
+ if url.name == "home" or url.name == "timetable-list":
+ continue
+ urlpatterns.append(url)
-urlpatterns.append(path("", TimeTableView.as_view(), name="home"))
+
+urlpatterns.append(path("", HomeTimeTableView.as_view(), name="home"))
+
+urlpatterns.extend(
+ [
+ path(_("timetable/"), TimeTableView.as_view(), name="timetable-list"),
+ path(
+ _("timetable//"),
+ TimeTableView.as_view(),
+ name="timetable-list",
+ ),
+ ]
+)
if settings.DEBUG:
from debug_toolbar.toolbar import debug_toolbar_urls
diff --git a/radiocampus/views.py b/radiocampus/views.py
index eab19ea..f86225c 100644
--- a/radiocampus/views.py
+++ b/radiocampus/views.py
@@ -1,7 +1,51 @@
+import datetime
+
+
+from django.urls import reverse
+
+from aircox.models import Diffusion, Log, StaticPage
from aircox.views.diffusion import TimeTableView as AircoxTimeTableView
+from aircox.views.diffusion import BaseDiffusionListView
+from aircox.views.mixins import GetDateMixin
+from aircox.views.page import attach
-__all__ = "TimeTableView"
+__all__ = ("HomeTimeTableView", "TimeTableView")
-class TimeTableView(AircoxTimeTableView):
+class HomeTimeTableView(AircoxTimeTableView):
template_name = "aircox/home.html"
+
+
+@attach
+class TimeTableView(GetDateMixin, BaseDiffusionListView):
+ model = Diffusion
+ redirect_date_url = "timetable-list"
+ attach_to_value = StaticPage.Target.TIMETABLE
+ template_name = "aircox/timetable_list.html"
+
+ def get_date(self, param="date"):
+ date = super().get_date(param)
+ return date if date is not None else datetime.date.today()
+
+ def get_logs(self, date):
+ return Log.objects.on_air().date(self.date).filter(track__isnull=False)
+
+ def get_queryset(self):
+ return super().get_queryset().date(self.date)
+
+ @classmethod
+ def get_secondary_nav(cls):
+ date = datetime.date.today()
+ start = date - datetime.timedelta(days=3)
+ dates = [start + datetime.timedelta(days=i) for i in range(0, 7)]
+ return tuple((date.strftime("%A %d"), reverse("timetable-list", kwargs={"date": date})) for date in dates)
+
+ def get_context_data(self, object_list=None, **kwargs):
+ start = self.date - datetime.timedelta(days=3)
+ dates = [start + datetime.timedelta(days=i) for i in range(0, 7)]
+
+ if object_list is None:
+ logs = self.get_logs(self.date)
+ object_list = Log.merge_diffusions(logs, self.object_list, group_logs=True)
+ object_list = list(reversed(object_list))
+ return super().get_context_data(date=self.date, dates=dates, object_list=object_list, **kwargs)