radiocampus: center selected date in timetables
This commit is contained in:
		@ -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)
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user