Merge branch 'streamer_live'

This commit is contained in:
bkfox
2017-06-30 14:18:56 +02:00
9 changed files with 243 additions and 235 deletions

View File

@ -64,7 +64,7 @@ class Command (BaseCommand):
initial__isnull = True
).exclude(type = Diffusion.Type.unconfirmed)
for diffusion in qs:
if not diffusion.program.page.count():
if not diffusion.program.page:
if not hasattr(diffusion.program, '__logged_diff_error'):
logger.warning(
'the program {} has no page; skip the creation of '
@ -80,7 +80,7 @@ class Command (BaseCommand):
page = DiffusionPage.from_diffusion(
diffusion, live = False
)
diffusion.program.page.first().add_child(instance = page)
diffusion.program.page.add_child(instance = page)
except:
import sys
e = sys.exc_info()[0]

View File

@ -452,10 +452,8 @@ class ProgramPage(Publication):
def diffs_to_page(self, diffs):
for diff in diffs:
if diff.page.count():
diff.page_ = diff.page.first()
else:
diff.page_ = ListItem(
if not diff.page:
diff.page = ListItem(
title = '{}, {}'.format(
self.program.name, diff.date.strftime('%d %B %Y')
),
@ -464,7 +462,7 @@ class ProgramPage(Publication):
date = diff.start,
)
return [
diff.page_ for diff in diffs if diff.page_.live
diff.page for diff in diffs if diff.page.live
]
@property
@ -560,8 +558,8 @@ class DiffusionPage(Publication):
'title': '{}, {}'.format(
diff.program.name, tz.localtime(diff.date).strftime('%d %B %Y')
),
'cover': (diff.program.page.count() and \
diff.program.page.first().cover) or None,
'cover': (diff.program.page and \
diff.program.page.cover) or None,
'date': diff.start,
}
model_kwargs.update(kwargs)
@ -637,7 +635,7 @@ class DiffusionPage(Publication):
if self.diffusion:
# set publish_as
if not self.pk:
self.publish_as = self.diffusion.program.page.first()
self.publish_as = self.diffusion.program.page
# sync date
self.date = self.diffusion.start
@ -777,8 +775,9 @@ class LogsPage(DatedListPage):
logs = []
for date in context['nav_dates']['dates']:
items = [ SectionLogsList.as_item(item)
for item in self.station.on_air(date = date) ]
items = self.station.on_air(date = date) \
.select_related('track','diffusion')
items = [ SectionLogsList.as_item(item) for item in items ]
logs.append(
(date, reversed(items) if self.reverse else items)
)

View File

@ -957,16 +957,16 @@ class SectionLogsList(SectionItem):
Supports: Log/Track, Diffusion
"""
from aircox_cms.models import DiffusionPage
if type(log) == aircox.models.Diffusion:
return DiffusionPage.as_item(log)
if log.diffusion:
return DiffusionPage.as_item(log.diffusion)
related = log.related
track = log.track
return ListItem(
title = '{artist} -- {title}'.format(
artist = related.artist,
title = related.title,
artist = track.artist,
title = track.title,
),
headline = related.info,
headline = track.info,
date = log.date,
info = '',
css_class = 'track'

View File

@ -118,7 +118,7 @@ def station_post_saved(sender, instance, created, *args, **kwargs):
@receiver(post_save, sender=aircox.Program)
def program_post_saved(sender, instance, created, *args, **kwargs):
if not created or instance.page.count():
if not created or instance.page:
return
settings = utils.get_station_settings(instance.station)
@ -191,7 +191,7 @@ def diffusion_post_saved(sender, instance, created, *args, **kwargs):
page = models.DiffusionPage.from_diffusion(
instance, live = False
)
instance.program.page.first().add_child(
instance.program.page.add_child(
instance = page
)

View File

@ -127,8 +127,8 @@ class LogAdmin(ModelAdmin):
menu_label = _('Logs')
menu_icon = 'time'
menu_order = 300
list_display = ['date', 'station', 'source', 'type', 'comment', 'related']
list_filter = ['date', 'source', 'related_type']
list_display = ['id', 'date', 'station', 'source', 'type', 'comment', 'diffusion', 'sound', 'track']
list_filter = ['date', 'source', 'diffusion', 'sound', 'track']
aircox.models.Log.panels = [
MultiFieldPanel([
@ -139,11 +139,12 @@ aircox.models.Log.panels = [
]),
FieldPanel('type'),
FieldPanel('comment'),
FieldRowPanel([
FieldPanel('related_type'),
FieldPanel('related_id')
]),
], heading = _('Log')),
MultiFieldPanel([
FieldPanel('diffusion'),
FieldPanel('sound'),
FieldPanel('track'),
], heading = _('Related objects')),
]
@ -327,7 +328,7 @@ class TodayMenu(GenericMenu):
return MenuItem(label, self.page_url(item), attrs = attrs)
def get_parent(self, item):
return item.program.page.first()
return item.program.page
@hooks.register('register_admin_menu_item')