From 1dfad41e3dd7dfa30d7b15f4744c85211daffa54 Mon Sep 17 00:00:00 2001
From: Alexandre Iooss <erdnaxe@crans.org>
Date: Sun, 17 Apr 2022 11:15:16 +0200
Subject: [PATCH 1/3] Add behind the scene section on index

---
 photo21/templates/index.html | 17 ++++++++++++++++-
 photo21/views.py             | 11 +++++++++++
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git a/photo21/templates/index.html b/photo21/templates/index.html
index dd0f63a..276e65a 100644
--- a/photo21/templates/index.html
+++ b/photo21/templates/index.html
@@ -12,7 +12,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
     <p>
         {% blocktranslate trimmed %}
         This website aims to collect the pictures and movies taken in the student
-        life of ENS Paris-Saclay-Saclay or involving its students.
+        life of ENS Paris-Saclay or involving its students.
         {% endblocktranslate %}
     </p>
     <p>
@@ -48,4 +48,19 @@ SPDX-License-Identifier: GPL-3.0-or-later
         </div>
         {% endfor %}
     </div>
+
+    <h3 class="mt-4">{% trans "Behind the scene" %}</h3>
+    <p>
+        {% blocktranslate trimmed %}
+        Because we value your privacy, we do not sell the data on this site,
+        unlike many free online platforms.
+        The dedicated server running this website is kindly hosted by the
+        <a href="https://www.crans.org/">Crans</a> at the ENS Paris-Saclay
+        basement.
+        It is not managed by the Crans. Current active administrators are:
+        {% endblocktranslate %}
+        {% for user in superusers %} <code>{{ user.username }}</code>{% endfor %}.
+        {% trans "They should be contacted at" %}
+        <a href="mailto:photos@crans.org">photos@crans.org</a>.
+    </p>
 {% endblock %}
diff --git a/photo21/views.py b/photo21/views.py
index eec62cd..4b7cb21 100644
--- a/photo21/views.py
+++ b/photo21/views.py
@@ -2,6 +2,7 @@
 # Copyright (C) 2021-2022  Amicale des élèves de l'ENS Paris-Saclay
 # SPDX-License-Identifier: GPL-3.0-or-later
 
+from django.contrib.auth import get_user_model
 from django.contrib.auth.mixins import LoginRequiredMixin
 from django.http import HttpResponse
 from django.views.generic import ListView, View
@@ -21,3 +22,13 @@ class IndexView(LoginRequiredMixin, ListView):
     queryset = Gallery.objects.all()
     paginate_by = 4
     template_name = "index.html"
+
+    def get_context_data(self, **kwargs):
+        context = super().get_context_data(**kwargs)
+
+        # Get superusers
+        User = get_user_model()
+        superusers = User.objects.filter(is_superuser=True)
+        context["superusers"] = superusers
+
+        return context
-- 
GitLab


From ce59f18e4bcd8ab6f8d484dfea0ac11a249599c2 Mon Sep 17 00:00:00 2001
From: Alexandre Iooss <erdnaxe@crans.org>
Date: Sun, 17 Apr 2022 11:15:40 +0200
Subject: [PATCH 2/3] Update translations

---
 photo21/locale/fr/LC_MESSAGES/django.po    | 191 +++++++++--------
 photologue/locale/fr/LC_MESSAGES/django.po | 234 +++++++++++----------
 2 files changed, 226 insertions(+), 199 deletions(-)

diff --git a/photo21/locale/fr/LC_MESSAGES/django.po b/photo21/locale/fr/LC_MESSAGES/django.po
index 587e078..8eb2545 100644
--- a/photo21/locale/fr/LC_MESSAGES/django.po
+++ b/photo21/locale/fr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-30 10:06+0000\n"
+"POT-Creation-Date: 2022-04-17 09:13+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,7 +17,7 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: photo21/forms.py:12
+#: photo21/forms.py:16
 msgid ""
 "Please enter a valid email address ending with `@crans.org` or `@ens-paris-"
 "saclay.fr`."
@@ -25,156 +25,152 @@ msgstr ""
 "Veuillez entrer une adresse email valide finissant par `@crans.org` ou `@ens-"
 "paris-saclay.fr`."
 
-#: photo21/forms.py:23
+#: photo21/forms.py:29
 msgid "Must end with `@crans.org` or `@ens-paris-saclay.fr`."
 msgstr "Doit finir par `@crans.org` ou `@ens-paris-saclay.fr`."
 
-#: photo21/hashers.py:42
+#: photo21/hashers.py:48
 msgid "algorithm"
 msgstr ""
 
-#: photo21/hashers.py:43
+#: photo21/hashers.py:49
 msgid "salt"
 msgstr ""
 
