word on liquidsoap interface
This commit is contained in:
@@ -9,36 +9,50 @@ import aircox_liquidsoap.settings as settings
|
||||
import aircox_liquidsoap.utils as utils
|
||||
import aircox_programs.models as models
|
||||
|
||||
|
||||
view_monitor = utils.Monitor(
|
||||
utils.Connector(address = settings.AIRCOX_LIQUIDSOAP_SOCKET)
|
||||
)
|
||||
|
||||
class Actions:
|
||||
@classmethod
|
||||
def exec (cl, monitor, controller, source, action):
|
||||
controller = monitor.controllers.get(controller)
|
||||
source = controller and controller.get(source)
|
||||
|
||||
if not controller or not source or \
|
||||
action.startswith('__') or \
|
||||
action not in cl.__dict__:
|
||||
return -1
|
||||
|
||||
action = getattr(Actions, action)
|
||||
return action(monitor, controller, source)
|
||||
|
||||
@classmethod
|
||||
def skip (cl, monitor, controller, source):
|
||||
source.skip()
|
||||
|
||||
|
||||
class LiquidControl (View):
|
||||
template_name = 'aircox_liquidsoap/controller.html'
|
||||
|
||||
def get_context_data (self, **kwargs):
|
||||
stations = models.Station.objects.all()
|
||||
controller = utils.Controller()
|
||||
|
||||
for station in stations:
|
||||
name = station.get_slug_name()
|
||||
streams = models.Stream.objects.filter(
|
||||
program__active = True,
|
||||
program__station = station
|
||||
)
|
||||
|
||||
# list sources
|
||||
sources = [ 'dealer' ] + \
|
||||
[ stream.program.get_slug_name() for stream in streams]
|
||||
|
||||
# sources status
|
||||
station.sources = { name: controller.get(station) }
|
||||
station.sources.update({
|
||||
source: controller.get(station, source)
|
||||
for source in sources
|
||||
})
|
||||
|
||||
view_monitor.update()
|
||||
return {
|
||||
'request': self.request,
|
||||
'stations': stations,
|
||||
'monitor': view_monitor,
|
||||
'embed': 'embed' in self.request.GET,
|
||||
}
|
||||
|
||||
def post (self, request = None, **kwargs):
|
||||
if 'action' in request.POST:
|
||||
POST = request.POST
|
||||
controller = POST.get('controller')
|
||||
source = POST.get('source')
|
||||
action = POST.get('action')
|
||||
Actions.exec(view_monitor, controller, source, action)
|
||||
return HttpResponse('')
|
||||
|
||||
def get (self, request = None, **kwargs):
|
||||
self.request = request
|
||||
context = self.get_context_data(**kwargs)
|
||||
|
||||
Reference in New Issue
Block a user