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