-#: photo21/hashers.py:44
+#: photo21/hashers.py:50
 msgid "hash"
 msgstr ""
 
-#: photo21/settings.py:160
+#: photo21/settings.py:157
 msgid "German"
 msgstr ""
 
-#: photo21/settings.py:161
+#: photo21/settings.py:158
 msgid "English"
 msgstr ""
 
-#: photo21/settings.py:162
+#: photo21/settings.py:159
 msgid "Spanish"
 msgstr ""
 
-#: photo21/settings.py:163
+#: photo21/settings.py:160
 msgid "French"
 msgstr ""
 
-#: photo21/templates/400.html:10
+#: photo21/templates/400.html:12
 msgid "Bad request"
 msgstr ""
 
-#: photo21/templates/400.html:14
+#: photo21/templates/400.html:16
 msgid ""
 "Sorry, your request was bad. Don't know what could be wrong. An email has "
 "been sent to webmasters with the details of the error. You can now drink a "
 "coke."
 msgstr ""
 
-#: photo21/templates/403.html:10
+#: photo21/templates/403.html:12
 msgid "Permission denied"
 msgstr ""
 
-#: photo21/templates/403.html:13
+#: photo21/templates/403.html:15
 msgid "You don't have the right to perform this request."
 msgstr ""
 
-#: photo21/templates/403.html:15 photo21/templates/404.html:19
+#: photo21/templates/403.html:17 photo21/templates/404.html:21
 msgid "Exception message:"
 msgstr ""
 
-#: photo21/templates/404.html:10
+#: photo21/templates/404.html:12
 msgid "Page not found"
 msgstr ""
 
-#: photo21/templates/404.html:14
+#: photo21/templates/404.html:16
 #, python-format
 msgid ""
 "The requested path <code>%(request_path)s</code> was not found on the server."
 msgstr ""
 
-#: photo21/templates/500.html:10
+#: photo21/templates/500.html:12
 msgid "Server error"
 msgstr ""
 
-#: photo21/templates/500.html:14
+#: photo21/templates/500.html:16
 msgid ""
 "Sorry, an error occurred when processing your request. An email has been "
 "sent to webmasters with the detail of the error, and this will be fixed "
 "soon. You can now drink a beer."
 msgstr ""
 
-#: photo21/templates/account/email.html:6
-#: photo21/templates/account/email.html:14
-#: photo21/templates/socialaccount/connections.html:14
+#: photo21/templates/account/email.html:8
+#: photo21/templates/account/email.html:16
+#: photo21/templates/socialaccount/connections.html:16
 msgid "E-mail Addresses"
 msgstr ""
 
-#: photo21/templates/account/email.html:9 photo21/templates/base.html:59
-#: photo21/templates/socialaccount/connections.html:9
+#: photo21/templates/account/email.html:11 photo21/templates/base.html:64
+#: photo21/templates/socialaccount/connections.html:11
 msgid "Account"
 msgstr "Compte"
 
-#: photo21/templates/account/email.html:17
-#: photo21/templates/socialaccount/connections.html:17
+#: photo21/templates/account/email.html:19
+#: photo21/templates/socialaccount/connections.html:19
 msgid "Social connections"
 msgstr "Connexions sociales"
 
-#: photo21/templates/account/email.html:23
+#: photo21/templates/account/email.html:25
 msgid "The following e-mail addresses are associated with your account:"
 msgstr ""
 
-#: photo21/templates/account/email.html:34
+#: photo21/templates/account/email.html:36
 msgid "Verified"
 msgstr ""
 
-#: photo21/templates/account/email.html:36
+#: photo21/templates/account/email.html:38
 msgid "Unverified"
 msgstr ""
 
-#: photo21/templates/account/email.html:38
+#: photo21/templates/account/email.html:40
 msgid "Primary"
 msgstr ""
 
-#: photo21/templates/account/email.html:44
+#: photo21/templates/account/email.html:46
 msgid "Make Primary"
 msgstr ""
 
-#: photo21/templates/account/email.html:45
+#: photo21/templates/account/email.html:47
 msgid "Re-send Verification"
 msgstr ""
 
-#: photo21/templates/account/email.html:46
-#: photo21/templates/socialaccount/connections.html:45
+#: photo21/templates/account/email.html:48
+#: photo21/templates/socialaccount/connections.html:47
 msgid "Remove"
 msgstr ""
 
-#: photo21/templates/account/email.html:51
+#: photo21/templates/account/email.html:53
 msgid "Warning:"
 msgstr ""
 
-#: photo21/templates/account/email.html:51
+#: photo21/templates/account/email.html:53
 msgid ""
 "You currently do not have any e-mail address set up. You should really add "
 "an e-mail address so you can receive notifications, reset your password, etc."
 msgstr ""
 
