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