playlist start

This commit is contained in:
jr-k 2024-07-11 01:59:33 +02:00
parent 02f018c1c7
commit 79e3ed3a1b
10 changed files with 62 additions and 85 deletions

View File

@ -78,11 +78,11 @@
"playlist_panel_th_duration": "Duration",
"playlist_panel_th_enabled": "Enabled",
"playlist_panel_th_activity": "Options",
"playlist_form_add_title": "Add Slide",
"playlist_form_add_title": "Add Playlist",
"playlist_form_add_submit": "Add",
"playlist_form_edit_title": "Edit Slide",
"playlist_form_edit_title": "Edit Playlist",
"playlist_form_edit_submit": "Save",
"playlist_form_label_name": "Name",
"playlist_form_label_name": "Enter playlist name",
"playlist_form_label_time_sync": "Sync slides across players",
"playlist_form_button_cancel": "Cancel",
"js_playlist_delete_confirmation": "Are you sure?",

View File

@ -69,20 +69,20 @@
"slideshow_content_form_button_upload_choosen": "No hay archivos seleccionados",
"js_slideshow_content_delete_confirmation": "¿Estás seguro?",
"playlist_page_title": "Listas de reproducción",
"playlist_page_title": "Playlist",
"playlist_button_add": "Agregar una lista de reproducción",
"playlist_panel_active": "Listas de reproducción activas",
"playlist_panel_inactive": "Listas de reproducción inactivas",
"playlist_panel_empty": "Actualmente, no hay listas de reproducción. %link% ahora.",
"playlist_panel_active": "Playlist activas",
"playlist_panel_inactive": "Playlist inactivas",
"playlist_panel_empty": "Actualmente, no hay playlist. %link% ahora.",
"playlist_panel_th_name": "Nombre",
"playlist_panel_th_duration": "Duración",
"playlist_panel_th_enabled": "Habilitado",
"playlist_panel_th_activity": "Opciones",
"playlist_form_add_title": "Agregar Diapositiva",
"playlist_form_add_title": "Agregar Playlist",
"playlist_form_add_submit": "Agregar",
"playlist_form_edit_title": "Editar Diapositiva",
"playlist_form_edit_title": "Editar Playlist",
"playlist_form_edit_submit": "Guardar",
"playlist_form_label_name": "Nombre",
"playlist_form_label_name": "Introduce el nombre de la playlist",
"playlist_form_label_time_sync": "Sincronizar diapositivas entre reproductores",
"playlist_form_button_cancel": "Cancelar",
"js_playlist_delete_confirmation": "¿Estás seguro?",
@ -156,11 +156,11 @@
"settings_variable_form_label_name": "Nombre",
"settings_variable_form_label_value": "Valor",
"settings_variable_form_button_cancel": "Cancelar",
"settings_variable_form_error_not_playlist_enabled_while_fleet_player_enabled": "No puede deshabilitar listas de reproducción mientras la gestión de reproductores de flota está activada",
"settings_variable_form_error_not_playlist_enabled_while_fleet_player_enabled": "No puede deshabilitar playlist mientras la gestión de reproductores de flota está activada",
"settings_variable_desc_lang": "Idioma del servidor",
"settings_variable_desc_playlist_enabled": "Habilitar gestión de listas de reproducción",
"settings_variable_desc_playlist_enabled": "Habilitar gestión de playlist",
"settings_variable_desc_fleet_player_enabled": "Habilitar gestión de reproductores de flota",
"settings_variable_desc_edition_fleet_player_enabled": "La gestión de listas de reproducción también se habilitará",
"settings_variable_desc_edition_fleet_player_enabled": "La gestión de playlist también se habilitará",
"settings_variable_desc_auth_enabled": "Habilitar gestión de autenticación",
"settings_variable_desc_edition_auth_enabled": "Las credenciales predeterminadas del usuario serán admin/admin",
"settings_variable_desc_external_url": "URL externa (ej.: https://studio-01.company.com o http://10.10.3.100)",
@ -251,7 +251,7 @@
"enum_variable_section_general": "1. General",
"enum_variable_section_player_options": "2. Opciones del reproductor",
"enum_variable_section_player_animation": "3. Animación del reproductor",
"enum_variable_section_playlist": "4. Listas de reproducción",
"enum_variable_section_playlist": "4. Playlist",
"enum_variable_section_fleet": "5. Gestión de flota",
"enum_variable_section_security": "6. Seguridad",
"enum_application_language_english": "Inglés",

View File