-#: photo21/templates/account/email.html:55
+#: photo21/templates/account/email.html:57
 msgid "Add E-mail Address"
 msgstr ""
 
-#: photo21/templates/account/email.html:60
+#: photo21/templates/account/email.html:62
 msgid "Add E-mail"
 msgstr ""
 
-#: photo21/templates/account/email.html:68
-msgid "Do you really want to remove the selected e-mail address?"
-msgstr ""
-
-#: photo21/templates/account/login.html:6
-#: photo21/templates/account/login.html:11
-#: photo21/templates/account/login.html:39
+#: photo21/templates/account/login.html:8
+#: photo21/templates/account/login.html:13
+#: photo21/templates/account/login.html:41
 msgid "Sign In"
 msgstr ""
 
-#: photo21/templates/account/login.html:16
+#: photo21/templates/account/login.html:18
 #, python-format
 msgid ""
 "Please sign in with one of your existing third party accounts. Or, <a href="
@@ -184,11 +180,11 @@ msgstr ""
 "\"%(signup_url)s\">inscrivez-vous</a> pour un compte sur %(site_name)s et "
 "identifiez-vous ci-dessous :"
 
-#: photo21/templates/account/login.html:24
+#: photo21/templates/account/login.html:26
 msgid "or"
 msgstr ""
 
-#: photo21/templates/account/login.html:30
+#: photo21/templates/account/login.html:32
 #, python-format
 msgid ""
 "If you have not created an account yet, then please <a href=\"%(signup_url)s"
@@ -197,90 +193,92 @@ msgstr ""
 "Si vous n'avez pas déjà créé de compte, veuillez vous <a href="
 "\"%(signup_url)s\">inscrire</a>."
 
-#: photo21/templates/account/login.html:40
+#: photo21/templates/account/login.html:42
 msgid "Forgot Password?"
 msgstr ""
 
-#: photo21/templates/account/login.html:44
+#: photo21/templates/account/login.html:46
 msgid "If any problem, please contact the server owners at"
 msgstr "En cas de problème, contactez les administrateurs à"
 
-#: photo21/templates/account/logout.html:6
-#: photo21/templates/account/logout.html:11
-#: photo21/templates/account/logout.html:20
-#, fuzzy
-#| msgid "Sign up"
+#: photo21/templates/account/logout.html:8
+#: photo21/templates/account/logout.html:13
+#: photo21/templates/account/logout.html:22
 msgid "Sign Out"
-msgstr "Inscription"
+msgstr "Déconnexion"
 
-#: photo21/templates/account/logout.html:14
+#: photo21/templates/account/logout.html:16
 msgid "Are you sure you want to sign out?"
 msgstr ""
 
-#: photo21/templates/account/signup.html:6
+#: photo21/templates/account/signup.html:8
 msgid "Signup"
 msgstr ""
 
-#: photo21/templates/account/signup.html:11
-#: photo21/templates/account/signup.html:22
+#: photo21/templates/account/signup.html:13
+#: photo21/templates/account/signup.html:24
 msgid "Sign Up"
 msgstr ""
 
-#: photo21/templates/account/signup.html:14
+#: photo21/templates/account/signup.html:16
 #, python-format
 msgid ""
 "Already have an account? Then please <a href=\"%(login_url)s\">sign in</a>."
 msgstr ""
 
-#: photo21/templates/base.html:12
+#: photo21/templates/base.html:16
 msgid "The ENS Paris-Saclay pictures server."
 msgstr ""
 
-#: photo21/templates/base.html:37
+#: photo21/templates/base.html:42
 msgid "Galleries"
 msgstr "Galeries"
 
-#: photo21/templates/base.html:42
+#: photo21/templates/base.html:47
 msgid "Upload"
 msgstr "Téléversement"
 
-#: photo21/templates/base.html:47
+#: photo21/templates/base.html:52
 msgid "Manage"
 msgstr "Gestion"
 
-#: photo21/templates/base.html:68
+#: photo21/templates/base.html:73
 msgid "Log out"
 msgstr ""
 
-#: photo21/templates/base.html:78
+#: photo21/templates/base.html:83
 msgid "Log in"
 msgstr ""
 
-#: photo21/templates/base.html:87
+#: photo21/templates/base.html:92
 msgid "Sign up"
 msgstr "Inscription"
 
-#: photo21/templates/base.html:109
+#: photo21/templates/base.html:117
+msgid "Connected as"
+msgstr "Connecté en tant que"
+
+#: photo21/templates/base.html:119
 msgid "Source code"
 msgstr "Code source"
 
-#: photo21/templates/index.html:6
+#: photo21/templates/index.html:8
 msgid "Home"
 msgstr "Accueil"
 
-#: photo21/templates/index.html:9
+#: photo21/templates/index.html:11
 msgid "Welcome to the pictures server!"
 msgstr "Bienvenue sur le serveur photos !"
 
