add timetable
This commit is contained in:
parent
3975c222c6
commit
d20b5ccdda
|
@ -514,7 +514,7 @@ class EventPage(Publication):
|
||||||
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Indexes
|
# Lists
|
||||||
#
|
#
|
||||||
class BaseDateList(models.Model):
|
class BaseDateList(models.Model):
|
||||||
nav_days = models.SmallIntegerField(
|
nav_days = models.SmallIntegerField(
|
||||||
|
@ -530,6 +530,16 @@ class BaseDateList(models.Model):
|
||||||
'of show days equally around the current date')
|
'of show days equally around the current date')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
abstract = True
|
||||||
|
|
||||||
|
panels = [
|
||||||
|
MultiFieldPanel([
|
||||||
|
FieldPanel('nav_days'),
|
||||||
|
FieldPanel('nav_per_week'),
|
||||||
|
], heading=_('Navigation')),
|
||||||
|
]
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def str_to_date(date):
|
def str_to_date(date):
|
||||||
"""
|
"""
|
||||||
|
@ -590,9 +600,6 @@ class BaseDateList(models.Model):
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Meta:
|
|
||||||
abstract = True
|
|
||||||
|
|
||||||
|
|
||||||
class ListPage(Page):
|
class ListPage(Page):
|
||||||
"""
|
"""
|
||||||
|
@ -711,6 +718,8 @@ class LogsPage(BaseDateList,Page):
|
||||||
'0 means no limit')
|
'0 means no limit')
|
||||||
)
|
)
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = _('Logs Page')
|
||||||
|
|
||||||
content_panels = [
|
content_panels = [
|
||||||
FieldPanel('title'),
|
FieldPanel('title'),
|
||||||
|
@ -718,8 +727,7 @@ class LogsPage(BaseDateList,Page):
|
||||||
FieldPanel('station'),
|
FieldPanel('station'),
|
||||||
FieldPanel('max_days'),
|
FieldPanel('max_days'),
|
||||||
], heading=_('Configuration')),
|
], heading=_('Configuration')),
|
||||||
]
|
] + BaseDateList.panels
|
||||||
|
|
||||||
|
|
||||||
def as_item(cl, log):
|
def as_item(cl, log):
|
||||||
"""
|
"""
|
||||||
|
@ -740,6 +748,20 @@ class LogsPage(BaseDateList,Page):
|
||||||
)
|
)
|
||||||
|
|
||||||
def get_queryset(self, request, context):
|
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:
|
if 'date' in request.GET:
|
||||||
date = request.GET.get('date')
|
date = request.GET.get('date')
|
||||||
date = self.str_to_date(date)
|
date = self.str_to_date(date)
|
||||||
|
@ -753,20 +775,43 @@ class LogsPage(BaseDateList,Page):
|
||||||
date = tz.now().date()
|
date = tz.now().date()
|
||||||
context.update(self.get_date_context(date, date_max=tz.now().date()))
|
context.update(self.get_date_context(date, date_max=tz.now().date()))
|
||||||
|
|
||||||
r = []
|
# queryset
|
||||||
for date in context['nav_dates']['dates']:
|
context['object_list'] = self.get_queryset(request, context)
|
||||||
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
|
|
||||||
return 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
|
# Menus and Sections
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
{% extends "cms/base_site.html" %}
|
{% extends "cms/base_site.html" %}
|
||||||
{# generic page to display list of articles #}
|
{# display logs of what happened on air %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
{% include "cms/snippets/date_list.html" %}
|
{% 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