music stream

This commit is contained in:
bkfox 2024-02-01 19:31:30 +01:00
parent e3966ca5cb
commit 93e286fa62
15 changed files with 276 additions and 233 deletions

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Aircox 0.1\n" "Project-Id-Version: Aircox 0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-16 13:25+0000\n" "POT-Creation-Date: 2024-02-01 18:22+0000\n"
"PO-Revision-Date: 2016-10-10 16:00+02\n" "PO-Revision-Date: 2016-10-10 16:00+02\n"
"Last-Translator: Aarys\n" "Last-Translator: Aarys\n"
"Language-Team: Aircox's translators team\n" "Language-Team: Aircox's translators team\n"
@ -19,7 +19,7 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: aircox/admin/diffusion.py:26 aircox/models/diffusion.py:122 #: aircox/admin/diffusion.py:26 aircox/models/diffusion.py:122
#: aircox/models/log.py:75 #: aircox/models/log.py:76
msgid "start" msgid "start"
msgstr "début" msgstr "début"
@ -40,7 +40,7 @@ msgstr "Depuis"
msgid "Until" msgid "Until"
msgstr "Jusque" msgstr "Jusque"
#: aircox/admin/filters.py:28 aircox/models/page.py:260 #: aircox/admin/filters.py:28 aircox/models/page.py:263
#: aircox/tests/admin/test_filters.py:53 #: aircox/tests/admin/test_filters.py:53
msgid "None" msgid "None"
msgstr "Aucun" msgstr "Aucun"
@ -77,7 +77,7 @@ msgstr "Audio"
msgid "Program / Episode" msgid "Program / Episode"
msgstr "Émission / Épisode" msgstr "Émission / Épisode"
#: aircox/admin/sound.py:135 aircox/templates/aircox/episode_detail.html:30 #: aircox/admin/sound.py:135 aircox/templates/aircox/episode_detail.html:29
msgid "Playlist" msgid "Playlist"
msgstr "Playlist" msgstr "Playlist"
@ -115,7 +115,7 @@ msgstr "Article"
msgid "Articles" msgid "Articles"
msgstr "Articles" msgstr "Articles"
#: aircox/models/diffusion.py:100 aircox/models/log.py:77 #: aircox/models/diffusion.py:100 aircox/models/log.py:78
msgid "on air" msgid "on air"
msgstr "à l'antenne" msgstr "à l'antenne"
@ -123,7 +123,7 @@ msgstr "à l'antenne"
msgid "not confirmed" msgid "not confirmed"
msgstr "non confirmé" msgstr "non confirmé"
#: aircox/models/diffusion.py:102 aircox/models/log.py:76 #: aircox/models/diffusion.py:102 aircox/models/log.py:77
msgid "cancelled" msgid "cancelled"
msgstr "annulé" msgstr "annulé"
@ -136,12 +136,12 @@ msgstr "épisode"
msgid "schedule" msgid "schedule"
msgstr "horaire" msgstr "horaire"
#: aircox/models/diffusion.py:118 aircox/models/log.py:87 #: aircox/models/diffusion.py:118 aircox/models/log.py:88
#: aircox/models/sound.py:113 aircox/models/station.py:156 #: aircox/models/sound.py:113 aircox/models/station.py:160
msgid "type" msgid "type"
msgstr "type" msgstr "type"
#: aircox/models/diffusion.py:133 aircox/models/log.py:126 #: aircox/models/diffusion.py:133 aircox/models/log.py:127
msgid "Diffusion" msgid "Diffusion"
msgstr "Date de diffusion" msgstr "Date de diffusion"
@ -165,57 +165,57 @@ msgstr "Épisode"
msgid "Episodes" msgid "Episodes"
msgstr "Épisodes" msgstr "Épisodes"
#: aircox/models/log.py:74 #: aircox/models/log.py:75
msgid "stop" msgid "stop"
msgstr "stop" msgstr "stop"
#: aircox/models/log.py:78 aircox/models/sound.py:90 #: aircox/models/log.py:79 aircox/models/sound.py:90
msgid "other" msgid "other"
msgstr "autre" msgstr "autre"
#: aircox/models/log.py:84 aircox/models/page.py:320 #: aircox/models/log.py:85 aircox/models/page.py:323
#: aircox/models/program.py:50 aircox/models/station.py:154 #: aircox/models/program.py:50 aircox/models/station.py:158
msgid "station" msgid "station"
msgstr "station" msgstr "station"
#: aircox/models/log.py:85 #: aircox/models/log.py:86
msgid "related station" msgid "related station"
msgstr "station relative" msgstr "station relative"
#: aircox/models/log.py:88 aircox/models/schedule.py:48 #: aircox/models/log.py:89 aircox/models/schedule.py:48
msgid "date" msgid "date"
msgstr "date" msgstr "date"
#: aircox/models/log.py:95 #: aircox/models/log.py:96
msgid "source" msgid "source"
msgstr "source" msgstr "source"
#: aircox/models/log.py:96 #: aircox/models/log.py:97
msgid "identifier of the source related to this log" msgid "identifier of the source related to this log"
msgstr "identifiant de la source relative à ce log" msgstr "identifiant de la source relative à ce log"
#: aircox/models/log.py:102 #: aircox/models/log.py:103
msgid "comment" msgid "comment"
msgstr "commentaire" msgstr "commentaire"
#: aircox/models/log.py:110 aircox/models/sound.py:163 #: aircox/models/log.py:111 aircox/models/sound.py:163
msgid "Sound" msgid "Sound"
msgstr "Son" msgstr "Son"
#: aircox/models/log.py:118 aircox/models/sound.py:294 #: aircox/models/log.py:119 aircox/models/sound.py:294
#: aircox/templates/admin/aircox/statistics.html:24 #: aircox/templates/admin/aircox/statistics.html:24
msgid "Track" msgid "Track"
msgstr "Morceau" msgstr "Morceau"
#: aircox/models/log.py:150 #: aircox/models/log.py:151
msgid "Log" msgid "Log"
msgstr "Log" msgstr "Log"
#: aircox/models/log.py:151 #: aircox/models/log.py:152
msgid "Logs" msgid "Logs"
msgstr "Logs" msgstr "Logs"
#: aircox/models/page.py:43 aircox/models/page.py:323 #: aircox/models/page.py:43 aircox/models/page.py:326
#: aircox/models/sound.py:277 #: aircox/models/sound.py:277
msgid "title" msgid "title"
msgstr "titre" msgstr "titre"
@ -253,125 +253,117 @@ msgstr "statut"
msgid "cover" msgid "cover"
msgstr "couverture" msgstr "couverture"
#: aircox/models/page.py:111 aircox/models/page.py:300 #: aircox/models/page.py:111 aircox/models/page.py:303
msgid "content" msgid "content"
msgstr "contenu" msgstr "contenu"
#: aircox/models/page.py:205 #: aircox/models/page.py:208
msgid "category" msgid "category"
msgstr "catégorie" msgstr "catégorie"
#: aircox/models/page.py:210 #: aircox/models/page.py:213
msgid "publication date" msgid "publication date"
msgstr "date de publication" msgstr "date de publication"
#: aircox/models/page.py:212 #: aircox/models/page.py:215
msgid "featured" msgid "featured"
msgstr "en avant" msgstr "en avant"
#: aircox/models/page.py:216 #: aircox/models/page.py:219
msgid "allow comments" msgid "allow comments"
msgstr "autoriser les commentaires" msgstr "autoriser les commentaires"
#: aircox/models/page.py:240 #: aircox/models/page.py:243
msgid "Publication" msgid "Publication"
msgstr "Publication" msgstr "Publication"
#: aircox/models/page.py:241 #: aircox/models/page.py:244
msgid "Publications" msgid "Publications"
msgstr "Publications" msgstr "Publications"
#: aircox/models/page.py:261 #: aircox/models/page.py:264
#, fuzzy
#| msgid "Home page"
msgid "Home Page" msgid "Home Page"
msgstr "Page d'accueil" msgstr "Page d'accueil"
#: aircox/models/page.py:262 #: aircox/models/page.py:265
#, fuzzy
#| msgid "Timestamp"
msgid "Timetable" msgid "Timetable"
msgstr "Temps" msgstr "Temps"
#: aircox/models/page.py:263 #: aircox/models/page.py:266
msgid "Programs list" msgid "Programs list"
msgstr "Liste des émissions" msgstr "Liste des émissions"
#: aircox/models/page.py:264 #: aircox/models/page.py:267
msgid "Episodes list" msgid "Episodes list"
msgstr "Liste des épisodes" msgstr "Liste des épisodes"
#: aircox/models/page.py:265 #: aircox/models/page.py:268
msgid "Articles list" msgid "Articles list"
msgstr "Liste des articles" msgstr "Liste des articles"
#: aircox/models/page.py:266 #: aircox/models/page.py:269
#, fuzzy
#| msgid "Publications"
msgid "Publications list" msgid "Publications list"
msgstr "Publications" msgstr "Publications"
#: aircox/models/page.py:267 #: aircox/models/page.py:270
#, fuzzy
#| msgid "Podcasts"
msgid "Podcasts list" msgid "Podcasts list"
msgstr "Podcasts" msgstr "Podcasts"
#: aircox/models/page.py:270 #: aircox/models/page.py:273
msgid "attach to" msgid "attach to"
msgstr "attacher à" msgstr "attacher à"
#: aircox/models/page.py:275 #: aircox/models/page.py:278
msgid "display this page content to related element" msgid "display this page content to related element"
msgstr "Afficher le contenu de cette page pour l'élément sélectionné" msgstr "Afficher le contenu de cette page pour l'élément sélectionné"
#: aircox/models/page.py:293 #: aircox/models/page.py:296
msgid "related page" msgid "related page"
msgstr "page liée" msgstr "page liée"
#: aircox/models/page.py:297 #: aircox/models/page.py:300
msgid "nickname" msgid "nickname"
msgstr "pseudo" msgstr "pseudo"
#: aircox/models/page.py:298 #: aircox/models/page.py:301
msgid "email" msgid "email"
msgstr "email" msgstr "email"
#: aircox/models/page.py:313 #: aircox/models/page.py:316
msgid "Comment" msgid "Comment"
msgstr "Commentaire" msgstr "Commentaire"
#: aircox/models/page.py:314 aircox/templates/aircox/page_detail.html:59 #: aircox/models/page.py:317 aircox/templates/aircox/page_detail.html:60
msgid "Comments" msgid "Comments"
msgstr "Commentaires" msgstr "Commentaires"
#: aircox/models/page.py:321 #: aircox/models/page.py:324
msgid "menu" msgid "menu"
msgstr "menu" msgstr "menu"
#: aircox/models/page.py:322 aircox/models/sound.py:115 #: aircox/models/page.py:325 aircox/models/sound.py:115
#: aircox/models/sound.py:267 #: aircox/models/sound.py:267
msgid "order" msgid "order"
msgstr "ordre" msgstr "ordre"
#: aircox/models/page.py:324 #: aircox/models/page.py:327
msgid "url" msgid "url"
msgstr "url" msgstr "url"
#: aircox/models/page.py:329 #: aircox/models/page.py:332
msgid "page" msgid "page"
msgstr "page" msgstr "page"
#: aircox/models/page.py:335 #: aircox/models/page.py:338
msgid "Menu item" msgid "Menu item"
msgstr "Élément du menu" msgstr "Élément du menu"
#: aircox/models/page.py:336 #: aircox/models/page.py:339
msgid "Menu items" msgid "Menu items"
msgstr "Éléments de menu" msgstr "Éléments de menu"
#: aircox/models/program.py:52 aircox/models/station.py:48 #: aircox/models/program.py:52 aircox/models/station.py:48
#: aircox/models/station.py:157 #: aircox/models/station.py:161
msgid "active" msgid "active"
msgstr "actif" msgstr "actif"
@ -533,7 +525,7 @@ msgstr "émission apparentée à celui-ci"
msgid "position in the playlist" msgid "position in the playlist"
msgstr "position dans la playlist" msgstr "position dans la playlist"
#: aircox/models/sound.py:125 aircox/models/station.py:151 #: aircox/models/sound.py:125 aircox/models/station.py:155
msgid "file" msgid "file"
msgstr "fichier" msgstr "fichier"
@ -666,27 +658,35 @@ msgstr ""
msgid "Default pages' cover" msgid "Default pages' cover"
msgstr "Couverture par défault des pages." msgstr "Couverture par défault des pages."
#: aircox/models/station.py:133 #: aircox/models/station.py:80
msgid "Music stream's title"
msgstr "Titre du flux musical"
#: aircox/models/station.py:81
msgid "Music stream"
msgstr "Flux musical"
#: aircox/models/station.py:137
msgid "input" msgid "input"
msgstr "entrée" msgstr "entrée"
#: aircox/models/station.py:134 #: aircox/models/station.py:138
msgid "output" msgid "output"
msgstr "sortie" msgstr "sortie"
#: aircox/models/station.py:155 #: aircox/models/station.py:159
msgid "direction" msgid "direction"
msgstr "direction" msgstr "direction"
#: aircox/models/station.py:157 #: aircox/models/station.py:161
msgid "this port is active" msgid "this port is active"
msgstr "ce port est actif" msgstr "ce port est actif"
#: aircox/models/station.py:159 #: aircox/models/station.py:163
msgid "port settings" msgid "port settings"
msgstr "paramètres du port" msgstr "paramètres du port"
#: aircox/models/station.py:161 #: aircox/models/station.py:165
msgid "" msgid ""
"list of comma separated params available; this is put in the output config " "list of comma separated params available; this is put in the output config "
"file as raw code; plugin related" "file as raw code; plugin related"
@ -757,7 +757,7 @@ msgid "Total"
msgstr "Total" msgstr "Total"
#: aircox/templates/admin/base.html:72 aircox/templates/admin/index.html:12 #: aircox/templates/admin/base.html:72 aircox/templates/admin/index.html:12
#: aircox/templates/aircox/home.html:48 #: aircox/templates/aircox/home.html:51
msgid "Today" msgid "Today"
msgstr "Aujourd'hui" msgstr "Aujourd'hui"
@ -817,24 +817,9 @@ msgstr "Dernières publications"
msgid "Administration" msgid "Administration"
msgstr "Administration" msgstr "Administration"
#. Translators: in page detail sidebar
#: aircox/templates/aircox/article_detail.html:12
msgid "Latest news"
msgstr "Dernières nouvelles"
#: aircox/templates/aircox/article_detail.html:23
msgid "Show all news"
msgstr "Afficher toutes les nouvelles"
#: aircox/templates/aircox/article_detail.html:24
msgid "More news"
msgstr "Plus de nouvelles"
#: aircox/templates/aircox/base.html:61 #: aircox/templates/aircox/base.html:61
#, fuzzy
#| msgid "menu"
msgid "Main menu" msgid "Main menu"
msgstr "menu" msgstr "Menu principal"
#: aircox/templates/aircox/base.html:71 #: aircox/templates/aircox/base.html:71
msgid "Admin" msgid "Admin"
@ -853,8 +838,8 @@ msgstr "pagination"
msgid "Previous" msgid "Previous"
msgstr "Précédent" msgstr "Précédent"
#: aircox/templates/aircox/basepage_list.html:53 #: aircox/templates/aircox/basepage_list.html:57
#: aircox/templates/aircox/basepage_list.html:54 #: aircox/templates/aircox/basepage_list.html:58
msgid "Next" msgid "Next"
msgstr "Prochain" msgstr "Prochain"
@ -863,17 +848,17 @@ msgstr "Prochain"
msgid "This week on %(station)s" msgid "This week on %(station)s"
msgstr "Cette semaine sur %(station)s" msgstr "Cette semaine sur %(station)s"
#: aircox/templates/aircox/episode_detail.html:17 #: aircox/templates/aircox/episode_detail.html:16
#: aircox/templates/aircox/episode_list.html:8 #: aircox/templates/aircox/episode_list.html:8
msgid "Podcasts" msgid "Podcasts"
msgstr "Podcasts" msgstr "Podcasts"
#: aircox/templates/aircox/episode_detail.html:35 #: aircox/templates/aircox/episode_detail.html:34
#: aircox/templatetags/aircox_admin.py:48 #: aircox/templatetags/aircox_admin.py:48
msgid "Artist" msgid "Artist"
msgstr "Artiste" msgstr "Artiste"
#: aircox/templates/aircox/episode_detail.html:36 #: aircox/templates/aircox/episode_detail.html:35
#: aircox/templatetags/aircox_admin.py:50 #: aircox/templatetags/aircox_admin.py:50
msgid "Title" msgid "Title"
msgstr "Titre" msgstr "Titre"
@ -915,35 +900,30 @@ msgstr "Si vous êtes un visiteur ou visiteuse, contactez votre radio favorite"
msgid "Today on %(station)s" msgid "Today on %(station)s"
msgstr "Aujourd'hui sur %(station)s" msgstr "Aujourd'hui sur %(station)s"
#: aircox/templates/aircox/home.html:40 #: aircox/templates/aircox/home.html:42
msgid "It just happened" msgid "It just happened"
msgstr "Ça vient juste d'arriver" msgstr "Ça vient juste d'arriver"
#: aircox/templates/aircox/home.html:47 #: aircox/templates/aircox/home.html:50
msgid "Show all program's for today" msgid "Show all program's for today"
msgstr "Tous les articles de l'émission" msgstr "Tous les articles de l'émission"
#: aircox/templates/aircox/home.html:57 #: aircox/templates/aircox/home.html:60
msgid "Last podcasts" msgid "Last podcasts"
msgstr "Derniers Podcasts" msgstr "Derniers Podcasts"
#: aircox/templates/aircox/home.html:58 #: aircox/templates/aircox/home.html:61
msgid "All podcasts" msgid "All podcasts"
msgstr "Tous les podcasts" msgstr "Tous les podcasts"
#: aircox/templates/aircox/home.html:64 #: aircox/templates/aircox/home.html:67
msgid "Last publications" msgid "Last publications"
msgstr "Dernières publications" msgstr "Dernières publications"
#: aircox/templates/aircox/home.html:65 #: aircox/templates/aircox/home.html:68
msgid "All publications" msgid "All publications"
msgstr "Toutes les publications" msgstr "Toutes les publications"
#: aircox/templates/aircox/log_list.html:9
#, python-format
msgid "That happened on %(station)s"
msgstr "C'est passé sur %(station)s"
#: aircox/templates/aircox/page_detail.html:21 #: aircox/templates/aircox/page_detail.html:21
msgid "Edit" msgid "Edit"
msgstr "Éditer" msgstr "Éditer"
@ -953,11 +933,11 @@ msgstr "Éditer"
msgid "Related %(models)s" msgid "Related %(models)s"
msgstr "%(models)s connexes" msgstr "%(models)s connexes"
#: aircox/templates/aircox/page_detail.html:71 #: aircox/templates/aircox/page_detail.html:72
msgid "Post a comment" msgid "Post a comment"
msgstr "Poster un commentaire" msgstr "Poster un commentaire"
#: aircox/templates/aircox/page_detail.html:98 #: aircox/templates/aircox/page_detail.html:99
msgid "Post comment" msgid "Post comment"
msgstr "Commenter" msgstr "Commenter"
@ -971,24 +951,18 @@ msgid "Rerun"
msgstr "Rediffusion" msgstr "Rediffusion"
#: aircox/templates/aircox/program_detail.html:41 #: aircox/templates/aircox/program_detail.html:41
#, fuzzy
#| msgid "Episodes"
msgid "Last Episodes" msgid "Last Episodes"
msgstr "Épisodes" msgstr "Derniers Épisodes"
#: aircox/templates/aircox/program_detail.html:42 #: aircox/templates/aircox/program_detail.html:42
msgid "All episodes" msgid "All episodes"
msgstr "Tous les épisodes" msgstr "Tous les épisodes"
#: aircox/templates/aircox/program_detail.html:49 #: aircox/templates/aircox/program_detail.html:49
#, fuzzy
#| msgid "Articles"
msgid "Last Articles" msgid "Last Articles"
msgstr "Derniers articles" msgstr "Derniers articles"
#: aircox/templates/aircox/program_detail.html:50 #: aircox/templates/aircox/program_detail.html:50
#, fuzzy
#| msgid "Articles"
msgid "All articles" msgid "All articles"
msgstr "Tous les articles" msgstr "Tous les articles"
@ -1019,8 +993,6 @@ msgid "Dates"
msgstr "Dates" msgstr "Dates"
#: aircox/templates/aircox/widgets/dates_menu.html:33 #: aircox/templates/aircox/widgets/dates_menu.html:33
#, fuzzy
#| msgid "pick a date"
msgid "Pick a date" msgid "Pick a date"
msgstr "Choisir une date" msgstr "Choisir une date"
@ -1036,6 +1008,10 @@ msgstr "Diffusion différée"
msgid "Listen" msgid "Listen"
msgstr "Écouter" msgstr "Écouter"
#: aircox/templates/aircox/widgets/page.html:40
msgid "Show"
msgstr "Voir"
#: aircox/templates/aircox/widgets/page_list.html:20 #: aircox/templates/aircox/widgets/page_list.html:20
msgid "Show all publications" msgid "Show all publications"
msgstr "Afficher toutes les publications" msgstr "Afficher toutes les publications"
@ -1060,11 +1036,11 @@ msgstr "Lire ou suspendre l'audio"
msgid "Track currently on air" msgid "Track currently on air"
msgstr "Morceau en ce moment sur les ondes" msgstr "Morceau en ce moment sur les ondes"
#: aircox/templates/aircox/widgets/player.html:42 #: aircox/templates/aircox/widgets/player.html:44
msgid "Diffusion currently on air" msgid "Diffusion currently on air"
msgstr "Épisode en ce moment sur les ondes" msgstr "Épisode en ce moment sur les ondes"
#: aircox/templates/aircox/widgets/player.html:46 #: aircox/templates/aircox/widgets/player.html:48
msgid "Currently playing" msgid "Currently playing"
msgstr "En ce moment" msgstr "En ce moment"
@ -1101,104 +1077,115 @@ msgid "Timestamp"
msgstr "Temps" msgstr "Temps"
#: aircox/urls.py:44 #: aircox/urls.py:44
msgid "articles/"
msgstr "articles/"
#: aircox/urls.py:49
msgid "articles/c/<slug:category_slug>/"
msgstr "articles/<slug:slug>/"
#: aircox/urls.py:52
msgid "articles/<slug:slug>/" msgid "articles/<slug:slug>/"
msgstr "articles/<slug:slug>/" msgstr "articles/<slug:slug>/"
#: aircox/urls.py:57 #: aircox/urls.py:49
msgid "programs/episodes/" msgid "articles/"
msgstr "emissions/episodes/" msgstr "articles/"
#: aircox/urls.py:58 #: aircox/urls.py:54
msgid "programs/episodes/c/<slug:category_slug>/" msgid "articles/c/<slug:category_slug>/"
msgstr "emissions/episodes/c/<slug:category_slug>/" msgstr "articles/<slug:slug>/"
#: aircox/urls.py:60 #: aircox/urls.py:59
msgid "programs/episodes/<slug:slug>/"
msgstr "emissions/episodes/<slug:slug>/"
#: aircox/urls.py:64
msgid "podcasts/"
msgstr "podcasts/"
#: aircox/urls.py:65
msgid "podcasts/c/<slug:category_slug>/"
msgstr "podcasts/c/<slug:category_slug>/"
#: aircox/urls.py:68
msgid "timetable/" msgid "timetable/"
msgstr "grille/" msgstr "grille/"
#: aircox/urls.py:70 #: aircox/urls.py:61
msgid "timetable/<date:date>/" msgid "timetable/<date:date>/"
msgstr "grille/<date:date>/" msgstr "grille/<date:date>/"
#: aircox/urls.py:76 #: aircox/urls.py:67
msgid "publications/" msgid "publications/"
msgstr "publications/" msgstr "publications/"
#: aircox/urls.py:81 #: aircox/urls.py:72
#, fuzzy
#| msgid "publications/c/<slug:category_slug>/"
msgid "publications/c/<slug:category_slug>" msgid "publications/c/<slug:category_slug>"
msgstr "publications/c/<slug:category_slug>/" msgstr "publications/c/<slug:category_slug>/"
#: aircox/urls.py:86 #: aircox/urls.py:77
msgid "pages/"
msgstr "pages/"
#: aircox/urls.py:94
msgid "pages/<slug:slug>/" msgid "pages/<slug:slug>/"
msgstr "pages/<slug:slug>/" msgstr "pages/<slug:slug>/"
#: aircox/urls.py:102 #: aircox/urls.py:85
msgid "pages/"
msgstr "pages/"
#: aircox/urls.py:93
msgid "programs/" msgid "programs/"
msgstr "emissions/" msgstr "emissions/"
#: aircox/urls.py:103 #: aircox/urls.py:94
msgid "programs/c/<slug:category_slug>/" msgid "programs/c/<slug:category_slug>/"
msgstr "emissions/c/<slug:category_slug>/" msgstr "emissions/c/<slug:category_slug>/"
#: aircox/urls.py:105 #: aircox/urls.py:96
msgid "programs/<slug:slug>/" msgid "programs/<slug:slug>"
msgstr "emissions/<slug:slug>/" msgstr "emissions/<slug:slug>"
#: aircox/urls.py:109 #: aircox/urls.py:100
msgid "programs/<slug:parent_slug>/articles/" msgid "programs/<slug:parent_slug>/articles"
msgstr "emissions/<slug:parent_slug>/articles/" msgstr "emissions/<slug:parent_slug>/articles"
#: aircox/urls.py:101
msgid "programs/<slug:parent_slug>/podcasts"
msgstr "emissions/<slug:parent_slug>/podcasts"
#: aircox/urls.py:102
msgid "programs/<slug:parent_slug>/episodes"
msgstr "emissions/<slug:parent_slug>/episodes"
#: aircox/urls.py:103
msgid "programs/<slug:parent_slug>/diffusions"
msgstr "emissions/<slug:parent_slug>/diffusions"
#: aircox/urls.py:105
msgid "programs/<slug:parent_slug>/publications"
msgstr "emissions/<slug:parent_slug>/publications"
#: aircox/urls.py:110 #: aircox/urls.py:110
msgid "programs/<slug:parent_slug>/podcasts/" msgid "programs/episodes/"
msgstr "emissions/<slug:parent_slug>/episodes/" msgstr "emissions/episodes/"
#: aircox/urls.py:111 #: aircox/urls.py:111
msgid "programs/<slug:parent_slug>/episodes/" msgid "programs/episodes/c/<slug:category_slug>"
msgstr "emissions/<slug:parent_slug>/episodes/" msgstr "emissions/episodes/c/<slug:category_slug>"
#: aircox/urls.py:112 #: aircox/urls.py:113
msgid "programs/<slug:parent_slug>/diffusions/" msgid "programs/episodes/<slug:slug>"
msgstr "emissions/<slug:parent_slug>/diffusions/" msgstr "emissions/episodes/<slug:slug>"
#: aircox/urls.py:119 #: aircox/urls.py:117
msgid "programs/<slug:parent_slug>/publications" msgid "podcasts/"
msgstr "emissions/<slug:parent_slug>/publications/" msgstr "podcasts/"
#: aircox/views/page.py:69 #: aircox/urls.py:118
msgid "podcasts/c/<slug:category_slug>/"
msgstr "podcasts/c/<slug:category_slug>/"
#: aircox/views/page.py:75
#, python-brace-format #, python-brace-format
msgid "{model}" msgid "{model}"
msgstr "{model}" msgstr "{model}"
#: aircox/views/page.py:192 #: aircox/views/page.py:180
msgid "comments are not allowed" msgid "comments are not allowed"
msgstr "les commentaires ne sont pas autorisés" msgstr "les commentaires ne sont pas autorisés"
#~ msgid "Latest news"
#~ msgstr "Dernières nouvelles"
#~ msgid "Show all news"
#~ msgstr "Afficher toutes les nouvelles"
#~ msgid "More news"
#~ msgstr "Plus de nouvelles"
#, python-format
#~ msgid "That happened on %(station)s"
#~ msgstr "C'est passé sur %(station)s"
#~ msgid "Diffusions page" #~ msgid "Diffusions page"
#~ msgstr "Grille horaire" #~ msgstr "Grille horaire"

