add manager for Related class; rename get_on_air as on_air + can retrieve by last logs instead of date

This commit is contained in:
bkfox
2016-07-25 15:03:54 +02:00
parent 62380c054d
commit 960fcab65d
7 changed files with 127 additions and 62 deletions

View File

@ -648,7 +648,7 @@ class LogsPage(DatedListPage):
logs = []
for date in context['nav_dates']['dates']:
items = self.station.get_on_air(date)
items = self.station.on_air(date = date)
items = [ self.as_item(item) for item in items ]
logs.append((date, items))
return logs

View File

@ -32,6 +32,10 @@ from modelcluster.fields import ParentalKey
from modelcluster.tags import ClusterTaggableManager
from taggit.models import TaggedItemBase
# aircox
import aircox.programs.models as programs
def related_pages_filter(reset_cache=False):
"""
@ -398,12 +402,12 @@ class DatedListBase(models.Model):
return [ first + tz.timedelta(days=i)
for i in range(0, self.nav_days) ]
def get_date_context(self, date):
def get_date_context(self, date = None):
"""
Return a dict that can be added to the context to be used by
a date_list.
"""
today = tz.now().today()
today = tz.now().date()
if not date:
date = today
@ -809,3 +813,41 @@ class SectionList(ListBase, SectionItem):
)
return context
@register_snippet
class SectionTimetable(SectionItem,DatedListBase):
panels = SectionItem.panels + DatedListBase.panels
def get_queryset(self, context):
from aircox.cms.models import DiffusionPage
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, page, *args, **kwargs):
context = super().get_context(request, page, *args, **kwargs)
context.update(self.get_date_context())
context['object_list'] = self.get_queryset(context)
return context
@register_snippet
class SectionLogs(SectionItem):
count = models.SmallIntegerField(
_('count'),
default = 5,
help_text = _('number of items to display in the list'),
)
panels = SectionItem.panels + [
FieldPanel('count'),
]
def get_context(self, request, page, *args, **kwargs):
pass

View File

@ -74,7 +74,7 @@ class DiffusionsMenu(GenericMenu):
def get_queryset(self):
return programs.Diffusion.objects.filter(
type = programs.Diffusion.Type.normal,
start__contains = tz.now().date() + tz.timedelta(days=2),
start__contains = tz.now().date(),
).order_by('start')
def get_title(self, item):