forked from rc/aircox
		
	quick fix on bugs due to Django 1.10
This commit is contained in:
		@ -170,7 +170,9 @@ class Station(programs.Nameable):
 | 
			
		||||
    @staticmethod
 | 
			
		||||
    def __mix_logs_and_diff(diffs, logs, count = 0):
 | 
			
		||||
        """
 | 
			
		||||
        Mix together logs and diffusion items ordering by their date.
 | 
			
		||||
        Mix together logs and diffusion items of the same day,
 | 
			
		||||
        ordered by their date.
 | 
			
		||||
 | 
			
		||||
        Diffs and Logs are assumed to be ordered by -date, and so is
 | 
			
		||||
        the resulting list
 | 
			
		||||
        """
 | 
			
		||||
@ -189,10 +191,15 @@ class Station(programs.Nameable):
 | 
			
		||||
            if count and len(items) >= count:
 | 
			
		||||
                break
 | 
			
		||||
 | 
			
		||||
        if diff_ and (not count or len(items) <= count):
 | 
			
		||||
            logs_ = logs.filter(date__lt = diff_.end)
 | 
			
		||||
            items.extend(logs_)
 | 
			
		||||
        if diff_:
 | 
			
		||||
            if count and len(items) >= count:
 | 
			
		||||
                return items[:count]
 | 
			
		||||
 | 
			
		||||
            logs_ = logs.filter(date__lt = diff_.end)
 | 
			
		||||
        else:
 | 
			
		||||
            logs_ = logs.all()
 | 
			
		||||
 | 
			
		||||
        items.extend(logs_)
 | 
			
		||||
        return items[:count] if count else items
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -305,7 +312,8 @@ class Source(programs.Nameable):
 | 
			
		||||
    program = models.ForeignKey(
 | 
			
		||||
        programs.Program,
 | 
			
		||||
        verbose_name = _('related program'),
 | 
			
		||||
        blank = True, null = True
 | 
			
		||||
        blank = True, null = True,
 | 
			
		||||
        limit_choices_to = { 'stream__isnull': False },
 | 
			
		||||
    )
 | 
			
		||||
    url = models.TextField(
 | 
			
		||||
        _('url'),
 | 
			
		||||
@ -355,7 +363,7 @@ class Source(programs.Nameable):
 | 
			
		||||
            self.controller.playlist = [ sound.path for sound in
 | 
			
		||||
                programs.Sound.objects.filter(
 | 
			
		||||
                    type = programs.Sound.Type.archive,
 | 
			
		||||
                    path__startswith = program.path
 | 
			
		||||
                    program = program,
 | 
			
		||||
                )
 | 
			
		||||
            ]
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
@ -25,6 +25,14 @@ class Monitor:
 | 
			
		||||
    Time in seconds before a diffusion that have archives is cancelled
 | 
			
		||||
    because it has not been played.
 | 
			
		||||
    """
 | 
			
		||||
    sync_timeout = 60*10
 | 
			
		||||
    """
 | 
			
		||||
    Time in minuts before all stream playlists are checked and updated
 | 
			
		||||
    """
 | 
			
		||||
    sync_next = None
 | 
			
		||||
    """
 | 
			
		||||
    Datetime of the next sync
 | 
			
		||||
    """
 | 
			
		||||
 | 
			
		||||
    def __init__(self, station, **kwargs):
 | 
			
		||||
        self.station = station
 | 
			
		||||
@ -44,6 +52,7 @@ class Monitor:
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        self.trace()
 | 
			
		||||
        self.sync_playlists()
 | 
			
		||||
        self.handle()
 | 
			
		||||
 | 
			
		||||
    def log(self, **kwargs):
 | 
			
		||||
@ -112,6 +121,22 @@ class Monitor:
 | 
			
		||||
                    related = track
 | 
			
		||||
                )
 | 
			
		||||
 | 
			
		||||
    def sync_playlists(self):
 | 
			
		||||
        """
 | 
			
		||||
        Synchronize updated playlists
 | 
			
		||||
        """
 | 
			
		||||
        now = tz.now()
 | 
			
		||||
        if self.sync_next and self.sync_next < now:
 | 
			
		||||
            return
 | 
			
		||||
 | 
			
		||||
        self.sync_next = now + tz.timedelta(seconds = self.sync_timeout)
 | 
			
		||||
 | 
			
		||||
        for source in self.station.stream_sources:
 | 
			
		||||
            playlist = [ sound.path for sound in
 | 
			
		||||
                            source.program.sound_set.all().order_by('path') ]
 | 
			
		||||
            if playlist != source.controller.playlist:
 | 
			
		||||
                source.controller.playlist = playlist
 | 
			
		||||
 | 
			
		||||
    def trace_canceled(self):
 | 
			
		||||
        """
 | 
			
		||||
        Check diffusions that should have been played but did not start,
 | 
			
		||||
 | 
			
		||||
@ -43,7 +43,8 @@ A stream is a source that:
 | 
			
		||||
- is interactive
 | 
			
		||||
{% endcomment %}
 | 
			
		||||
def stream (id, file) =
 | 
			
		||||
    s = playlist(id = '#{id}_playlist', mode = "random", file)
 | 
			
		||||
    s = playlist(id = '#{id}_playlist', mode = "random", reload_mode='watch',
 | 
			
		||||
                 file)
 | 
			
		||||
    interactive_source(id, s)
 | 
			
		||||
end
 | 
			
		||||
{% endblock %}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user