rm file
This commit is contained in:
@ -3,6 +3,7 @@ import tzlocal
|
||||
|
||||
from aircox.utils import to_seconds
|
||||
|
||||
from ..conf import settings
|
||||
from .metadata import Metadata, Request
|
||||
|
||||
|
||||
@ -76,7 +77,7 @@ class PlaylistSource(Source):
|
||||
self.program = program
|
||||
|
||||
super().__init__(controller, id=id, **kwargs)
|
||||
self.path = os.path.join(self.station.path, f"{self.id}.m3u")
|
||||
self.path = settings.get_dir(self.station, f"{self.id}.m3u")
|
||||
|
||||
def get_sound_queryset(self):
|
||||
"""Get playlist's sounds queryset."""
|
||||
@ -88,6 +89,7 @@ class PlaylistSource(Source):
|
||||
|
||||
def write_playlist(self, playlist=[]):
|
||||
"""Write playlist to file."""
|
||||
playlist = playlist or self.get_playlist()
|
||||
os.makedirs(os.path.dirname(self.path), exist_ok=True)
|
||||
with open(self.path, "w") as file:
|
||||
file.write("\n".join(playlist or []))
|
||||
|
@ -95,6 +95,8 @@ class Streamer:
|
||||
data = render_to_string(
|
||||
self.template_name,
|
||||
{
|
||||
"dir": settings.get_dir(self.station),
|
||||
"log_file": settings.get_dir(self.station, "liquidsoap.log"),
|
||||
"station": self.station,
|
||||
"streamer": self,
|
||||
},
|
||||
|
@ -53,13 +53,13 @@ class SourceSerializer(MetadataSerializer):
|
||||
class PlaylistSerializer(SourceSerializer):
|
||||
program = serializers.CharField(source="program.id")
|
||||
|
||||
url_name = "admin:api:streamer-playlist-detail"
|
||||
url_name = "streamer:api:streamer-playlist-detail"
|
||||
|
||||
|
||||
class QueueSourceSerializer(SourceSerializer):
|
||||
queue = serializers.ListField(child=RequestSerializer(), source="requests")
|
||||
|
||||
url_name = "admin:api:streamer-queue-detail"
|
||||
url_name = "streamer:api:streamer-queue-detail"
|
||||
|
||||
|
||||
class StreamerSerializer(BaseSerializer):
|
||||
@ -69,7 +69,7 @@ class StreamerSerializer(BaseSerializer):
|
||||
playlists = serializers.ListField(child=PlaylistSerializer())
|
||||
queues = serializers.ListField(child=QueueSourceSerializer())
|
||||
|
||||
url_name = "admin:api:streamer-detail"
|
||||
url_name = "streamer:api:streamer-detail"
|
||||
|
||||
def get_url(self, obj, **kwargs):
|
||||
kwargs["pk"] = obj.station.pk
|
||||
|
@ -80,7 +80,7 @@ end
|
||||
{% block config %}
|
||||
set("server.socket", true)
|
||||
set("server.socket.path", "{{ streamer.socket_path }}")
|
||||
set("log.file.path", "{{ station.path }}/liquidsoap.log")
|
||||
set("log.file.path", "{{ log_file }}")
|
||||
{% endblock %}
|
||||
|
||||
{% block config_extras %}
|
||||
|
@ -1,16 +1,13 @@
|
||||
{% extends "admin/base_site.html" %}
|
||||
{% comment %}Admin tools used to manage the streamer.{% endcomment %}
|
||||
{% extends "aircox/dashboard/base.html" %}
|
||||
{% load i18n static %}
|
||||
|
||||
{% block init-scripts %}
|
||||
aircox.init({apiUrl: "{% url "admin:api:streamer-list" %}"},
|
||||
{config: window.StreamerApp})
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% block title %}{% translate "Streamer monitor" %}{% endblock %}
|
||||
|
||||
{% block content-container %}
|
||||
{{ block.super }}
|
||||
<div id="app">
|
||||
<a-streamer api-url="{% url "admin:api:streamer-list" %}">
|
||||
<div class="container">
|
||||
<a-streamer api-url="{% url "streamer:api:streamer-list" %}">
|
||||
<template v-slot="{streamer,streamers,sources,fetchStreamers,Sound}">
|
||||
<div class="navbar toolbar">
|
||||
<div class="navbar-start">
|
||||
|
@ -1,33 +1,25 @@
|
||||
from django.contrib import admin
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.urls import include, path
|
||||
|
||||
from aircox.viewsets import SoundViewSet
|
||||
|
||||
from . import viewsets
|
||||
from .views import StreamerAdminView
|
||||
from . import views, viewsets
|
||||
|
||||
admin.site.route_view(
|
||||
"tools/streamer",
|
||||
StreamerAdminView.as_view(),
|
||||
"tools-streamer",
|
||||
label=_("Streamer Monitor"),
|
||||
)
|
||||
|
||||
streamer_prefix = "streamer/(?P<station_pk>[0-9]+)/"
|
||||
__all__ = ("api", "urls")
|
||||
|
||||
|
||||
prefix = "(?P<station_pk>[0-9]+)/"
|
||||
|
||||
|
||||
router = admin.site.router
|
||||
router.register(
|
||||
streamer_prefix + "playlist",
|
||||
viewsets.PlaylistSourceViewSet,
|
||||
basename="streamer-playlist",
|
||||
)
|
||||
router.register(
|
||||
streamer_prefix + "queue",
|
||||
viewsets.QueueSourceViewSet,
|
||||
basename="streamer-queue",
|
||||
)
|
||||
router.register(prefix + "playlist", viewsets.PlaylistSourceViewSet, basename="streamer-playlist")
|
||||
router.register(prefix + "queue", viewsets.QueueSourceViewSet, basename="streamer-queue")
|
||||
router.register("streamer", viewsets.StreamerViewSet, basename="streamer")
|
||||
router.register("sound", SoundViewSet, basename="sound")
|
||||
|
||||
urls = []
|
||||
api = router.urls
|
||||
urls = [
|
||||
path("api/", include((api, "aircox_streamer"), namespace="api")),
|
||||
path("", views.StreamerView.as_view(), name="dashboard-streamer"),
|
||||
]
|
||||
|
@ -1,13 +1,13 @@
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
from django.views.generic import TemplateView
|
||||
|
||||
from aircox.views.admin import AdminMixin
|
||||
from aircox.views.dashboard import DashboardBaseView
|
||||
from .controllers import streamers
|
||||
|
||||
|
||||
class StreamerAdminView(AdminMixin, TemplateView):
|
||||
class StreamerView(DashboardBaseView, TemplateView):
|
||||
template_name = "aircox_streamer/streamer.html"
|
||||
title = _("Streamer Monitor")
|
||||
title = _("Streamer")
|
||||
streamers = streamers
|
||||
|
||||
def dispatch(self, *args, **kwargs):
|
||||
|
@ -43,6 +43,8 @@ class ControllerViewSet(viewsets.ViewSet):
|
||||
if station_pk is None:
|
||||
station_pk = self.request.station.pk
|
||||
self.streamers.fetch()
|
||||
if station_pk is None:
|
||||
return None
|
||||
if station_pk not in self.streamers:
|
||||
raise Http404("station not found")
|
||||
return self.streamers[station_pk]
|
||||
@ -78,7 +80,7 @@ class StreamerViewSet(ControllerViewSet):
|
||||
def dispatch(self, request, *args, pk=None, **kwargs):
|
||||
if pk is not None:
|
||||
kwargs.setdefault("station_pk", pk)
|
||||
self.streamer = self.get_streamer(request, **kwargs)
|
||||
self.streamer = self.get_streamer(**kwargs)
|
||||
self.object = self.streamer
|
||||
return super().dispatch(request, *args, **kwargs)
|
||||
|
||||
|
Reference in New Issue
Block a user