View File

@ -0,0 +1,42 @@
# Generated by Django 4.2.1 on 2024-02-01 18:12
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
("aircox", "0018_alter_staticpage_attach_to"),
]
operations = [
migrations.AddField(
model_name="station",
name="music_stream_title",
field=models.CharField(
default="Music stream",
max_length=64,
verbose_name="Music stream's title",
),
),
migrations.AlterField(
model_name="staticpage",
name="attach_to",
field=models.CharField(
blank=True,
choices=[
("", "None"),
("home", "Home Page"),
("timetable-list", "Timetable"),
("program-list", "Programs list"),
("episode-list", "Episodes list"),
("article-list", "Articles list"),
("page-list", "Publications list"),
("podcast-list", "Podcasts list"),
],
help_text="display this page content to related element",
max_length=32,
null=True,
verbose_name="attach to",
),
),
]

View File

@ -67,7 +67,7 @@ class Station(models.Model):
max_length=2048, max_length=2048,
null=True, null=True,
blank=True, blank=True,
help_text=_("Audio streams urls used by station's player. One url " "a line."), help_text=_("Audio streams urls used by station's player. One url a line."),
) )
default_cover = FilerImageField( default_cover = FilerImageField(
on_delete=models.SET_NULL, on_delete=models.SET_NULL,
@ -76,6 +76,11 @@ class Station(models.Model):
blank=True, blank=True,
related_name="+", related_name="+",
) )
music_stream_title = models.CharField(
_("Music stream's title"),
max_length=64,
default=_("Music stream"),
)
objects = StationQuerySet.as_manager() objects = StationQuerySet.as_manager()