-#: photo21/templates/index.html:11
+#: photo21/templates/index.html:13
 msgid ""
 "This website aims to collect the pictures and movies taken in the student "
-"life of ENS Paris-Saclay-Saclay or involving its students."
+"life of ENS Paris-Saclay or involving its students."
 msgstr ""
 "Ce site à pour objectif de recenser les photos et films pris dans la vie "
-"associative de l'ENS Paris-Saclay ou impliquant des <b>K</b>chanais."
+"associative de l'ENS Paris-Saclay ou impliquant ses usager·ères."
 
-#: photo21/templates/index.html:18
+#: photo21/templates/index.html:20
 #, python-format
 msgid ""
 "The pictures are visible in <a href=\"%(gallery_archive_url)s\">the "
@@ -293,7 +291,7 @@ msgstr ""
 "photographe et des personnes présentes sur la photo est nécessaire avant "
 "toute republication sur un autre site.</b>"
 
-#: photo21/templates/index.html:27
+#: photo21/templates/index.html:29
 msgid ""
 "If you want a photo to be deleted, please let us know: <a href=\"mailto:"
 "photos@crans.org?subject=[ABUS] Nouvelle requête\" class=\"btn btn-dark btn-"
@@ -303,7 +301,7 @@ msgstr ""
 "\"mailto:photos@crans.org?subject=[ABUS] Nouvelle requête\" class=\"btn btn-"
 "dark btn-sm\">Signaler un abus</a>"
 
-#: photo21/templates/index.html:33
+#: photo21/templates/index.html:36
 msgid ""
 "If you want to obtain the right to upload pictures, please let us know: <a "
 "href=\"mailto:photos@crans.org?subject=[Photographe] Demande de droits "
@@ -314,33 +312,48 @@ msgstr ""
 "subject=[Photographe] Demande de droits photographe\" class=\"btn btn-dark "
 "btn-sm\">Devenir photographe</a>"
 
-#: photo21/templates/index.html:39
+#: photo21/templates/index.html:43
 msgid "Last galleries"
 msgstr "Galeries récentes"
 
-#: photo21/templates/index.html:50
-msgid "Connected as"
-msgstr "Connecté en tant que"
-
-#: photo21/templates/index.html:53
-msgid "Select another language:"
-msgstr "Changer de langue :"
+#: photo21/templates/index.html:52
+msgid "Behind the scene"
+msgstr "Derrière la scène"
 
-#: photo21/templates/socialaccount/connections.html:6
+#: photo21/templates/index.html:54
+msgid ""
+"Because we value your privacy, we do not sell the data on this site, unlike "
+"many free online platforms. The dedicated server running this website is "
+"kindly hosted by the <a href=\"https://www.crans.org/\">Crans</a> at the ENS "
+"Paris-Saclay basement. It is not managed by the Crans. Current active "
+"administrators are:"
+msgstr ""
+"Comme nous accordons une grande importance au respect de la vie privée, nous "
+"ne vendons pas les données de ce site, contrairement à de nombreuses "
+"plateformes en ligne gratuites. Le serveur dédié qui fait fonctionner ce "
+"site est gentiment hébergé par le <a href=\"https://www.crans.org/\">Crans</"
+"a> au sous-sol de l'ENS Paris-Saclay. <b>Il n'est pas géré par le Crans.</b> "
+"Les administrateur·trices sont :"
+
+#: photo21/templates/index.html:63
+msgid "They should be contacted at"
+msgstr "Ils peuvent être contactés à"
+
+#: photo21/templates/socialaccount/connections.html:8
 msgid "Account Connections"
 msgstr ""
 
-#: photo21/templates/socialaccount/connections.html:23
+#: photo21/templates/socialaccount/connections.html:25
 msgid ""
 "You can sign in to your account using any of the following third party "
 "accounts:"
 msgstr ""
 
-#: photo21/templates/socialaccount/connections.html:51
+#: photo21/templates/socialaccount/connections.html:53
 msgid ""
 "You currently have no social network accounts connected to this account."
 msgstr ""
 
-#: photo21/templates/socialaccount/connections.html:54
+#: photo21/templates/socialaccount/connections.html:56
 msgid "Add a 3rd Party Account"
 msgstr ""
diff --git a/photologue/locale/fr/LC_MESSAGES/django.po b/photologue/locale/fr/LC_MESSAGES/django.po
index f419400..66c1d1d 100644
--- a/photologue/locale/fr/LC_MESSAGES/django.po
+++ b/photologue/locale/fr/LC_MESSAGES/django.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Photologue\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2022-01-30 10:06+0000\n"
+"POT-Creation-Date: 2022-04-17 09:13+0000\n"
 "PO-Revision-Date: 2017-12-03 14:47+0000\n"
 "Last-Translator: Richard Barran <richard@arbee-design.co.uk>\n"
 "Language-Team: French (http://www.transifex.com/richardbarran/django-"
