Add button to generate a side identifier
This commit is contained in:
parent
6f60de1838
commit
6985e39130
|
@ -40,7 +40,7 @@ def generate_side_identifier(title, authors, subtitle=None):
|
||||||
authors = authors.copy()
|
authors = authors.copy()
|
||||||
|
|
||||||
def sort(author):
|
def sort(author):
|
||||||
return str(-author.note) + author.name.split(" ")[-1] + ".{:05d}".format(author.pk)
|
return "{:042d}".format(-author.note) + author.name.split(" ")[-1] + ".{:042d}".format(author.pk)
|
||||||
|
|
||||||
authors.sort(key=sort)
|
authors.sort(key=sort)
|
||||||
primary_author = authors[0]
|
primary_author = authors[0]
|
||||||
|
@ -76,6 +76,15 @@ class MediaAdminForm(ModelForm):
|
||||||
if isbn_field:
|
if isbn_field:
|
||||||
isbn_field.widget.template_name = "media/isbn_button.html"
|
isbn_field.widget.template_name = "media/isbn_button.html"
|
||||||
isbn_field.widget.attrs.update({'autofocus': 'autofocus'})
|
isbn_field.widget.attrs.update({'autofocus': 'autofocus'})
|
||||||
|
side_identifier_field = self.fields.get('side_identifier')
|
||||||
|
if side_identifier_field and self.instance and self.instance.pk:
|
||||||
|
instance = self.instance
|
||||||
|
title, authors, subtitle = instance.title, instance.authors.all(), None
|
||||||
|
if hasattr(instance, "subtitle"):
|
||||||
|
subtitle = instance.subtitle
|
||||||
|
side_identifier_field.widget.attrs.update(
|
||||||
|
{'data-generated-side-identifier': generate_side_identifier(title, authors, subtitle)})
|
||||||
|
side_identifier_field.widget.template_name = "media/generate_side_identifier.html"
|
||||||
|
|
||||||
def download_data_bedeteque(self, isbn):
|
def download_data_bedeteque(self, isbn):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -3,7 +3,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2020-05-12 17:42+0200\n"
|
"POT-Creation-Date: 2020-10-02 13:02+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -13,19 +13,20 @@ msgstr ""
|
||||||
"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:32 models.py:29 models.py:62
|
#: admin.py:34 admin.py:89 admin.py:100 models.py:29 models.py:65 models.py:130
|
||||||
|
#: models.py:192 models.py:243 models.py:274
|
||||||
msgid "authors"
|
msgid "authors"
|
||||||
msgstr "auteurs"
|
msgstr "auteurs"
|
||||||
|
|
||||||
#: admin.py:42
|
#: admin.py:44
|
||||||
msgid "external url"
|
msgid "external url"
|
||||||
msgstr "URL externe"
|
msgstr "URL externe"
|
||||||
|
|
||||||
#: admin.py:98
|
#: admin.py:127
|
||||||
msgid "Turn back"
|
msgid "Turn back"
|
||||||
msgstr "Rendre"
|
msgstr "Rendre"
|
||||||
|
|
||||||
#: admin.py:101 models.py:135
|
#: admin.py:130 models.py:407
|
||||||
msgid "given back to"
|
msgid "given back to"
|
||||||
msgstr "rendu à"
|
msgstr "rendu à"
|
||||||
|
|
||||||
|
@ -33,11 +34,11 @@ msgstr "rendu à"
|
||||||
msgid "ISBN-10 or ISBN-13"
|
msgid "ISBN-10 or ISBN-13"
|
||||||
msgstr "ISBN-10 ou ISBN-13"
|
msgstr "ISBN-10 ou ISBN-13"
|
||||||
|
|
||||||
#: forms.py:178
|
#: forms.py:244
|
||||||
msgid "This ISBN is not found."
|
msgid "This ISBN is not found."
|
||||||
msgstr "L'ISBN n'a pas été trouvé."
|
msgstr "L'ISBN n'a pas été trouvé."
|
||||||
|
|
||||||
#: models.py:16 models.py:159
|
#: models.py:16 models.py:431
|
||||||
msgid "name"
|
msgid "name"
|
||||||
msgstr "nom"
|
msgstr "nom"
|
||||||
|
|
||||||
|
@ -49,123 +50,220 @@ msgstr "note"
|
||||||
msgid "author"
|
msgid "author"
|
||||||
msgstr "auteur"
|
msgstr "auteur"
|
||||||
|
|
||||||
#: models.py:35 models.py:89
|
#: models.py:35 models.py:100 models.py:162 models.py:345
|
||||||
msgid "ISBN"
|
msgid "ISBN"
|
||||||
msgstr "ISBN"
|
msgstr "ISBN"
|
||||||
|
|
||||||
#: models.py:36 models.py:90
|
#: models.py:36 models.py:101 models.py:163 models.py:346
|
||||||
msgid "You may be able to scan it from a bar code."
|
msgid "You may be able to scan it from a bar code."
|
||||||
msgstr "Peut souvent être scanné à partir du code barre."
|
msgstr "Peut souvent être scanné à partir du code barre."
|
||||||
|
|
||||||
#: models.py:42
|
#: models.py:43 models.py:108 models.py:170 models.py:224 models.py:263
|
||||||
|
#: models.py:294
|
||||||
msgid "title"
|
msgid "title"
|
||||||
msgstr "titre"
|
msgstr "titre"
|
||||||
|
|
||||||
#: models.py:46
|
#: models.py:48 models.py:113 models.py:175
|
||||||
msgid "subtitle"
|
msgid "subtitle"
|
||||||
msgstr "sous-titre"
|
msgstr "sous-titre"
|
||||||
|
|
||||||
#: models.py:52
|
#: models.py:54 models.py:119 models.py:181
|
||||||
msgid "external URL"
|
msgid "external URL"
|
||||||
msgstr "URL externe"
|
msgstr "URL externe"
|
||||||
|
|
||||||
#: models.py:57
|
#: models.py:59 models.py:124 models.py:186 models.py:229 models.py:268
|
||||||
msgid "side identifier"
|
msgid "side identifier"
|
||||||
msgstr "côte"
|
msgstr "côte"
|
||||||
|
|
||||||
#: models.py:65
|
#: models.py:69 models.py:134 models.py:196
|
||||||
msgid "number of pages"
|
msgid "number of pages"
|
||||||
msgstr "nombre de pages"
|
msgstr "nombre de pages"
|
||||||
|
|
||||||
#: models.py:70
|
#: models.py:75 models.py:140 models.py:202
|
||||||
msgid "publish date"
|
msgid "publish date"
|
||||||
msgstr "date de publication"
|
msgstr "date de publication"
|
||||||
|
|
||||||
#: models.py:82
|
#: models.py:81 models.py:146 models.py:208 models.py:247 models.py:278
|
||||||
msgid "medium"
|
#: models.py:329 models.py:363
|
||||||
msgstr "medium"
|
msgid "present"
|
||||||
|
msgstr "présent"
|
||||||
|
|
||||||
#: models.py:83
|
#: models.py:82 models.py:147 models.py:209 models.py:248 models.py:279
|
||||||
msgid "media"
|
#: models.py:330 models.py:364
|
||||||
msgstr "media"
|
msgid "Tell that the medium is present in the Mediatek."
|
||||||
|
msgstr "Indique que le medium est présent à la Mediatek."
|
||||||
|
|
||||||
#: models.py:97
|
#: models.py:93 models.py:355
|
||||||
|
msgid "BD"
|
||||||
|
msgstr "BD"
|
||||||
|
|
||||||
|
#: models.py:94
|
||||||
|
msgid "BDs"
|
||||||
|
msgstr "BDs"
|
||||||
|
|
||||||
|
#: models.py:155
|
||||||
|
msgid "manga"
|
||||||
|
msgstr "manga"
|
||||||
|
|
||||||
|
#: models.py:156
|
||||||
|
msgid "mangas"
|
||||||
|
msgstr "mangas"
|
||||||
|
|
||||||
|
#: models.py:217
|
||||||
|
msgid "roman"
|
||||||
|
msgstr "roman"
|
||||||
|
|
||||||
|
#: models.py:218
|
||||||
|
msgid "romans"
|
||||||
|
msgstr "romans"
|
||||||
|
|
||||||
|
#: models.py:234
|
||||||
|
msgid "rounds per minute"
|
||||||
|
msgstr "tours par minute"
|
||||||
|
|
||||||
|
#: models.py:236
|
||||||
|
msgid "33 RPM"
|
||||||
|
msgstr "33 TPM"
|
||||||
|
|
||||||
|
#: models.py:237
|
||||||
|
msgid "45 RPM"
|
||||||
|
msgstr "45 TPM"
|
||||||
|
|
||||||
|
#: models.py:256
|
||||||
|
msgid "vinyle"
|
||||||
|
msgstr "vinyle"
|
||||||
|
|
||||||
|
#: models.py:257
|
||||||
|
msgid "vinyles"
|
||||||
|
msgstr "vinyle"
|
||||||
|
|
||||||
|
#: models.py:287
|
||||||
|
msgid "CD"
|
||||||
|
msgstr "CD"
|
||||||
|
|
||||||
|
#: models.py:288
|
||||||
|
msgid "CDs"
|
||||||
|
msgstr "CDs"
|
||||||
|
|
||||||
|
#: models.py:299
|
||||||
|
msgid "number"
|
||||||
|
msgstr "nombre"
|
||||||
|
|
||||||
|
#: models.py:303
|
||||||
|
msgid "year"
|
||||||
|
msgstr "année"
|
||||||
|
|
||||||
|
#: models.py:310
|
||||||
|
msgid "month"
|
||||||
|
msgstr "mois"
|
||||||
|
|
||||||
|
#: models.py:317
|
||||||
|
msgid "day"
|
||||||
|
msgstr "jour"
|
||||||
|
|
||||||
|
#: models.py:324
|
||||||
|
msgid "double"
|
||||||
|
msgstr "double"
|
||||||
|
|
||||||
|
#: models.py:338
|
||||||
|
msgid "revue"
|
||||||
|
msgstr "revue"
|
||||||
|
|
||||||
|
#: models.py:339
|
||||||
|
msgid "revues"
|
||||||
|
msgstr "revues"
|
||||||
|
|
||||||
|
#: models.py:353
|
||||||
|
msgid "type"
|
||||||
|
msgstr "type"
|
||||||
|
|
||||||
|
#: models.py:356
|
||||||
|
msgid "Manga"
|
||||||
|
msgstr "Manga"
|
||||||
|
|
||||||
|
#: models.py:357
|
||||||
|
msgid "Roman"
|
||||||
|
msgstr "Roman"
|
||||||
|
|
||||||
|
#: models.py:369
|
||||||
msgid "future medium"
|
msgid "future medium"
|
||||||
msgstr "medium à importer"
|
msgstr "medium à importer"
|
||||||
|
|
||||||
#: models.py:98
|
#: models.py:370
|
||||||
msgid "future media"
|
msgid "future media"
|
||||||
msgstr "medias à importer"
|
msgstr "medias à importer"
|
||||||
|
|
||||||
#: models.py:112
|
#: models.py:384
|
||||||
msgid "borrower"
|
msgid "borrower"
|
||||||
msgstr "emprunteur"
|
msgstr "emprunteur"
|
||||||
|
|
||||||
#: models.py:115
|
#: models.py:387
|
||||||
msgid "borrowed on"
|
msgid "borrowed on"
|
||||||
msgstr "emprunté le"
|
msgstr "emprunté le"
|
||||||
|
|
||||||
#: models.py:120
|
#: models.py:392
|
||||||
msgid "given back on"
|
msgid "given back on"
|
||||||
msgstr "rendu le"
|
msgstr "rendu le"
|
||||||
|
|
||||||
#: models.py:126
|
#: models.py:398
|
||||||
msgid "borrowed with"
|
msgid "borrowed with"
|
||||||
msgstr "emprunté avec"
|
msgstr "emprunté avec"
|
||||||
|
|
||||||
#: models.py:127
|
#: models.py:399
|
||||||
msgid "The keyholder that registered this borrowed item."
|
msgid "The keyholder that registered this borrowed item."
|
||||||
msgstr "Le permanencier qui enregistre cet emprunt."
|
msgstr "Le permanencier qui enregistre cet emprunt."
|
||||||
|
|
||||||
#: models.py:136
|
#: models.py:408
|
||||||
msgid "The keyholder to whom this item was given back."
|
msgid "The keyholder to whom this item was given back."
|
||||||
msgstr "Le permanencier à qui l'emprunt a été rendu."
|
msgstr "Le permanencier à qui l'emprunt a été rendu."
|
||||||
|
|
||||||
#: models.py:143
|
#: models.py:415
|
||||||
msgid "borrowed item"
|
msgid "borrowed item"
|
||||||
msgstr "emprunt"
|
msgstr "emprunt"
|
||||||
|
|
||||||
#: models.py:144
|
#: models.py:416
|
||||||
msgid "borrowed items"
|
msgid "borrowed items"
|
||||||
msgstr "emprunts"
|
msgstr "emprunts"
|
||||||
|
|
||||||
#: models.py:164
|
#: models.py:436
|
||||||
msgid "owner"
|
msgid "owner"
|
||||||
msgstr "propriétaire"
|
msgstr "propriétaire"
|
||||||
|
|
||||||
#: models.py:169
|
#: models.py:441
|
||||||
msgid "duration"
|
msgid "duration"
|
||||||
msgstr "durée"
|
msgstr "durée"
|
||||||
|
|
||||||
#: models.py:173
|
#: models.py:445
|
||||||
msgid "minimum number of players"
|
msgid "minimum number of players"
|
||||||
msgstr "nombre minimum de joueurs"
|
msgstr "nombre minimum de joueurs"
|
||||||
|
|
||||||
#: models.py:177
|
#: models.py:449
|
||||||
msgid "maximum number of players"
|
msgid "maximum number of players"
|
||||||
msgstr "nombre maximum de joueurs"
|
msgstr "nombre maximum de joueurs"
|
||||||
|
|
||||||
#: models.py:183
|
#: models.py:454
|
||||||
msgid "comment"
|
msgid "comment"
|
||||||
msgstr "commentaire"
|
msgstr "commentaire"
|
||||||
|
|
||||||
#: models.py:190
|
#: models.py:461
|
||||||
msgid "game"
|
msgid "game"
|
||||||
msgstr "jeu"
|
msgstr "jeu"
|
||||||
|
|
||||||
#: models.py:191
|
#: models.py:462
|
||||||
msgid "games"
|
msgid "games"
|
||||||
msgstr "jeux"
|
msgstr "jeux"
|
||||||
|
|
||||||
|
#: templates/media/generate_side_identifier.html:3
|
||||||
|
msgid "Generate side identifier"
|
||||||
|
msgstr "Générer la cote"
|
||||||
|
|
||||||
#: templates/media/isbn_button.html:3
|
#: templates/media/isbn_button.html:3
|
||||||
msgid "Fetch data and add another"
|
msgid "Fetch data and add another"
|
||||||
msgstr "Télécharger les données et ajouter un nouveau medium"
|
msgstr "Télécharger les données et ajouter un nouveau medium"
|
||||||
|
|
||||||
#: templates/media/isbn_button.html:4
|
#: templates/media/isbn_button.html:4
|
||||||
#, fuzzy
|
|
||||||
#| msgid "Fetch data"
|
|
||||||
msgid "Fetch only"
|
msgid "Fetch only"
|
||||||
msgstr "Télécharger uniquement les données"
|
msgstr "Télécharger les données seulement"
|
||||||
|
|
||||||
#: validators.py:18
|
#: validators.py:18
|
||||||
msgid "Invalid ISBN: Not a string"
|
msgid "Invalid ISBN: Not a string"
|
||||||
|
@ -179,6 +277,12 @@ msgstr "ISBN invalide : mauvaise longueur"
|
||||||
msgid "Invalid ISBN: Only upper case allowed"
|
msgid "Invalid ISBN: Only upper case allowed"
|
||||||
msgstr "ISBN invalide : seulement les majuscules sont autorisées"
|
msgstr "ISBN invalide : seulement les majuscules sont autorisées"
|
||||||
|
|
||||||
#: views.py:44
|
#: views.py:50
|
||||||
msgid "Welcome to the Mediatek database"
|
msgid "Welcome to the Mediatek database"
|
||||||
msgstr "Bienvenue sur la base de données de la Mediatek"
|
msgstr "Bienvenue sur la base de données de la Mediatek"
|
||||||
|
|
||||||
|
#~ msgid "medium"
|
||||||
|
#~ msgstr "medium"
|
||||||
|
|
||||||
|
#~ msgid "media"
|
||||||
|
#~ msgstr "media"
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
{% load i18n %}
|
||||||
|
{% include "django/forms/widgets/input.html" %}
|
||||||
|
<a href="#" class="button" onclick="document.getElementById('{{ widget.attrs.id }}').value = document.getElementById('{{ widget.attrs.id }}').getAttribute('data-generated-side-identifier')">{% trans "Generate side identifier" %}</a>
|
|
@ -1,4 +1,4 @@
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
{% include "django/forms/widgets/input.html" %}
|
{% include "django/forms/widgets/input.html" %}
|
||||||
<input type="submit" value="{% trans "Fetch data and add another" %}" name="_isbn_addanother">
|
<input type="button" value="{% trans "Fetch data and add another" %}" name="_isbn_addanother" onclick="form.submit()">
|
||||||
<input type="submit" value="{% trans "Fetch only" %}" name="_isbn">
|
<input type="button" value="{% trans "Fetch only" %}" name="_isbn" onclick="form.submit()">
|
|
@ -97,7 +97,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
</form>
|
</form>
|
||||||
<p>
|
<p>
|
||||||
Mediatek 2017-2020 —
|
Mediatek 2017-2020 —
|
||||||
<a href="mailto:club-med@crans.org">Nous contactez</a> —
|
<a href="mailto:club-med@crans.org">Nous contacter</a> —
|
||||||
<a href="{% url "api-root" %}">Explorer l'API</a>
|
<a href="{% url "api-root" %}">Explorer l'API</a>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue