work on theme and translations

This commit is contained in:
bkfox 2017-12-14 15:56:40 +01:00
parent 01325a258a
commit 9ad47b795a
11 changed files with 738 additions and 794 deletions

View File

@ -1,64 +1,68 @@
# SOME DESCRIPTIVE TITLE. # French translation of Aircox
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # Copyright (C) Aarys
# This file is distributed under the same license as the PACKAGE package. # Copyright (C) Bkfox
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. # This file is distributed under the same license as the Aircox package.
# Aarys, 2016.
# #
#, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: Aircox 0.1\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-05-17 20:54+0200\n" "POT-Creation-Date: 2017-12-14 15:52+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: 2016-10-10 16:00+02\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Aarys\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: Aircox's translators team\n"
"Language: \n" "Language: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: admin.py:82 models.py:728 #: aircox/admin.py:81 aircox/models.py:737
msgid "Schedule" msgid "Schedule"
msgstr "Horaire" msgstr "Horaire"
#: admin.py:111 models.py:490 #: aircox/admin.py:110
msgid "start"
msgstr ""
#: aircox/admin.py:114 aircox/models.py:452 aircox/models.py:1475
msgid "end" msgid "end"
msgstr "fin" msgstr "fin"
#: admin.py:153 #: aircox/admin.py:156
msgid "Program" msgid "Program"
msgstr "Programme" msgstr "Programme"
#: admin.py:157 #: aircox/admin.py:160
msgid "Day" msgid "Day"
msgstr "Jour" msgstr "Jour"
#: admin.py:161 #: aircox/admin.py:164
msgid "Rerun" msgid "Rerun"
msgstr "Rediffusion" msgstr "Rediffusion"
#: models.py:84 #: aircox/models.py:83
msgid "name" msgid "name"
msgstr "nom" msgstr "nom"
#: models.py:116 #: aircox/models.py:115
msgid "title" msgid "title"
msgstr "titre" msgstr "titre"
#: models.py:120 #: aircox/models.py:119
msgid "artist" msgid "artist"
msgstr "artiste" msgstr "artiste"
#: models.py:124 #: aircox/models.py:123
msgid "tags" msgid "tags"
msgstr "tags" msgstr "tags"
#: models.py:128 #: aircox/models.py:127
msgid "information" msgid "information"
msgstr "information" msgstr "information"
#: models.py:131 #: aircox/models.py:130
msgid "" msgid ""
"additional informations about this track, such as the version, if is it a " "additional informations about this track, such as the version, if is it a "
"remix, features, etc." "remix, features, etc."
@ -66,378 +70,362 @@ msgstr ""
"informations additionnelles à propos de ce morceau, telles que la version, " "informations additionnelles à propos de ce morceau, telles que la version, "
"s'ils'agit d'un remix, les fonctionnalités, etc" "s'ils'agit d'un remix, les fonctionnalités, etc"
#: models.py:136 #: aircox/models.py:135
msgid "position in the playlist" msgid "position in the playlist"
msgstr "position dans la playlist" msgstr "position dans la playlist"
#: models.py:139 #: aircox/models.py:138
msgid "in seconds" msgid "in seconds"
msgstr "en secondes" msgstr "en secondes"
#: models.py:141 #: aircox/models.py:140
msgid "position in the playlist is expressed in seconds" msgid "position in the playlist is expressed in seconds"
msgstr "position dans la playlist exprimée en secondes" msgstr "position dans la playlist exprimée en secondes"
#: models.py:148 templates/aircox/controllers/stats.html:59 #: aircox/models.py:147 aircox/models.py:1501
#: aircox/templates/aircox/controllers/stats.html:58
msgid "Track" msgid "Track"
msgstr "Morceau" msgstr "Morceau"
#: models.py:149 #: aircox/models.py:148
msgid "Tracks" msgid "Tracks"
msgstr "Morceaux" msgstr "Morceaux"
#: models.py:165 #: aircox/models.py:163
msgid "path" msgid "path"
msgstr "chemin" msgstr "chemin"
#: models.py:166 #: aircox/models.py:164
msgid "path to the working directory" msgid "path to the working directory"
msgstr "chemin vers le repertoire courant" msgstr "chemin vers le repertoire courant"
#: models.py:171 #: aircox/models.py:169
#, fuzzy #, fuzzy
#| msgid "station" #| msgid "station"
msgid "default station" msgid "default station"
msgstr "station" msgstr "station par défaut"
#: models.py:173 #: aircox/models.py:171
msgid "if checked, this station is used as the main one" msgid "if checked, this station is used as the main one"
msgstr "" msgstr "si coché, cette station est utilisée comme station principale"
#: models.py:370 models.py:1181 models.py:1318 #: aircox/models.py:332 aircox/models.py:1222 aircox/models.py:1457
msgid "station" msgid "station"
msgstr "station" msgstr "station"
#: models.py:373 models.py:1193 #: aircox/models.py:335 aircox/models.py:1234
msgid "active" msgid "active"
msgstr "actif" msgstr "actif"
#: models.py:375 #: aircox/models.py:337
msgid "if not checked this program is no longer active" msgid "if not checked this program is no longer active"
msgstr "si selectionné, ce programme n'est plus actif" msgstr "si selectionné, ce programme n'est plus actif"
#: models.py:378 #: aircox/models.py:340
msgid "syncronise" msgid "syncronise"
msgstr "synchroniser" msgstr "synchroniser"
#: models.py:380 #: aircox/models.py:342
msgid "update later diffusions according to schedule changes" msgid "update later diffusions according to schedule changes"
msgstr "" msgstr ""
"mettre à jour les diffusions suivantes selon les changements de l'horaire" "mettre à jour les diffusions suivantes selon les changements de l'horaire"
#: models.py:476 models.py:521 #: aircox/models.py:438 aircox/models.py:483
msgid "related program" msgid "related program"
msgstr "programme apparenté" msgstr "programme apparenté"
#: models.py:479 #: aircox/models.py:441
msgid "delay" msgid "delay"
msgstr "délai" msgstr "délai"
#: models.py:481 #: aircox/models.py:443
msgid "minimal delay between two sound plays" msgid "minimal delay between two sound plays"
msgstr "délai minimum entre deux sons" msgstr "délai minimum entre deux sons"
#: models.py:484 #: aircox/models.py:446
msgid "begin" msgid "begin"
msgstr "début" msgstr "début"
#: models.py:486 models.py:492 #: aircox/models.py:448 aircox/models.py:454
msgid "used to define a time range this stream isplayed" msgid "used to define a time range this stream isplayed"
msgstr "" msgstr ""
"utilisé pour définir un intervalle de temps pendant lequel ce stream est joué" "utilisé pour définir un intervalle de temps pendant lequel ce stream est joué"
#: models.py:524 models.py:1330 #: aircox/models.py:486 aircox/models.py:1469
msgid "date" msgid "date"
msgstr "date" msgstr "date"
#: models.py:525 #: aircox/models.py:487
#, fuzzy
#| msgid "start of the diffusion"
msgid "date of the first diffusion" msgid "date of the first diffusion"
msgstr "début de la diffusion" msgstr "date de la première diffusion"
#: models.py:528 models.py:995 #: aircox/models.py:490
msgid "timezone"
msgstr "zone horaire"
#: aircox/models.py:492
msgid "timezone used for the date"
msgstr "zone horaire utilisée pour la date"
#: aircox/models.py:495 aircox/models.py:1036
msgid "duration" msgid "duration"
msgstr "durée" msgstr "durée"
#: models.py:529 #: aircox/models.py:496
msgid "regular duration" msgid "regular duration"
msgstr "durée normale" msgstr "durée normale"
#: models.py:532 #: aircox/models.py:499
msgid "frequency" msgid "frequency"
msgstr "fréquence" msgstr "fréquence"
#: models.py:535 #: aircox/models.py:502
msgid "ponctual" msgid "ponctual"
msgstr "ponctuel" msgstr "ponctuel"
#: models.py:536 #: aircox/models.py:503
msgid "first week of the month" msgid "first week of the month"
msgstr "première semaine du mois" msgstr "première semaine du mois"
#: models.py:537 #: aircox/models.py:504
msgid "second week of the month" msgid "second week of the month"
msgstr "deuxième semaine du mois" msgstr "deuxième semaine du mois"
#: models.py:538 #: aircox/models.py:505
msgid "third week of the month" msgid "third week of the month"
msgstr "troisième semaine du mois" msgstr "troisième semaine du mois"
#: models.py:539 #: aircox/models.py:506
msgid "fourth week of the month" msgid "fourth week of the month"
msgstr "quatrième semaine du mois" msgstr "quatrième semaine du mois"
#: models.py:540 #: aircox/models.py:507
msgid "last week of the month" msgid "last week of the month"
msgstr "dernière semaine du mois" msgstr "dernière semaine du mois"
#: models.py:541 #: aircox/models.py:508
msgid "first and third weeks of the month" msgid "first and third weeks of the month"
msgstr "première et troisième semaines du mois" msgstr "première et troisième semaines du mois"
#: models.py:542 #: aircox/models.py:509
msgid "second and fourth weeks of the month" msgid "second and fourth weeks of the month"
msgstr "deuxième et quatrième semaines du mois" msgstr "deuxième et quatrième semaines du mois"
#: models.py:543 #: aircox/models.py:510
msgid "every week" msgid "every week"
msgstr "toutes les semaines" msgstr "toutes les semaines"
#: models.py:544 #: aircox/models.py:511
msgid "one week on two" msgid "one week on two"
msgstr "une semaine sur deux" msgstr "une semaine sur deux"
#: models.py:550 #: aircox/models.py:517
msgid "initial schedule" msgid "initial schedule"
msgstr "horaire initial" msgstr "horaire initial"
#: models.py:729 #: aircox/models.py:738
msgid "Schedules" msgid "Schedules"
msgstr "Horaires" msgstr "Horaires"
#: models.py:826 models.py:965 #: aircox/models.py:832 aircox/models.py:1004
msgid "program" msgid "program"
msgstr "programme" msgstr "programme"
#: models.py:830 models.py:976 models.py:1188 models.py:1312 #: aircox/models.py:836 aircox/models.py:1016 aircox/models.py:1229
#: aircox/models.py:1451
msgid "type" msgid "type"
msgstr "type" msgstr "type"
#: models.py:835 #: aircox/models.py:841
msgid "initial diffusion" msgid "initial diffusion"
msgstr "diffusion initiale" msgstr "diffusion initiale"
#: models.py:837 #: aircox/models.py:844
msgid "the diffusion is a rerun of this one" msgid "the diffusion is a rerun of this one"
msgstr "la diffusion est une rediffusion de celle-ci" msgstr "la diffusion est une rediffusion de celle-ci"
#: models.py:847 models.py:849 #: aircox/models.py:855 aircox/models.py:857
msgid "conflicts" msgid "conflicts"
msgstr "" msgstr ""
#: models.py:852 #: aircox/models.py:860
msgid "start of the diffusion" msgid "start of the diffusion"
msgstr "début de la diffusion" msgstr "début de la diffusion"
#: models.py:853 #: aircox/models.py:861
msgid "end of the diffusion" msgid "end of the diffusion"
msgstr "fin de la diffusion" msgstr "fin de la diffusion"
#: models.py:944 views.py:198 #: aircox/models.py:983 aircox/models.py:1487 aircox/views.py:220
msgid "Diffusion" msgid "Diffusion"
msgstr "Diffusion" msgstr "Diffusion"
#: models.py:945 templates/aircox/controllers/monitor.html:151 #: aircox/models.py:984 aircox/templates/aircox/controllers/monitor.html:151
msgid "Diffusions" msgid "Diffusions"
msgstr "Diffusions" msgstr "Diffusions"
#: models.py:948 #: aircox/models.py:987
msgid "edit the diffusion's planification" msgid "edit the diffusion's planification"
msgstr "éditer la planification de la diffusion" msgstr "éditer la planification de la diffusion"
#: models.py:967 #: aircox/models.py:1006
msgid "program related to it" msgid "program related to it"
msgstr "programme apparenté à celui-ci" msgstr "programme apparenté à celui-ci"
#: models.py:971 #: aircox/models.py:1010
msgid "diffusion" msgid "diffusion"
msgstr "diffusion" msgstr "diffusion"
#: models.py:973 #: aircox/models.py:1013
msgid "initial diffusion related it" msgid "initial diffusion related it"
msgstr "diffusion initiale apparentée" msgstr "diffusion initiale apparentée"
#: models.py:981 #: aircox/models.py:1021
msgid "file" msgid "file"
msgstr "fichier" msgstr "fichier"
#: models.py:990 #: aircox/models.py:1031
msgid "embed HTML code" msgid "embed HTML code"
msgstr "code HTML intégré" msgstr "code HTML intégré"
#: models.py:992 #: aircox/models.py:1033
msgid "HTML code used to embed a sound from external plateform" msgid "HTML code used to embed a sound from external plateform"
msgstr "" msgstr ""
"code HTML utilisé pour intégrer un son depuis une plateforme extérieure" "code HTML utilisé pour intégrer un son depuis une plateforme extérieure"
#: models.py:997 #: aircox/models.py:1038
msgid "duration of the sound" msgid "duration of the sound"
msgstr "durée du son" msgstr "durée du son"
#: models.py:1000 #: aircox/models.py:1041
msgid "modification time" msgid "modification time"
msgstr "temps de la modification" msgstr "temps de la modification"
#: models.py:1002 #: aircox/models.py:1043
msgid "last modification date and time" msgid "last modification date and time"
msgstr "date et heure de la dernière modification" msgstr "date et heure de la dernière modification"
#: models.py:1005 #: aircox/models.py:1046
msgid "good quality" msgid "good quality"
msgstr "bonne qualité" msgstr "bonne qualité"
#: models.py:1006 #: aircox/models.py:1047
msgid "sound's quality is okay" msgid "sound's quality is okay"
msgstr "la qualité du son est okay" msgstr "la qualité du son est okay"
#: models.py:1010 #: aircox/models.py:1051
msgid "public" msgid "public"
msgstr "public" msgstr "public"
#: models.py:1012 #: aircox/models.py:1053
msgid "the sound is accessible to the public" msgid "the sound is accessible to the public"
msgstr "ce son est accessible au public" msgstr "ce son est accessible au public"
#: models.py:1072 #: aircox/models.py:1113
msgid "unknown" msgid "unknown"
msgstr "" msgstr ""
#: models.py:1148 #: aircox/models.py:1189 aircox/models.py:1494
msgid "Sound" msgid "Sound"
msgstr "Son" msgstr "Son"
#: models.py:1149 #: aircox/models.py:1190
msgid "Sounds" msgid "Sounds"
msgstr "Sons" msgstr "Sons"
#: models.py:1184 #: aircox/models.py:1225
#, fuzzy
#| msgid "duration"
msgid "direction" msgid "direction"
msgstr "durée" msgstr "direction"
#: models.py:1195 #: aircox/models.py:1236
#, fuzzy
#| msgid "this output is active"
msgid "this port is active" msgid "this port is active"
msgstr "cette sortie est active" msgstr "ce port est actif"
#: models.py:1198 #: aircox/models.py:1239
#, fuzzy
#| msgid "output settings"
msgid "port settings" msgid "port settings"
msgstr "paramètres de sortie" msgstr "paramètres du port"
#: models.py:1199 #: aircox/models.py:1240
#, fuzzy
#| msgid ""
#| "list of comma separated params available; this is put in the output "
#| "config as raw code; plugin related"
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"
msgstr "" msgstr ""
"liste des paramètres disponibles séparés par des virgules; placé dans la " "liste des paramètres disponibles séparés par des virgules; placé dans le "
"configuration de sortieen temps que code brut; plugin apparenté" "fichier de configuration en tant que code brut; relatif au plugin utilisé"
#: models.py:1319 #: aircox/models.py:1458
#, fuzzy
#| msgid "regular duration"
msgid "related station" msgid "related station"
msgstr "durée normale" msgstr "station relative"
#: models.py:1324 #: aircox/models.py:1463
msgid "source" msgid "source"
msgstr "source" msgstr "source"
#: models.py:1326 #: aircox/models.py:1465
msgid "identifier of the source related to this log" msgid "identifier of the source related to this log"
msgstr "" msgstr "identifiant de la source relative à ce log"
#: models.py:1334 #: aircox/models.py:1480
msgid "comment" msgid "comment"
msgstr "commentaire" msgstr "commentaire"
#: templates/aircox/controllers/monitor.html:6 #: aircox/templates/aircox/controllers/monitor.html:6
msgid "Monitoring streamer" #: aircox/templates/aircox/controllers/monitor.html:112
msgstr "" #, fuzzy
#| msgid "Streamer Monitor"
msgid "Streamer monitor"
msgstr "Moniteur de stream"
#: templates/aircox/controllers/monitor.html:112 #: aircox/templates/aircox/controllers/monitor.html:115
msgid "Monitor Streamer"
msgstr ""
#: templates/aircox/controllers/monitor.html:115
msgid "refresh" msgid "refresh"
msgstr "" msgstr "rafraîchir"
#: templates/aircox/controllers/monitor.html:129 #: aircox/templates/aircox/controllers/monitor.html:129
#, fuzzy, python-format #, python-format
#| msgid ""
#| "\n"
#| " %(items_count)s items, with a total of "
#| "%(tracks_count)s tracks\n"
#| " "
msgid "" msgid ""
"\n" "\n"
" Current source: %(current_source)s\n" " Current source: %(current_source)s\n"
" " " "
msgstr "" msgstr ""
"\n" "\n"
" %(items_counts)s items, avec un total de %(tracks_count)s " " Source courante: %(current_source)s\n"
"tracks\n" " "
#: templates/aircox/controllers/monitor.html:136 #: aircox/templates/aircox/controllers/monitor.html:136
#: templates/aircox/controllers/monitor.html:175 #: aircox/templates/aircox/controllers/monitor.html:175
msgid "restart" msgid "restart"
msgstr "" msgstr "redémarrer"
#: templates/aircox/controllers/monitor.html:138 #: aircox/templates/aircox/controllers/monitor.html:138
#: templates/aircox/controllers/monitor.html:177 #: aircox/templates/aircox/controllers/monitor.html:177
msgid "skip" msgid "skip"
msgstr "passer" msgstr "passer"
#: templates/aircox/controllers/monitor.html:143 #: aircox/templates/aircox/controllers/monitor.html:143
#, fuzzy
#| msgid "source"
msgid "Source" msgid "Source"
msgstr "source" msgstr "Source"
#: templates/aircox/controllers/monitor.html:144 #: aircox/templates/aircox/controllers/monitor.html:144
msgid "File" msgid "File"
msgstr "" msgstr "Fichier"
#: templates/aircox/controllers/monitor.html:145 #: aircox/templates/aircox/controllers/monitor.html:145
msgid "Actions*" msgid "Actions*"
msgstr "" msgstr "Actions"
#: templates/aircox/controllers/monitor.html:158 #: aircox/templates/aircox/controllers/monitor.html:158
msgid "current" msgid "current"
msgstr "" msgstr "courant"
#: templates/aircox/controllers/monitor.html:161 #: aircox/templates/aircox/controllers/monitor.html:161
#, fuzzy
#| msgid "diffusion"
msgid "diffusions" msgid "diffusions"
msgstr "diffusion" msgstr "diffusions"
#: templates/aircox/controllers/monitor.html:163 #: aircox/templates/aircox/controllers/monitor.html:163
#, fuzzy
#| msgid "Stream"
msgid "stream" msgid "stream"
msgstr "Stream" msgstr "stream"
#: templates/aircox/controllers/monitor.html:186 #: aircox/templates/aircox/controllers/monitor.html:186
msgid "" msgid ""
"\n" "\n"
" *: Due to some technical issues, it might take up to 30 seconds to " " *: Due to some technical issues, it might take up to 30 seconds to "
@ -445,54 +433,58 @@ msgid ""
" " " "
msgstr "" msgstr ""
#: templates/aircox/controllers/stats.html:9 #: aircox/templates/aircox/controllers/stats.html:9
#: templates/aircox/controllers/stats.html:14 #: aircox/templates/aircox/controllers/stats.html:14
msgid "Statistics of the stations" msgid "Statistics of the stations"
msgstr "Statistiques des stations" msgstr "Statistiques des stations"
#: templates/aircox/controllers/stats.html:19 #: aircox/templates/aircox/controllers/stats.html:18
msgid "Go to this date:"
msgstr "Aller à cette date:"
#: aircox/templates/aircox/controllers/stats.html:19
msgid "day" msgid "day"
msgstr "jour" msgstr "jour"
#: templates/aircox/controllers/stats.html:21 #: aircox/templates/aircox/controllers/stats.html:21
msgid "month" msgid "month"
msgstr "mois" msgstr "mois"
#: templates/aircox/controllers/stats.html:23 #: aircox/templates/aircox/controllers/stats.html:23
msgid "year" msgid "year"
msgstr "année" msgstr "année"
#: templates/aircox/controllers/stats.html:25 #: aircox/templates/aircox/controllers/stats.html:25
msgid "Show" msgid "Show"
msgstr "" msgstr "Montrer"
#: templates/aircox/controllers/stats.html:39 #: aircox/templates/aircox/controllers/stats.html:38
msgid "Date" msgid "Date"
msgstr "Date" msgstr "Date"
#: templates/aircox/controllers/stats.html:40 #: aircox/templates/aircox/controllers/stats.html:39
msgid "Type" msgid "Type"
msgstr "Type" msgstr "Type"
#. Translators "Header for statistics view" #. Translators "Header for statistics view"
#: templates/aircox/controllers/stats.html:42 #: aircox/templates/aircox/controllers/stats.html:41
msgid "Diffusion or sound played" msgid "Diffusion or sound played"
msgstr "Diffusion ou son joué" msgstr "Diffusion ou son joué"
#: templates/aircox/controllers/stats.html:43 #: aircox/templates/aircox/controllers/stats.html:42
msgid "Tags" msgid "Tags"
msgstr "Tags" msgstr "Tags"
#: templates/aircox/controllers/stats.html:68 #: aircox/templates/aircox/controllers/stats.html:67
msgid "Total" msgid "Total"
msgstr "Total" msgstr "Total"
#: templates/aircox/controllers/stats.html:72 #: aircox/templates/aircox/controllers/stats.html:71
#, fuzzy, python-format #, fuzzy, python-format
#| msgid "" #| msgid ""
#| "\n" #| "\n"
#| " %(items_count)s items, with a total of " #| " %(items_count)s items, with a total of %(tracks_count)s "
#| "%(tracks_count)s tracks\n" #| "tracks\n"
#| " " #| " "
msgid "" msgid ""
"\n" "\n"
@ -502,17 +494,9 @@ msgid ""
msgstr "" msgstr ""
"\n" "\n"
" %(items_counts)s items, avec un total de %(tracks_count)s " " %(items_counts)s items, avec un total de %(tracks_count)s "
"tracks\n" "pistes\n"
" "
#: views.py:216 #: aircox/views.py:230
msgid "Stream" msgid "Stream"
msgstr "Stream" msgstr "Stream"
#~ msgid "station on which the event occured"
#~ msgstr "station sur laquelle l'événement a eu lieu"
#~ msgid "source id that make it happen on the station"
#~ msgstr "id de la source qui le fait arriver sur la station"
#~ msgid "update"
#~ msgstr "mettre à jour"