@@ -21,19 +21,23 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: photologue/admin.py:30 photologue/models.py:499
+#: photologue/admin.py:26 photologue/models.py:162 photologue/models.py:770
+msgid "tags"
+msgstr "balises"
+
+#: photologue/admin.py:50 photologue/models.py:519
 msgid "owner"
 msgstr "propriétaire"
 
-#: photologue/forms.py:23
+#: photologue/forms.py:29
 msgid "Gallery"
 msgstr "Galerie"
 
-#: photologue/forms.py:25
+#: photologue/forms.py:31
 msgid "-- Create a new gallery --"
 msgstr "-- Créer une nouvelle galerie --"
 
-#: photologue/forms.py:26
+#: photologue/forms.py:33
 msgid ""
 "Select a gallery to add these images to. Leave this empty to create a new "
 "gallery from the supplied title."
@@ -41,111 +45,111 @@ msgstr ""
 "Sélectionner une galerie à laquelle ajouter ces images. Laisser ce champ "
 "vide pour créer une nouvelle galerie à partir du titre indiqué."
 
-#: photologue/forms.py:30
+#: photologue/forms.py:38
 msgid "New gallery title"
 msgstr "Titre de la nouvelle galerie"
 
-#: photologue/forms.py:35
+#: photologue/forms.py:43
 msgid "New gallery event start date"
 msgstr "Date de début de l'évènement de la nouvelle galerie"
 
-#: photologue/forms.py:40
+#: photologue/forms.py:48
 msgid "New gallery event end date"
 msgstr "Date de fin de l'évènement de la nouvelle galerie"
 
-#: photologue/forms.py:46
+#: photologue/forms.py:54
 msgid "New gallery tags"
 msgstr "Balises de la nouvelle galerie"
 
-#: photologue/forms.py:48
+#: photologue/forms.py:57
 msgid ""
 "Hold down \"Control\", or \"Command\" on a Mac, to select more than one."
 msgstr ""
 
-#: photologue/forms.py:65 photologue/templates/photologue/upload.html:6
-#: photologue/templates/photologue/upload.html:73
+#: photologue/forms.py:75 photologue/templates/photologue/upload.html:8
+#: photologue/templates/photologue/upload.html:15
 msgid "Upload"
 msgstr "Télécharger"
 
-#: photologue/forms.py:71
+#: photologue/forms.py:81
 msgid "A gallery with that title already exists."
 msgstr "Une galerie portant ce nom existe déjà."
 
-#: photologue/forms.py:80
+#: photologue/forms.py:93
 msgid "Select an existing gallery, or enter a title for a new gallery."
 msgstr ""
 "Sélectionner une galerie existante ou entrer un titre pour une nouvelle "
 "galerie."
 
-#: photologue/models.py:84
+#: photologue/models.py:82
 msgid "Very Low"
 msgstr "Très Bas"
 
-#: photologue/models.py:85
+#: photologue/models.py:83
 msgid "Low"
 msgstr "Bas"
 
-#: photologue/models.py:86
+#: photologue/models.py:84
 msgid "Medium-Low"
 msgstr "Moyen-Bas"
 
-#: photologue/models.py:87
+#: photologue/models.py:85
 msgid "Medium"
 msgstr "Moyen"
 
-#: photologue/models.py:88
+#: photologue/models.py:86
 msgid "Medium-High"
 msgstr "Moyen-Haut"
 
-#: photologue/models.py:89
+#: photologue/models.py:87
 msgid "High"
 msgstr "Haut"
 
-#: photologue/models.py:90
+#: photologue/models.py:88
 msgid "Very High"
 msgstr "Très Haut"
 
-#: photologue/models.py:95
+#: photologue/models.py:93
 msgid "Top"
 msgstr "Sommet"
 
-#: photologue/models.py:96
+#: photologue/models.py:94
 msgid "Right"
 msgstr "Droite"
 
-#: photologue/models.py:97
+#: photologue/models.py:95
 msgid "Bottom"
 msgstr "Bas"
 
-#: photologue/models.py:98
+#: photologue/models.py:96
 msgid "Left"
 msgstr "Gauche"
 
-#: photologue/models.py:99
+#: photologue/models.py:97
 msgid "Center (Default)"
 msgstr "Centré (par défaut)"
 
-#: photologue/models.py:103
+#: photologue/models.py:101
 msgid "Flip left to right"
 msgstr "Inversion de gauche à droite"
 
-#: photologue/models.py:104
+#: photologue/models.py:102
 msgid "Flip top to bottom"
 msgstr "Inversion de haut en bas"
 