@ -69,25 +69,25 @@
"slideshow_content_form_button_upload_choosen": "Aucun fichier sélectionné",
"js_slideshow_content_delete_confirmation": "Êtes-vous sûr ?",
"playlist_page_title": "Listes de lecture",
"playlist_button_add": "Ajouter une liste de lecture",
"playlist_panel_active": "Listes de lecture actives",
"playlist_panel_inactive": "Listes de lecture inactives",
"playlist_panel_empty": "Actuellement, il n'y a pas de liste de lecture. %link% maintenant.",
"playlist_page_title": "Playlist",
"playlist_button_add": "Ajouter une playlist",
"playlist_panel_active": "Playlist actives",
"playlist_panel_inactive": "Playlist inactives",
"playlist_panel_empty": "Actuellement, il n'y a pas de playlist. %link% maintenant.",
"playlist_panel_th_name": "Nom",
"playlist_panel_th_duration": "Durée",
"playlist_panel_th_enabled": "Activé",
"playlist_panel_th_activity": "Options",
"playlist_form_add_title": "Ajout d'une liste de lecture",
"playlist_form_add_title": "Ajout d'une Playlist",
"playlist_form_add_submit": "Ajouter",
"playlist_form_edit_title": "Modification d'une liste de lecture",
"playlist_form_edit_title": "Modification d'une Playlist",
"playlist_form_edit_submit": "Enregistrer",
"playlist_form_label_name": "Nom",
"playlist_form_label_name": "Entrez le nom de la playlist",
"playlist_form_label_time_sync": "Synchroniser les slides des lecteurs",
"playlist_form_button_cancel": "Annuler",
"js_playlist_delete_confirmation": "Êtes-vous sûr ?",
"playlist_delete_has_slides": "La liste de lecture contient des slides, supprimez-les avant et réessayez",
"playlist_delete_has_node_player_groups": "La liste de lecture est attribuée à un groupe de lecteur",
"playlist_delete_has_slides": "La playlist contient des slides, supprimez-les avant et réessayez",
"playlist_delete_has_node_player_groups": "La playlist est attribuée à un groupe de lecteur",
"fleet_node_player_page_title": "Lecteurs",
"fleet_node_player_button_add": "Ajouter un lecteur",
@ -168,7 +168,7 @@
"settings_variable_desc_default_slide_duration": "Durée de la slide d'introduction (en secondes)",
"settings_variable_desc_default_slide_time_with_seconds": "Afficher les secondes de l'horloge de la slide d'introduction",
"settings_variable_desc_polling_interval": "Intervalle de rafraîchissement des paramètres à appliquer au lecteur (en secondes)",
"settings_variable_desc_playlist_default_time_sync": "Synchroniser les slides des lecteurs pour la liste de lecture par défaut",
"settings_variable_desc_playlist_default_time_sync": "Synchroniser les slides des lecteurs pour la playlist par défaut",
"settings_variable_desc_slide_animation_enabled": "Activer les effets d'animation entre les slides",
"settings_variable_desc_slide_animation_entrance_effect": "Effet d'animation d'arrivée de la slide",

View File

@ -78,11 +78,11 @@
"playlist_panel_th_duration": "Durata",
"playlist_panel_th_enabled": "Abilitata",
"playlist_panel_th_activity": "Opzioni",
"playlist_form_add_title": "Aggiungi Slide",
"playlist_form_add_title": "Aggiungi Playlist",
"playlist_form_add_submit": "Aggiungi",
"playlist_form_edit_title": "Modifica Slide",
"playlist_form_edit_title": "Modifica Playlist",
"playlist_form_edit_submit": "Salva",
"playlist_form_label_name": "Nome",
"playlist_form_label_name": "Inserisci il nome della playlist",
"playlist_form_label_time_sync": "Sincronizza le slide tra gli schermi",
"playlist_form_button_cancel": "Cancella",
"js_playlist_delete_confirmation": "Sei sicuro?",

View File