View File

@ -633,7 +633,8 @@ class Schedule(models.Model):
if self.frequency == Schedule.Frequency.ponctual: if self.frequency == Schedule.Frequency.ponctual:
return [] return []
date = utils.date_or_default(date, True).replace(day=1) # set to 12h in order to avoid potential bugs with dst
date = utils.date_or_default(date, True).replace(day=1, hour=12)
freq = self.frequency freq = self.frequency
# last of the month # last of the month

View File

@ -3,7 +3,7 @@
{% load static %} {% load static %}
{% block title %} {% block title %}
{% trans "Monitoring streamer" %} {% trans "Streamer monitor" %}
{% endblock %} {% endblock %}
{% block content %} {% block content %}
@ -109,7 +109,7 @@ Monitor.update(50000);
</script> </script>
<header> <header>
<h1>{% trans "Monitor Streamer" %}</h1> <h1>{% trans "Streamer monitor" %}</h1>
<input type="button" onclick="Monitor.update();" <input type="button" onclick="Monitor.update();"
value="{% trans "refresh" %}"> value="{% trans "refresh" %}">

View File

@ -15,7 +15,7 @@
{# TODO here #} {# TODO here #}
<form action="?" method="GET"> <form action="?" method="GET">
Go to this date: {% trans "Go to this date:" %}
<input name="day" type="number" placeholder="{% trans "day" %}" <input name="day" type="number" placeholder="{% trans "day" %}"
value="{{ statistics.0.date.day }}"></input> value="{{ statistics.0.date.day }}"></input>
<input name="month" type="number" placeholder="{% trans "month" %}" <input name="month" type="number" placeholder="{% trans "month" %}"

File diff suppressed because it is too large Load Diff

View File

@ -1,44 +1,45 @@
/** /**
* Define rules for the default layouts, and some useful classes * Define rules for the default layouts, and some useful classes
*/ */
/** general **/
body { body {
max-width: 92em; background-color: #F2F2F2;
margin: 0em auto; font-family: "Myriad Pro",Calibri,Helvetica,Arial,sans-serif;
padding: 0em;
} }
h1, h2, h3, h4, h5 { h1, h2, h3, h4, h5 {
font-family: "Myriad Pro",Calibri,Helvetica,Arial,sans-serif;
margin: 0.4em 0em; margin: 0.4em 0em;
} }
ul { h1:first-letter, h2:first-letter, h3:first-letter, h4:first-letter {
margin: 0em; text-transform: capitalize;
} }
h1 { font-size: 1.4em; }
h2 { font-size: 1.2em; }
h3 { font-size: 0.9em; }
h4 { font-size: 0.8em; }
/** classes **/ h1 > *, h2 > *, h3 > *, h4 > * { vertical-align: middle; }
.float_right {
float: right;
a {
cursor: pointer;
text-decoration: none;
color: #616161;
} }
.float_left { a:hover { color: #007EDF; }
float: left; a:hover > .small_icon { box-shadow: 0em 0em 0.1em #007EDF; }
}
.small { ul { margin: 0em; }
font-size: 0.8em;
}
.icon {
max-width: 2em;
max-height: 2em;
vertical-align: middle;
}
.small_icon { /**** position & box ****/
max-height: 1.5em; .float_right { float: right; }
vertical-align: middle; .float_left { float: left; }
}
.flex_row { .flex_row {
@ -62,7 +63,48 @@ ul {
} }
/** content: menus **/ .small {
font-size: 0.8em;
}
/**** indicators & info ****/
time, .tags {
font-size: 0.9em;
color: #616161;
}
.info {
font-size: 0.9em;
padding: 0.1em;
color: #007EDF;
}
.error { color: red; }
.warning { color: orange; }
.success { color: green; }
.icon {
max-width: 2em;
max-height: 2em;
vertical-align: middle;
}
.small_icon {
max-height: 1.5em;
vertical-align: middle;
}
/** main layout **/
body > * {
max-width: 92em;
margin: 0em auto;
padding: 0em;
}
.menu { .menu {
padding: 0.4em; padding: 0.4em;
} }
@ -71,35 +113,40 @@ ul {
display: none; display: none;
} }
body > .top *,
body > .header * {
vertical-align: middle;
}
body > .top section, .menu.row section {
body > .header section {
display: inline-block; display: inline-block;
} }
body > .top a, .menu.col > section {
body > .header a { margin-bottom: 1em;
display: inline-block;
margin: 0.2em 1em;
} }
/**** top + header layout ****/
body > .top { body > .top {
position: fixed; position: fixed;
z-index: 10000000; z-index: 10000000;
top: 0; top: 0;
width: calc(100% - 0.8em); left: 0;
max-width: calc(92em - 0.8em); width: 100%;
height: 2.5em; max-width: 100%;
margin: 0em auto; margin: 0em auto;
background-color: white; background-color: white;
box-shadow: 0em 0em 0.2em black; border-bottom: 0.1em #dfdfdf solid;
box-shadow: 0em 0.1em 0.1em rgba(255,255,255,0.7);
box-shadow: 0em 0.1em 0.5em rgba(0,0,0,0.1);
transition: opacity 1.5s; transition: opacity 1.5s;
} }
body > .top > .menu {
max-width: 92em;
height: 2.5em;
margin: 0em auto;
}
body[scrollY] > .top { body[scrollY] > .top {
opacity: 0.1; opacity: 0.1;
transition: opacity 1.5s 1s; transition: opacity 1.5s 1s;
@ -117,6 +164,7 @@ body > .header {
margin-bottom: 1em; margin-bottom: 1em;
} }
/** FIXME: remove this once image slides impled **/
body > .header > div { body > .header > div {
width: 15000%; width: 15000%;
} }
@ -127,29 +175,142 @@ body > .header {
} }
.page_left { margin-right: 2em; }
.page_right { margin-left: 2em; }
.page_left, .page_right { /**** page layout ****/
.page {
display: flex;
}
.page > main {
flex: auto;
overflow: hidden;
margin: 0em 0em;
border-radius: 0.4em;
border: 0.1em #dfdfdf solid;
background-color: rgba(255,255,255,0.9);
box-shadow: inset 0.1em 0.1em 0.2em rgba(255, 255, 255, 0.8);
}
.page > nav {
flex: 1;
width: 20em;
overflow: hidden;
max-width: 16em; max-width: 16em;
} }
.page_left > section, .page > .menu.col:first-child { margin-right: 2em; }
.page_right > section { .page > main + .menu.col { margin-left: 2em; }
margin-bottom: 1em;
/**** page main ****/
main:not(.detail) h1 {
margin: 0em 0em 0.4em 0em;
} }
.page_left .section_link_list a, main .post_content {
.page_right .section_link_list a {
display: block; display: block;
} }
main .post_content section {
display: inline-block;
width: calc(50% - 1em);
vertical-align: top;
}
main.detail {
padding: 0em;
margin: 0em;
}
main > .content {
padding: 1em;
}
main > header {
margin: 0em;
padding: 1em;
position: relative;
}
main > header .foreground {
position: absolute;
left: 0em;
top: 0em;
width: calc(100% - 2em);
padding: 1em;
}
main > header h1 {
width: calc(100% - 2em);
margin: 0em;
margin-bottom: 0.8em;
}
main header .headline {
display: inline-block;
width: calc(60% - 0.8em);
min-height: 1.2em;
font-size: 1.2em;
font-weight: bold;
}
main > header .background {
margin: -1em;
height: 17em;
overflow: hidden;
position: relative;
}
main > header .background img {
position: absolute;
/*! top: -40%; */
/*! left: -40%; */
width: 100%;
min-height: 100%;
filter: blur(20px);
opacity: 0.3;
}
main > header .cover {
right: 0em;
top: 1em;
width: auto;
max-height: calc(100% - 2em);
max-width: calc(40% - 2em);
margin: 1em;
position: absolute;
box-shadow: 0em 0em 4em rgba(0, 0, 0, 0.4);
}
/** sections **/
body section ul { body section ul {
padding: 0em; padding: 0em;
padding-left: 1em; padding-left: 1em;
} }
/**** link list ****/
.menu.row .section_link_list > a {
display: inline-block;
margin: 0.2em 1em;
}
.menu.col .section_link_list > a {
display: block;
}
/** content: menus **/
/** content: list & items **/ /** content: list & items **/
.list { .list {
width: 100%; width: 100%;

View File

@ -16,163 +16,8 @@
* - active: #007EDF * - active: #007EDF
*/ */
/** main **/
body {
background-color: #F2F2F2;
font-family: "Myriad Pro",Calibri,Helvetica,Arial,sans-serif;
padding: 0em;
}
h1, h2, h3 {
font-family: "Myriad Pro",Calibri,Helvetica,Arial,sans-serif;
}
h1:first-letter, h2:first-letter, h3:first-letter {
text-transform: capitalize;
}
h1 { font-size: 1.4em; }
h2 { font-size: 1.2em; }
h3 { font-size: 0.9em; }
h2 * { vertical-align: middle; }
/** info **/
time, .tags {
font-size: 0.9em;
color: #616161;
}
.info {
font-size: 0.9em;
padding: 0.1em;
color: #007EDF;
}
a {
cursor: pointer;
text-decoration: none;
color: #616161;
}
a:hover {
color: #007EDF;
}
a:hover > .small_icon {
box-shadow: 0em 0em 0.1em #007EDF;
}
.error { color: red; }
.warning { color: orange; }
.success { color: green; }
/** page **/
.page > nav {
width: 20em;
overflow: hidden;
}
main {
background-color: rgba(255,255,255,0.9);
margin: 0em 0em;
box-shadow: 0em 0em 0.2em black;
width: 60%;
}
main > .content {
/*! margin: 1em; */
}
main:not(.detail) h1 {
margin: 0em 0em 0.4em 0em;
}
main .post_content {
display: block;
}
main .post_content section {
display: inline-block;
width: calc(50% - 1em);
vertical-align: top;
}
/** detail view **/ /** detail view **/
main.detail {
padding: 0em;
margin: 0em;
}
main > .content {
padding: 1em;
}
main > header {
margin: 0em;
padding: 1em;
position: relative;
}
main > header .foreground {
position: absolute;
left: 0em;
top: 0em;
width: calc(100% - 2em);
padding: 1em;
}
main > header h1 {
width: calc(100% - 2em);
margin: 0em;
margin-bottom: 0.8em;
}
main header .headline {
display: inline-block;
width: calc(60% - 0.8em);
min-height: 1.2em;
font-size: 1.2em;
font-weight: bold;
}
main > header .background {
margin: -1em;
height: 17em;
overflow: hidden;
position: relative;
}
main > header .background img {
position: absolute;
/*! top: -40%; */
/*! left: -40%; */
width: 100%;
min-height: 100%;
filter: blur(20px);
opacity: 0.3;
}
main > header .cover {
right: 0em;
top: 1em;
width: auto;
max-height: calc(100% - 2em);
max-width: calc(40% - 2em);
margin: 1em;
position: absolute;
box-shadow: 0em 0em 4em rgba(0, 0, 0, 0.4);
}
/** player **/ /** player **/
.player[state='playing'] .item[selected] .button > img { .player[state='playing'] .item[selected] .button > img {

View File

@ -34,22 +34,24 @@
</head> </head>
{% spaceless %} {% spaceless %}
<body> <body>
<div class="menu top"> <nav class="top">
<div class="menu row">
{% render_sections position="top" %} {% render_sections position="top" %}
</div> <div>
</nav>
<header class="header"> <header class="header menu row">
<div> <div>
{% render_sections position="header" %} {% render_sections position="header" %}
</div> </div>
</header> </header>
<div class="page flex_row"> <div class="page flex_row">
<nav class="menu page_left flex_item"> <nav class="menu col page_left flex_item">
{% render_sections position="page_left" %} {% render_sections position="page_left" %}
</nav> </nav>
<main class="flex_item {% if not object_list %}detail{% endif %}"> <main class="{% if not object_list %}detail{% endif %}">
{% if messages %} {% if messages %}
<ul class="messages"> <ul class="messages">
{% for message in messages %} {% for message in messages %}
@ -107,7 +109,7 @@
</main> </main>
<nav class="menu page_right flex_item"> <nav class="menu col page_right flex_item">
{% render_sections position="page_right" %} {% render_sections position="page_right" %}
</nav> </nav>
</div> </div>

View File

@ -9,7 +9,7 @@ scripts/launch_in_venv ./manage.py diffusions --update --next-month --mode auto
cd - cd -
# - archiver monitoring for the next month # - archiver monitoring for the next month
scripts/launch_in_venv ./manage.py archiver -a 60 scripts/launch_in_venv ./manage.py archiver -a 90
cd - cd -