-#: photologue/models.py:105
+#: photologue/models.py:103
 msgid "Rotate 90 degrees counter-clockwise"
 msgstr "Rotation de 90 degrés dans le sens anti-horloger"
 
-#: photologue/models.py:106
+#: photologue/models.py:104
 msgid "Rotate 90 degrees clockwise"
 msgstr "Rotation de 90 degrés dans le sens horloger"
 
-#: photologue/models.py:107
+#: photologue/models.py:105
 msgid "Rotate 180 degrees"
 msgstr "Rotation de 180 degrés"
 
-#: photologue/models.py:117
+#: photologue/models.py:119
 #, python-format
 msgid ""
 "Chain multiple filters using the following pattern \"FILTER_ONE->FILTER_TWO-"
@@ -156,11 +160,7 @@ msgstr ""
 ">FILTRE_DEUX->FILTRE_TROIS\". Les filtres d'image seront appliqués dans "
 "l'ordre. Les filtres suivants sont disponibles: %s."
 
-#: photologue/models.py:139
-msgid "date published"
-msgstr "date de publication"
-
-#: photologue/models.py:141 photologue/models.py:485
+#: photologue/models.py:142 photologue/models.py:507
 msgid "title"
 msgstr "titre"
 
@@ -168,111 +168,107 @@ msgstr "titre"
 msgid "title slug"
 msgstr "version abrégée du titre"
 
-#: photologue/models.py:147 photologue/models.py:491 photologue/models.py:697
+#: photologue/models.py:147 photologue/models.py:512 photologue/models.py:764
 msgid "A \"slug\" is a unique URL-friendly title for an object."
 msgstr ""
 "Un \"slug\" est un titre abrégé et unique, compatible avec les URL, pour un "
 "objet."
 
-#: photologue/models.py:150
+#: photologue/models.py:151
 msgid "start date"
 msgstr "date de début"
 
-#: photologue/models.py:155
+#: photologue/models.py:156
 msgid "end date"
 msgstr "date de fin"
 
-#: photologue/models.py:157
+#: photologue/models.py:158
 msgid "description"
 msgstr "description"
 
-#: photologue/models.py:162 photologue/models.py:703
-msgid "tags"
-msgstr "balises"
-
-#: photologue/models.py:165 photologue/models.py:506
-msgid "is public"
-msgstr "est public"
-
-#: photologue/models.py:167
-msgid "Public galleries will be displayed in the default views."
-msgstr "Les galeries publiques seront affichée dans les vues par défaut."
-
-#: photologue/models.py:171 photologue/models.py:514
+#: photologue/models.py:168 photologue/models.py:538
 msgid "photos"
 msgstr "photos"
 
-#: photologue/models.py:177
+#: photologue/models.py:175
 msgid "gallery"
 msgstr "galerie"
 
-#: photologue/models.py:178
+#: photologue/models.py:176
 msgid "galleries"
 msgstr "galleries"
 
-#: photologue/models.py:213
+#: photologue/models.py:206
 msgid "count"
 msgstr "nombre"
 
-#: photologue/models.py:221
+#: photologue/models.py:207
+msgid "private count"
+msgstr "nombre de photos privées"
+
+#: photologue/models.py:212
 msgid "image"
 msgstr "image"
 
-#: photologue/models.py:224
+#: photologue/models.py:215
 msgid "date taken"
 msgstr "date de prise de vue"
 
-#: photologue/models.py:227
+#: photologue/models.py:218
 msgid "Date image was taken; is obtained from the image EXIF data."
 msgstr ""
 "La date à laquelle l'image a été prise ; obtenue à partir des données EXIF "
 "de l'image."
 
-#: photologue/models.py:228
+#: photologue/models.py:220
 msgid "view count"
 msgstr "nombre"
 
-#: photologue/models.py:231
+#: photologue/models.py:222
 msgid "crop from"
 msgstr "découper à partir de"
 
-#: photologue/models.py:254
+#: photologue/models.py:246
 msgid "An \"admin_thumbnail\" photo size has not been defined."
 msgstr "Une taille de photo \"admin_thumbnail\" n'a pas encore été définie."
 
-#: photologue/models.py:261
+#: photologue/models.py:259
 msgid "Thumbnail"
 msgstr "Miniature"
 
-#: photologue/models.py:488 photologue/models.py:696
+#: photologue/models.py:509 photologue/models.py:763
 msgid "slug"
 msgstr "libellé court"
 
-#: photologue/models.py:492
+#: photologue/models.py:514
 msgid "caption"
 msgstr "légende"
 
-#: photologue/models.py:494
+#: photologue/models.py:515
 msgid "date added"
 msgstr "date d'ajout"
 