View File

@ -170,13 +170,14 @@
} }
.preview-cover { .preview-cover {
background-color: var(--preview-bg); background: var(--preview-bg);
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
height: var(--cover-h); height: var(--cover-h);
max-width: calc(var(--cover-w) * 1.5); max-width: calc(var(--cover-w) * 1.5);
min-width: var(--cover-w); min-width: var(--cover-w);
overflow: hidden; overflow: hidden;
border: 1px #c4c4c4 solid;
} }
.preview-cover img { .preview-cover img {
height: var(--cover-h); height: var(--cover-h);
@ -240,24 +241,20 @@
text-align: right; text-align: right;
min-width: 9rem; min-width: 9rem;
} }
.list-item .media {
flex-grow: 1;
}
.list-item .media-content { .list-item .media-content {
display: flex;
flex-direction: column;
height: 100%; height: 100%;
margin-bottom: unset; margin-bottom: unset;
} }
.list-item .media-content .content {
flex-grow: 1;
}
.list-item:not(.no-cover) .list-item .media-content { .list-item:not(.no-cover) .list-item .media-content {
min-height: var(--preview-cover-small-size); min-height: var(--preview-cover-small-size);
} }
.list-item .actions { .list-item .actions {
text-align: right; text-align: right;
} }
.list-item:not(.wide) .media {
padding: 0.6rem;
border: 1px solid var(--break-color) !important;
}
@media screen and (max-width: 400px) { @media screen and (max-width: 400px) {
.list-item .headings { .list-item .headings {
@ -313,7 +310,6 @@
} }
.preview-card .card-content figure { .preview-card .card-content figure {
box-shadow: 0em 0em 1em rgba(0, 0, 0, 0.2); box-shadow: 0em 0em 1em rgba(0, 0, 0, 0.2);
border: 1px #c4c4c4 solid;
height: var(--cover-h); height: var(--cover-h);
width: var(--cover-w); width: var(--cover-w);
} }

View File

@ -6850,10 +6850,24 @@ a.tag:hover {
margin-top: auto !important; margin-top: auto !important;
} }
.flex-row {
display: flex;
flex-direction: row;
}
.flex-column {
display: flex;
flex-direction: column;
}
.flex-grow-0 { .flex-grow-0 {
flex-grow: 0 !important; flex-grow: 0 !important;
} }
.flex-grow-1 {
flex-grow: 1 !important;
}
.float-right { .float-right {
float: right; float: right;
} }
@ -6973,7 +6987,7 @@ input.half-field:not(:active):not(:hover) {
--body-bg: #fff; --body-bg: #fff;
--text-color: black; --text-color: black;
--text-color-light: #555; --text-color-light: #555;
--break-color: rgb(245, 245, 245); --break-color: rgb(225, 225, 225);
--main-color: #EFCA08; --main-color: #EFCA08;
--main-color-light: #F4da51; --main-color-light: #F4da51;
--main-color-dark: #F49F0A; --main-color-dark: #F49F0A;

View File

@ -170,13 +170,14 @@
} }
.preview-cover { .preview-cover {
background-color: var(--preview-bg); background: var(--preview-bg);
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
height: var(--cover-h); height: var(--cover-h);
max-width: calc(var(--cover-w) * 1.5); max-width: calc(var(--cover-w) * 1.5);
min-width: var(--cover-w); min-width: var(--cover-w);
overflow: hidden; overflow: hidden;
border: 1px #c4c4c4 solid;
} }
.preview-cover img { .preview-cover img {
height: var(--cover-h); height: var(--cover-h);
@ -240,24 +241,20 @@
text-align: right; text-align: right;
min-width: 9rem; min-width: 9rem;
} }
.list-item .media {
flex-grow: 1;
}
.list-item .media-content { .list-item .media-content {
display: flex;
flex-direction: column;
height: 100%; height: 100%;
margin-bottom: unset; margin-bottom: unset;
} }
.list-item .media-content .content {
flex-grow: 1;
}
.list-item:not(.no-cover) .list-item .media-content { .list-item:not(.no-cover) .list-item .media-content {
min-height: var(--preview-cover-small-size); min-height: var(--preview-cover-small-size);
} }
.list-item .actions { .list-item .actions {
text-align: right; text-align: right;
} }
.list-item:not(.wide) .media {
padding: 0.6rem;
border: 1px solid var(--break-color) !important;
}
@media screen and (max-width: 400px) { @media screen and (max-width: 400px) {
.list-item .headings { .list-item .headings {
@ -313,7 +310,6 @@
} }
.preview-card .card-content figure { .preview-card .card-content figure {
box-shadow: 0em 0em 1em rgba(0, 0, 0, 0.2); box-shadow: 0em 0em 1em rgba(0, 0, 0, 0.2);
border: 1px #c4c4c4 solid;
height: var(--cover-h); height: var(--cover-h);
width: var(--cover-w); width: var(--cover-w);
} }
@ -7435,17 +7431,18 @@ a.tag:hover {
.actions.no-label label { .actions.no-label label {
display: none; display: none;
} }
.actions button, .actions .action { .actions button, .actions .action, .actions a {
justify-content: center; justify-content: center;
min-width: 2rem; min-width: 2rem;
padding: 0.4rem;
} }
.actions button .not-selected, .actions .action .not-selected { .actions button .not-selected, .actions .action .not-selected, .actions a .not-selected {
opacity: 0.6; opacity: 0.6;
} }
.actions button .icon, .actions .action .icon { .actions button .icon, .actions .action .icon, .actions a .icon {
margin: 0em !important; margin: 0em !important;
} }
.actions button label, .actions .action label { .actions button label, .actions .action label, .actions a label {
margin-left: 0.4rem; margin-left: 0.4rem;
} }
@ -7710,15 +7707,11 @@ nav li a, nav li .button {
margin-right: 0.4rem; margin-right: 0.4rem;
color: var(--secondary-color-dark); color: var(--secondary-color-dark);
} }
.list-item:nth-child(3n):not(.wide) .media, .list-item.logs:nth-child(3n):not(.wide) { .list-item:nth-child(3n):not(.wide) .media {
padding: 0.6rem; border-color: var(--main-color-dark) !important;
border-radius: 0.4rem;
border: 1px solid var(--main-color-dark) !important;
} }
.list-item:nth-child(3n+1):not(.wide) .media, .list-item.logs:nth-child(3n+1):not(.wide) { .list-item:nth-child(3n+1):not(.wide) .media {
padding: 0.6rem; border-color: var(--secondary-color-dark) !important;
border-radius: 0.4rem;
border: 1px solid var(--secondary-color-dark) !important;
} }
body { body {

View File

@ -22,8 +22,8 @@
style="background-image: url({{ object.cover.url }})"> style="background-image: url({{ object.cover.url }})">
</a> </a>
{% endif %} {% endif %}
<div class="media-content"> <div class="media-content flex-column">
<section class="content"> <section class="content flex-grow-1">
{% block content %} {% block content %}
{% if content and with_content %} {% if content and with_content %}
{% autoescape off %} {% autoescape off %}

View File

@ -14,8 +14,16 @@ Context:
{% elif object|is_log %} {% elif object|is_log %}
{% include "./track_item.html" with object=object.track log=object timetable=True %} {% include "./track_item.html" with object=object.track log=object timetable=True %}
{% else %} {% else %}
<div class="list-item logs"> <div class="preview list-item logs">
<div class="content"> <header class="headings">
<span class="heading title">
<span class="icon pr-2">
<i class="fas fa-music"></i>
</span>
{{ station.music_stream_title }}
</span>
</header>
<div class="media d-block content">
{% for obj in object %} {% for obj in object %}
{% include "./track_item.html" with object=obj.track log=obj timetable=True %} {% include "./track_item.html" with object=obj.track log=obj timetable=True %}
{% endfor %} {% endfor %}

View File

@ -33,7 +33,11 @@
{{ block.super }} {{ block.super }}
{{ object.display_headline }} {{ object.display_headline }}
{% endif %} {% endif %}
{% if url %} {% endblock %}
{% block actions %}
{% if url and "card" not in widget_template %}
<a href="{{ url }}" class="ml-2">{% translate "Show" %}</a> <a href="{{ url }}" class="ml-2">{% translate "Show" %}</a>
{% endif %} {% endif %}
{{ block.super }}
{% endblock %} {% endblock %}

View File

@ -93,7 +93,7 @@ urls = [
path(_("programs/"), views.ProgramListView.as_view(), name="program-list"), path(_("programs/"), views.ProgramListView.as_view(), name="program-list"),
path(_("programs/c/<slug:category_slug>/"), views.ProgramListView.as_view(), name="program-list"), path(_("programs/c/<slug:category_slug>/"), views.ProgramListView.as_view(), name="program-list"),
path( path(
_("programs/<slug:slug>/"), _("programs/<slug:slug>"),
views.ProgramDetailView.as_view(), views.ProgramDetailView.as_view(),
name="program-detail", name="program-detail",
), ),
@ -110,7 +110,7 @@ urls = [
path(_("programs/episodes/"), views.EpisodeListView.as_view(), name="episode-list"), path(_("programs/episodes/"), views.EpisodeListView.as_view(), name="episode-list"),
path(_("programs/episodes/c/<slug:category_slug>"), views.EpisodeListView.as_view(), name="episode-list"), path(_("programs/episodes/c/<slug:category_slug>"), views.EpisodeListView.as_view(), name="episode-list"),
path( path(
_("programs/episodes/<slug:slug>/"), _("programs/episodes/<slug:slug>"),
views.EpisodeDetailView.as_view(), views.EpisodeDetailView.as_view(),
name="episode-detail", name="episode-detail",
), ),

View File

@ -16,7 +16,7 @@ input.half-field:not(:active):not(:hover) {
--body-bg: #fff; --body-bg: #fff;
--text-color: black; --text-color: black;
--text-color-light: #555; --text-color-light: #555;
--break-color: rgb(245, 245, 245); --break-color: rgb(225, 225, 225);
--main-color: #EFCA08; --main-color: #EFCA08;
--main-color-light: #F4da51; --main-color-light: #F4da51;

View File

@ -266,13 +266,14 @@
.preview-cover { .preview-cover {
background-color: var(--preview-bg); background: var(--preview-bg);
background-size: cover; background-size: cover;
background-repeat: no-repeat; background-repeat: no-repeat;
height: var(--cover-h); height: var(--cover-h);
max-width: calc( var(--cover-w) * 1.5 ); max-width: calc( var(--cover-w) * 1.5 );
min-width: var(--cover-w); min-width: var(--cover-w);
overflow: hidden; overflow: hidden;
border: 1px #c4c4c4 solid;
img { img {
height: var(--cover-h); height: var(--cover-h);
@ -350,29 +351,24 @@
min-width: 9rem; min-width: 9rem;
} }
.media {
flex-grow: 1;
}
.media-content { .media-content {
display: flex;
flex-direction: column;
height: 100%; height: 100%;
margin-bottom: unset; margin-bottom: unset;
.content {
flex-grow: 1;
}
.list-item:not(.no-cover) & { .list-item:not(.no-cover) & {
min-height: var(--preview-cover-small-size); min-height: var(--preview-cover-small-size);
} }
} }
.actions { .actions {
text-align: right; text-align: right;
} }
&:not(.wide) .media {
padding: v.$mp-3;
// border-radius: v.$mp-2;
border: 1px solid var(--break-color) !important;
}
} }
@media screen and (max-width: v.$screen-very-small) { @media screen and (max-width: v.$screen-very-small) {
@ -448,7 +444,6 @@
figure { figure {
box-shadow: 0em 0em 1em rgba(0, 0, 0, 0.2); box-shadow: 0em 0em 1em rgba(0, 0, 0, 0.2);
border: 1px #c4c4c4 solid;
height: var(--cover-h); height: var(--cover-h);
width: var(--cover-w); width: var(--cover-w);
} }

View File

@ -13,7 +13,11 @@
.push-right, .flex-push-right { margin-left: auto !important; } .push-right, .flex-push-right { margin-left: auto !important; }
.push-bottom { margin-top: auto !important; } .push-bottom { margin-top: auto !important; }
.flex-row { display: flex; flex-direction: row }
.flex-column { display: flex; flex-direction: column }
.flex-grow-0 { flex-grow: 0 !important; } .flex-grow-0 { flex-grow: 0 !important; }
.flex-grow-1 { flex-grow: 1 !important; }
.float-right { float: right } .float-right { float: right }
.float-left { float: left } .float-left { float: left }

View File

@ -81,9 +81,10 @@
display: none; display: none;
} }
button, .action { button, .action, a {
justify-content: center; justify-content: center;
min-width: 2rem; min-width: 2rem;
padding: v.$mp-2;
.not-selected { opacity: 0.6; } .not-selected { opacity: 0.6; }
.icon { margin: 0em !important; } .icon { margin: 0em !important; }
@ -423,19 +424,13 @@ nav li {
} }
&:nth-child(3n):not(.wide) .media, &:nth-child(3n):not(.wide) .media,
&.logs:nth-child(3n):not(.wide)
{ {
padding: v.$mp-3; border-color: var(--main-color-dark) !important;
border-radius: v.$mp-2;
border: 1px solid var(--main-color-dark) !important;
} }
&:nth-child(3n+1):not(.wide) .media, &:nth-child(3n+1):not(.wide) .media,
&.logs:nth-child(3n+1):not(.wide)
{ {
padding: v.$mp-3; border-color: var(--secondary-color-dark) !important;
border-radius: v.$mp-2;
border: 1px solid var(--secondary-color-dark) !important;
} }
} }