radiocampus: center selected date in timetables
This commit is contained in:
parent
acfd5c49b7
commit
4adacd1f80
|
@ -12,23 +12,13 @@
|
||||||
|
|
||||||
|
|
||||||
{% block breadcrumbs %}
|
{% block breadcrumbs %}
|
||||||
{% if parent and model.list_url_name %}
|
{% if page and model.list_url_name %}
|
||||||
{% include "./widgets/breadcrumbs.html" with page=parent %}
|
|
||||||
<a href="{% url model.list_url_name %}">{{ model|verbose_name:True }}</a>
|
|
||||||
{% elif page and model.list_url_name %}
|
|
||||||
<a href="{% url model.list_url_name %}">{{ page.title }}</a>
|
<a href="{% url model.list_url_name %}">{{ page.title }}</a>
|
||||||
{% if category %}
|
{% if category %}
|
||||||
<a href="{% url request.resolver_match.url_name category_slug=category.slug %}">
|
<a href="{% url request.resolver_match.url_name category_slug=category.slug %}">
|
||||||
{{ category.title }}
|
{{ category.title }}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% else %}
|
|
||||||
<a href="{% url request.resolver_match.url_name %}">{{ model|verbose_name:True }}</a>
|
|
||||||
{% if category %}
|
|
||||||
<a href="{% url request.resolver_match.url_name category_slug=category.slug %}">
|
|
||||||
{{ category.title }}
|
|
||||||
</a>
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a href="{% url "timetable-list" date=date %}">{{ date|date:"l d F Y" }}</a>
|
<a href="{% url "timetable-list" date=date %}">{{ date|date:"l d F Y" }}</a>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -38,7 +28,7 @@
|
||||||
{% with list_class="grid" %}
|
{% with list_class="grid" %}
|
||||||
<section class="container clear-both list grid list-grille list-home list-emissions" role="list">
|
<section class="container clear-both list grid list-grille list-home list-emissions" role="list">
|
||||||
<section class="container" style="display:flex;justify-content:flex-end;min-height:600px">
|
<section class="container" style="display:flex;justify-content:flex-end;min-height:600px">
|
||||||
<div style="max-width:600px;">
|
<div>
|
||||||
{% block list %}
|
{% block list %}
|
||||||
{% with object_list=object_list timetable=True %}
|
{% with object_list=object_list timetable=True %}
|
||||||
{% with widget|default:"item" as widget %}
|
{% with widget|default:"item" as widget %}
|
||||||
|
|
|
@ -2,25 +2,39 @@ from django.conf import settings
|
||||||
from django.conf.urls.static import static
|
from django.conf.urls.static import static
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import include, path
|
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
|
import aircox_streamer.urls
|
||||||
|
|
||||||
from radiocampus.views import TimeTableView
|
from radiocampus.views import HomeTimeTableView, TimeTableView
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
*aircox.urls.urls,
|
|
||||||
path("streamer/", include((aircox_streamer.urls.urls, "aircox_streamer"), namespace="streamer")),
|
path("streamer/", include((aircox_streamer.urls.urls, "aircox_streamer"), namespace="streamer")),
|
||||||
path("admin/", admin.site.urls),
|
path("admin/", admin.site.urls),
|
||||||
path("accounts/", include("django.contrib.auth.urls")),
|
path("accounts/", include("django.contrib.auth.urls")),
|
||||||
path("filer/", include("filer.urls")),
|
path("filer/", include("filer.urls")),
|
||||||
]
|
]
|
||||||
|
|
||||||
for i, pa in enumerate(urlpatterns):
|
for url in urls:
|
||||||
if "name" in pa.__dict__.keys() and pa.name == "home":
|
if "name" in url.__dict__.keys():
|
||||||
urlpatterns.pop(i)
|
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/<date:date>/"),
|
||||||
|
TimeTableView.as_view(),
|
||||||
|
name="timetable-list",
|
||||||
|
),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
if settings.DEBUG:
|
if settings.DEBUG:
|
||||||
from debug_toolbar.toolbar import debug_toolbar_urls
|
from debug_toolbar.toolbar import debug_toolbar_urls
|
||||||
|
|
|
@ -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 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"
|
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)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user