-#: photologue/models.py:504
+#: photologue/models.py:524
 msgid "license"
 msgstr "licence"
 
-#: photologue/models.py:508
+#: photologue/models.py:527
+msgid "is public"
+msgstr "est public"
+
+#: photologue/models.py:529
 msgid "Public photographs will be displayed in the default views."
 msgstr "Les photographies publique seront affichées dans les vues par défaut."
 
-#: photologue/models.py:513
+#: photologue/models.py:537
 msgid "photo"
 msgstr "photo"
 
-#: photologue/models.py:575 photologue/models.py:691
+#: photologue/models.py:600 photologue/models.py:758
 msgid "name"
 msgstr "nom"
 
-#: photologue/models.py:579
+#: photologue/models.py:604
 msgid ""
 "Photo size name should contain only letters, numbers and underscores. "
 "Examples: \"thumbnail\", \"display\", \"small\", \"main_page_widget\"."
@@ -281,41 +277,41 @@ msgstr ""
 "chiffres et des caractères de soulignement. Exemples: \"miniature\", "
 "\"affichage\", \"petit\", \"widget_page_principale\"."
 
-#: photologue/models.py:586
+#: photologue/models.py:616
 msgid "width"
 msgstr "largeur"
 
-#: photologue/models.py:589
+#: photologue/models.py:619
 msgid ""
 "If width is set to \"0\" the image will be scaled to the supplied height."
 msgstr ""
 "Si la largeur est réglée à \"0\" l l'image sera redimensionnée par rapport à "
 "la hauteur fournie."
 
-#: photologue/models.py:590
+#: photologue/models.py:623
 msgid "height"
 msgstr "hauteur"
 
-#: photologue/models.py:593
+#: photologue/models.py:626
 msgid ""
 "If height is set to \"0\" the image will be scaled to the supplied width"
 msgstr ""
 "Si la hauteur est réglée à \"0\" l l'image sera redimensionnée par rapport à "
 "la largeur fournie."
 
-#: photologue/models.py:594
+#: photologue/models.py:630
 msgid "quality"
 msgstr "qualité"
 
-#: photologue/models.py:597
+#: photologue/models.py:633
 msgid "JPEG image quality."
 msgstr "Qualité JPEG de l'image."
 
-#: photologue/models.py:598
+#: photologue/models.py:636
 msgid "upscale images?"
 msgstr "agrandir les images ?"
 
-#: photologue/models.py:600
+#: photologue/models.py:639
 msgid ""
 "If selected the image will be scaled up if necessary to fit the supplied "
 "dimensions. Cropped sizes will be upscaled regardless of this setting."
@@ -324,11 +320,11 @@ msgstr ""
 "dimensions fournies. Les dimensions ajustées seront agrandies sans prendre "
 "en compte ce paramètre."
 
-#: photologue/models.py:604
+#: photologue/models.py:645
 msgid "crop to fit?"
 msgstr "découper pour adapter à la taille ?"
 
-#: photologue/models.py:606
+#: photologue/models.py:648
 msgid ""
 "If selected the image will be scaled and cropped to fit the supplied "
 "dimensions."
@@ -336,21 +332,21 @@ msgstr ""
 "Si sélectionné l'image sera redimensionnée et recadrée pour coïncider avec "
 "les dimensions fournies."
 
-#: photologue/models.py:608
+#: photologue/models.py:653
 msgid "pre-cache?"
 msgstr "mise en cache ?"
 
-#: photologue/models.py:610
+#: photologue/models.py:656
 msgid "If selected this photo size will be pre-cached as photos are added."
 msgstr ""
 "Si sélectionné cette taille de photo sera mise en cache au moment au les "
 "photos sont ajoutées."
 
-#: photologue/models.py:611
+#: photologue/models.py:660
 msgid "increment view count?"
 msgstr "incrémenter le nombre d'affichages ?"
 
-#: photologue/models.py:613
+#: photologue/models.py:663
 msgid ""
 "If selected the image's \"view_count\" will be incremented when this photo "
 "size is displayed."
@@ -358,48 +354,43 @@ msgstr ""
 "Si sélectionné le \"view_count\" (nombre d'affichage) de l'image sera "
 "incrémenté quand cette taille de photo sera affichée."
 
-#: photologue/models.py:618
+#: photologue/models.py:670
 msgid "photo size"
 msgstr "taille de la photo"
 
-#: photologue/models.py:619
+#: photologue/models.py:671
 msgid "photo sizes"
 msgstr "tailles des photos"
 
-#: photologue/models.py:636
+#: photologue/models.py:689
 msgid "Can only crop photos if both width and height dimensions are set."
 msgstr ""
 "La hauteur et la largeur doivent être toutes les deux définies pour "
 "retailler des photos."
 
