forked from rc/aircox
		
	Merge branch 'streamer_live'
This commit is contained in:
		@ -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]
 | 
			
		||||
 | 
			
		||||
@ -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)
 | 
			
		||||
            )
 | 
			
		||||
 | 
			
		||||
@ -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'
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
    )
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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')
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user