forked from rc/aircox
add timetable
This commit is contained in:
parent
3975c222c6
commit
d20b5ccdda
|
@ -514,7 +514,7 @@ class EventPage(Publication):
|
|||
|
||||
|
||||
#
|
||||
# Indexes
|
||||
# Lists
|
||||
#
|
||||
class BaseDateList(models.Model):
|
||||
nav_days = models.SmallIntegerField(
|
||||
|
@ -530,6 +530,16 @@ class BaseDateList(models.Model):
|
|||
'of show days equally around the current date')
|
||||
)
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
panels = [
|
||||
MultiFieldPanel([
|
||||
FieldPanel('nav_days'),
|
||||
FieldPanel('nav_per_week'),
|
||||
], heading=_('Navigation')),
|
||||
]
|
||||
|
||||
@staticmethod
|
||||
def str_to_date(date):
|
||||
"""
|
||||
|
@ -590,9 +600,6 @@ class BaseDateList(models.Model):
|
|||
}
|
||||
}
|
||||
|
||||
class Meta:
|
||||
abstract = True
|
||||
|
||||
|
||||
class ListPage(Page):
|
||||
"""
|
||||
|
@ -711,6 +718,8 @@ class LogsPage(BaseDateList,Page):
|
|||
'0 means no limit')
|
||||
)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Logs Page')
|
||||
|
||||
content_panels = [
|
||||
FieldPanel('title'),
|
||||
|
@ -718,8 +727,7 @@ class LogsPage(BaseDateList,Page):
|
|||
FieldPanel('station'),
|
||||
FieldPanel('max_days'),
|
||||
], heading=_('Configuration')),
|
||||
]
|
||||
|
||||
] + BaseDateList.panels
|
||||
|
||||
def as_item(cl, log):
|
||||
"""
|
||||
|
@ -740,6 +748,20 @@ class LogsPage(BaseDateList,Page):
|
|||
)
|
||||
|
||||
def get_queryset(self, request, context):
|
||||
logs = []
|
||||
for date in context['nav_dates']['dates']:
|
||||
items = self.station.get_on_air(date)
|
||||
items = [ self.as_item(item) for item in items ]
|
||||
logs.append((date, items))
|
||||
return logs
|
||||
|
||||
def get_context(self, request, *args, **kwargs):
|
||||
"""
|
||||
note: context is updated using self.get_date_context
|
||||
"""
|
||||
context = super().get_context(request, *args, **kwargs)
|
||||
|
||||
# date navigation
|
||||
if 'date' in request.GET:
|
||||
date = request.GET.get('date')
|
||||
date = self.str_to_date(date)
|
||||
|
@ -753,20 +775,43 @@ class LogsPage(BaseDateList,Page):
|
|||
date = tz.now().date()
|
||||
context.update(self.get_date_context(date, date_max=tz.now().date()))
|
||||
|
||||
r = []
|
||||
for date in context['nav_dates']['dates']:
|
||||
logs = self.station.get_on_air(date)
|
||||
logs = [ self.as_item(log) for log in logs ]
|
||||
r.append((date, logs))
|
||||
return r
|
||||
|
||||
def get_context(self, request, *args, **kwargs):
|
||||
context = super().get_context(request, *args, **kwargs)
|
||||
qs = self.get_queryset(request, context)
|
||||
context['object_list'] = qs
|
||||
# queryset
|
||||
context['object_list'] = self.get_queryset(request, context)
|
||||
return context
|
||||
|
||||
|
||||
class TimetablePage(BaseDateList,Page):
|
||||
class Meta:
|
||||
verbose_name = _('Timetable')
|
||||
|
||||
content_panels = Page.content_panels + BaseDateList.panels
|
||||
|
||||
def get_queryset(self, request, context):
|
||||
diffs = []
|
||||
for date in context['nav_dates']['dates']:
|
||||
items = programs.Diffusion.objects.get_at(date).order_by('start')
|
||||
items = [ DiffusionPage.as_item(item) for item in items ]
|
||||
diffs.append((date, items))
|
||||
return diffs
|
||||
|
||||
def get_context(self, request, *args, **kwargs):
|
||||
"""
|
||||
note: context is updated using self.get_date_context
|
||||
"""
|
||||
context = super().get_context(request, *args, **kwargs)
|
||||
|
||||
# date navigation
|
||||
if 'date' in request.GET:
|
||||
date = request.GET.get('date')
|
||||
date = self.str_to_date(date)
|
||||
else:
|
||||
date = tz.now().date()
|
||||
context.update(self.get_date_context(date))
|
||||
|
||||
# queryset
|
||||
context['object_list'] = self.get_queryset(request, context)
|
||||
return context
|
||||
|
||||
#
|
||||
# Menus and Sections
|
||||
#
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{% extends "cms/base_site.html" %}
|
||||
{# generic page to display list of articles #}
|
||||
{# display logs of what happened on air %}
|
||||
|
||||
{% block content %}
|
||||
{% include "cms/snippets/date_list.html" %}
|
||||
|
|
7
cms/templates/cms/timetable_page.html
Normal file
7
cms/templates/cms/timetable_page.html
Normal file
|
@ -0,0 +1,7 @@
|
|||
{% extends "cms/base_site.html" %}
|
||||
{# display a timetable of planified diffusions by days #}
|
||||
|
||||
{% block content %}
|
||||
{% include "cms/snippets/date_list.html" %}
|
||||
{% endblock %}
|
||||
|
Loading…
Reference in New Issue
Block a user