-#: photologue/models.py:702
+#: photologue/models.py:769
 msgid "tag"
 msgstr ""
 
-#: photologue/templates/photologue/gallery_archive.html:7
-#: photologue/templates/photologue/gallery_archive.html:12
+#: photologue/templates/photologue/gallery_archive.html:9
 msgid "Latest photo galleries"
 msgstr "Dernières galeries de photos"
 
-#: photologue/templates/photologue/gallery_archive.html:18
+#: photologue/templates/photologue/gallery_archive.html:14
+#: photologue/templates/photologue/gallery_archive_year.html:14
 msgid "Filter by year"
 msgstr "Filtrer par année"
 
-#: photologue/templates/photologue/gallery_archive.html:35
+#: photologue/templates/photologue/gallery_archive.html:31
 msgid "No galleries were found"
 msgstr "Aucune galerie trouvée"
 
-#: photologue/templates/photologue/gallery_archive_year.html:7
-#: photologue/templates/photologue/gallery_archive_year.html:12
+#: photologue/templates/photologue/gallery_archive_year.html:9
 #, python-format
 msgid "Galleries for %(show_year)s"
 msgstr "Galeries de %(show_year)s"
 
-#: photologue/templates/photologue/gallery_archive_year.html:17
-msgid "View all galleries"
-msgstr "Afficher toutes les galeries"
-
-#: photologue/templates/photologue/gallery_archive_year.html:29
+#: photologue/templates/photologue/gallery_archive_year.html:31
 msgid "No galleries were found."
 msgstr "Aucune galerie trouvée."
 
@@ -407,26 +398,49 @@ msgstr "Aucune galerie trouvée."
 msgid "to"
 msgstr "au"
 
-#: photologue/templates/photologue/gallery_detail.html:57
+#: photologue/templates/photologue/gallery_detail.html:58
 msgid "All pictures"
 msgstr "Toutes les photos"
 
-#: photologue/templates/photologue/gallery_detail.html:78
+#: photologue/templates/photologue/gallery_detail.html:79
 msgid "Download all gallery"
 msgstr "Télécharger toute la galerie"
 
-#: photologue/templates/photologue/photo_detail.html:13
+#: photologue/templates/photologue/photo_confirm_delete.html:9
+#: photologue/templates/photologue/photo_confirm_delete.html:14
+msgid "Delete confirmation"
+msgstr ""
+
+#: photologue/templates/photologue/photo_confirm_delete.html:17
+#, python-format
+msgid "Are you sure you want to delete <code>%(object)s</code>?"
+msgstr ""
+
+#: photologue/templates/photologue/photo_confirm_delete.html:22
+#: photologue/templates/photologue/photo_confirm_report.html:22
+msgid "Confirm"
+msgstr ""
+
+#: photologue/templates/photologue/photo_confirm_report.html:9
+#: photologue/templates/photologue/photo_confirm_report.html:14
+msgid "Report confirmation"
+msgstr ""
+
+#: photologue/templates/photologue/photo_confirm_report.html:17
+#, python-format
+msgid ""
+"Are you sure you want to report <code>%(object)s</code>? This photo will no "
+"longer be public, and administrators will be notified."
+msgstr ""
+
+#: photologue/templates/photologue/photo_detail.html:15
 msgid "Published"
 msgstr "Publiée le"
 
-#: photologue/templates/photologue/photo_detail.html:25
-msgid "This photo is found in the following galleries"
-msgstr "Cette photo se trouve dans les galeries suivantes"
-
-#: photologue/templates/photologue/upload.html:78
+#: photologue/templates/photologue/upload.html:20
 msgid "Drag and drop photos here"
 msgstr "Glissez et déposez les photos ici"
 
-#: photologue/templates/photologue/upload.html:82
+#: photologue/templates/photologue/upload.html:24
 msgid "Owner will be"
 msgstr "Le propriétaire sera"
-- 
GitLab


From 3c19075c92a62a16c0a25f0f2ef996a0d596efc2 Mon Sep 17 00:00:00 2001
From: Alexandre Iooss <erdnaxe@crans.org>
Date: Sun, 17 Apr 2022 11:23:39 +0200
Subject: [PATCH 3/3] Use lowercase user_model

---
 photo21/views.py | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/photo21/views.py b/photo21/views.py
index 4b7cb21..400e948 100644
--- a/photo21/views.py
+++ b/photo21/views.py
@@ -27,8 +27,8 @@ class IndexView(LoginRequiredMixin, ListView):
         context = super().get_context_data(**kwargs)
 
         # Get superusers
-        User = get_user_model()
-        superusers = User.objects.filter(is_superuser=True)
+        user_model = get_user_model()
+        superusers = user_model.objects.filter(is_superuser=True)
         context["superusers"] = superusers
 
         return context
-- 
GitLab