@ -23,16 +23,11 @@ class PlaylistController(ObController):
self._app.add_url_rule('/playlist/toggle', 'playlist_toggle', self.guard_playlist(self._auth(self.playlist_toggle)), methods=['POST'])
self._app.add_url_rule('/playlist/delete', 'playlist_delete', self.guard_playlist(self._auth(self.playlist_delete)), methods=['DELETE'])
def playlist(self):
return render_template(
'playlist/playlist.jinja.html',
playlists=self._model_store.playlist().get_enabled_playlists(),
)
def playlist_list(self):
durations = self._model_store.playlist().get_durations_by_playlists()
return render_template(
'playlist/list.jinja.html',
playlists=self._model_store.playlist().get_all(ascending=True),
enabled_playlists=self._model_store.playlist().get_enabled_playlists(with_default=True),
disabled_playlists=self._model_store.playlist().get_disabled_playlists(),
durations=durations
@ -41,7 +36,8 @@ class PlaylistController(ObController):
def playlist_add(self):
playlist = Playlist(
name=request.form['name'],
time_sync=False if request.form['time_sync'] == '0' else True,
enabled=True,
time_sync=False
)
self._model_store.playlist().add_form(playlist)

View File

@ -62,8 +62,8 @@ class ContentManager(ModelManager):
return self.hydrate_object(object)
def get_all(self, sort: bool = False) -> List[Content]:
return self.hydrate_list(self._db.get_all(self.TABLE_NAME, sort="created_at" if sort else None, ascending=False))
def get_all(self, sort: Optional[str] = 'created_at', ascending=False) -> List[Content]:
return self.hydrate_list(self._db.get_all(self.TABLE_NAME, sort=sort, ascending=ascending))
def get_all_indexed(self, attribute: str = 'id', multiple=False) -> Dict[str, Content]:
index = {}

View File

@ -69,8 +69,8 @@ class PlaylistManager(ModelManager):
map[duration['playlist_id']] = duration['total_duration']
return map
def get_all(self) -> List[Playlist]:
return self.hydrate_list(self._db.get_all(self.TABLE_NAME))
def get_all(self, sort: Optional[str] = 'created_at', ascending=False) -> List[Playlist]:
return self.hydrate_list(self._db.get_all(self.TABLE_NAME, sort=sort, ascending=ascending))
def get_all_labels_indexed(self) -> Dict:
index = {}

View File

@ -59,7 +59,7 @@
"position": 0,
"pills": [
{"name": "Bibliothèque", "route": "slideshow_content_list", "icon": "fa-image"},
{"name": "Planifier", "route": "slideshow_slide_list", "icon": "fa-clock"},
{"name": "Playlists", "route": "playlist_list", "icon": "fa-play"},
]
},
"configuration": {

View File

@ -1,4 +1,4 @@
{% extends 'base.jinja.html'%}
{% extends 'base.jinja.html' %}
{% block page_title %}
{{ l.playlist_page_title }}
@ -9,52 +9,41 @@
{% endblock %}
{% block add_js %}
<script src="{{ STATIC_PREFIX }}js/lib/tablednd-fixed.js"></script>
<script src="{{ STATIC_PREFIX }}js/playlist/playlists.js"></script>
{{ HOOK(H_PLAYLIST_JAVASCRIPT) }}
{% endblock %}
{% block page %}
<div class="toolbar">
<h2><i class="fa fa-bars-staggered icon-left"></i>{{ l.playlist_page_title }}</h2>
<div class="toolbar-actions">
<div class="top-content">
<h1>
{{ l.playlist_page_title }}
</h1>
<div class="top-actions">
{{ HOOK(H_PLAYLIST_TOOLBAR_ACTIONS_START) }}
<button class="purple playlist-add item-add"><i class="fa fa-plus icon-left"></i>{{ l.playlist_button_add }}</button>
<button class="btn btn-info playlist-add item-add">
<i class="fa fa-play icon-left"></i>
{{ l.playlist_button_add }}
</button>
{{ HOOK(H_PLAYLIST_TOOLBAR_ACTIONS_END) }}
</div>
</div>
<div class="alert alert-error hidden">
</div>
<div class="panel">
<div class="panel-body">
<h3>{{ l.playlist_panel_active }}</h3>
{% with tclass='active', playlists=enabled_playlists %}
{% include 'playlist/component/table.jinja.html' %}
{% endwith %}
<div class="bottom-content">
<div class="page-content">
<div class="inner">
{% with playlists=playlists %}
{% include 'playlist/component/table.jinja.html' %}
{% endwith %}
</div>
</div>
</div>
<div class="panel panel-inactive">
<div class="panel-body">
<h3>{{ l.playlist_panel_inactive }}</h3>
{% with tclass='inactive', playlists=disabled_playlists %}
{% include 'playlist/component/table.jinja.html' %}
{% endwith %}
</div>
</div>
<div class="modals hidden">
<div class="modals-outer">
<a href="javascript:void(0);" class="modal-close">
<i class="fa fa-close"></i>
</a>
<div class="modals-inner">
{% include 'playlist/modal/add.jinja.html' %}
{% include 'playlist/modal/edit.jinja.html' %}
{% include 'core/utrack.jinja.html' %}
</div>
</div>

View File

@ -3,8 +3,7 @@
{{ l.playlist_form_add_title }}
</h2>
<form class="form" action="/playlist/add" method="POST" enctype="multipart/form-data">
<form class="form" action="{{ url_for('playlist_add') }}" method="POST">
<div class="form-group">
<label for="playlist-add-name">{{ l.playlist_form_label_name }}</label>
@ -13,22 +12,15 @@
</div>
</div>
<div class="form-group">
<label for="playlist-add-time-sync">{{ l.playlist_form_label_time_sync }}</label>
<div class="widget">
<select name="time_sync" type="text" id="playlist-add-time-sync" required="required">
<option value="1"></option>
<option value="0"></option>
</select>
</div>
</div>
<div class="actions">
<button type="button" class="btn-normal modal-close">
{{ l.playlist_form_button_cancel }}
<button type="button" class="btn btn-naked modal-close">
{{ l.common_close }}
</button>
<button type="submit" class="green">
<i class="fa fa-plus icon-left"></i> {{ l.playlist_form_add_submit }}
<button type="submit" class="btn btn-info">
<i class="fa fa-save icon-left"></i>{{ l.common_save }}
</button>
<button type="button" disabled="disabled" class="btn btn-naked hidden btn-loading">
{{ l.common_loading }}
</button>
</div>
</form>