diff --git a/core/templates/core/login.jinja b/core/templates/core/login.jinja index a81528b6..789e38a7 100644 --- a/core/templates/core/login.jinja +++ b/core/templates/core/login.jinja @@ -15,7 +15,7 @@

{% trans %}Your account doesn't have access to this page. To proceed, please login with an account that has access.{% endtrans %}

{% else %} -

{% trans %}Please login to see this page.{% endtrans %}

+

{% trans %}Please login or create an account to see this page.{% endtrans %}

{% endif %} {% endif %} @@ -30,5 +30,6 @@ {# Assumes you setup the password_reset view in your URLconf #}

{% trans %}Lost password?{% endtrans %}

+

{% trans %}Create account{% endtrans %}

{% endblock %} diff --git a/counter/models.py b/counter/models.py index 584bb99a..d3d3b39a 100644 --- a/counter/models.py +++ b/counter/models.py @@ -490,7 +490,7 @@ class Selling(models.Model): event = self.product.eticket.event_title or _("Unknown event") subject = _("Eticket bought for the event %(event)s") % {"event": event} message_html = _( - "You bought an eticket for the event %(event)s.\nYou can download it on this page %(url)s." + "You bought an eticket for the event %(event)s.\nYou can download it directly from this link %(eticket)s.\nYou can also retrieve all your e-tickets on your account page %(url)s." ) % { "event": event, "url": "".join( @@ -502,10 +502,23 @@ class Selling(models.Model): "", ) ), + "eticket": "".join( + ( + '', + self.get_eticket_full_url(), + "", + ) + ), } message_txt = _( - "You bought an eticket for the event %(event)s.\nYou can download it on this page %(url)s." - ) % {"event": event, "url": self.customer.get_full_url()} + "You bought an eticket for the event %(event)s.\nYou can download it directly from this link %(eticket)s.\nYou can also retrieve all your e-tickets on your account page %(url)s." + ) % { + "event": event, + "url": self.customer.get_full_url(), + "eticket": self.get_eticket_full_url(), + } self.customer.user.email_user(subject, message_txt, html_message=message_html) def save(self, allow_negative=False, *args, **kwargs): @@ -568,11 +581,6 @@ class Selling(models.Model): start=sub.subscription_start, ) sub.save() - try: - if self.product.eticket: - self.send_mail_customer() - except: - pass if self.customer.user.preferences.notify_on_click: Notification( user=self.customer.user, @@ -588,6 +596,16 @@ class Selling(models.Model): type="SELLING", ).save() super(Selling, self).save(*args, **kwargs) + try: + # The product has no id until it's saved + if self.product.eticket: + self.send_mail_customer() + except: + pass + + def get_eticket_full_url(self): + eticket_url = reverse("counter:eticket_pdf", kwargs={"selling_id": self.id}) + return "".join(["https://", settings.SITH_URL, eticket_url]) class Permanency(models.Model): diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index e74a9ddd..bb935af5 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-09-10 16:45+0200\n" +"POT-Creation-Date: 2019-10-13 17:21+0200\n" "PO-Revision-Date: 2016-07-18\n" "Last-Translator: Skia \n" "Language-Team: AE info \n" @@ -16,12 +16,12 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: accounting/models.py:61 accounting/models.py:110 accounting/models.py:138 -#: accounting/models.py:203 club/models.py:48 com/models.py:230 -#: com/models.py:247 counter/models.py:121 counter/models.py:149 -#: counter/models.py:211 forum/models.py:58 launderette/models.py:38 -#: launderette/models.py:90 launderette/models.py:125 stock/models.py:40 -#: stock/models.py:60 stock/models.py:100 stock/models.py:127 +#: accounting/models.py:61 accounting/models.py:110 accounting/models.py:143 +#: accounting/models.py:216 club/models.py:48 com/models.py:277 +#: com/models.py:294 counter/models.py:121 counter/models.py:149 +#: counter/models.py:213 forum/models.py:58 launderette/models.py:38 +#: launderette/models.py:93 launderette/models.py:131 stock/models.py:40 +#: stock/models.py:63 stock/models.py:105 stock/models.py:134 msgid "name" msgstr "nom" @@ -65,116 +65,116 @@ msgstr "IBAN" msgid "account number" msgstr "numero de compte" -#: accounting/models.py:113 accounting/models.py:139 club/models.py:266 -#: com/models.py:74 com/models.py:218 com/models.py:251 counter/models.py:166 -#: counter/models.py:212 trombi/models.py:205 +#: accounting/models.py:116 accounting/models.py:147 club/models.py:275 +#: com/models.py:75 com/models.py:264 com/models.py:300 counter/models.py:167 +#: counter/models.py:215 trombi/models.py:217 msgid "club" msgstr "club" -#: accounting/models.py:116 +#: accounting/models.py:121 msgid "Bank account" msgstr "Compte en banque" -#: accounting/models.py:141 +#: accounting/models.py:153 msgid "bank account" msgstr "compte en banque" -#: accounting/models.py:145 +#: accounting/models.py:158 msgid "Club account" msgstr "Compte club" -#: accounting/models.py:190 +#: accounting/models.py:203 #, python-format msgid "%(club_account)s on %(bank_account)s" msgstr "%(club_account)s sur %(bank_account)s" -#: accounting/models.py:201 club/models.py:268 counter/models.py:591 -#: election/models.py:18 launderette/models.py:180 +#: accounting/models.py:214 club/models.py:281 counter/models.py:616 +#: election/models.py:18 launderette/models.py:194 msgid "start date" msgstr "date de début" -#: accounting/models.py:202 club/models.py:269 counter/models.py:592 +#: accounting/models.py:215 club/models.py:282 counter/models.py:617 #: election/models.py:19 msgid "end date" msgstr "date de fin" -#: accounting/models.py:204 +#: accounting/models.py:217 msgid "is closed" msgstr "est fermé" -#: accounting/models.py:206 accounting/models.py:521 +#: accounting/models.py:222 accounting/models.py:549 msgid "club account" msgstr "compte club" -#: accounting/models.py:208 accounting/models.py:268 counter/models.py:56 -#: counter/models.py:348 +#: accounting/models.py:225 accounting/models.py:289 counter/models.py:56 +#: counter/models.py:354 msgid "amount" msgstr "montant" -#: accounting/models.py:209 +#: accounting/models.py:226 msgid "effective_amount" msgstr "montant effectif" -#: accounting/models.py:212 +#: accounting/models.py:229 msgid "General journal" msgstr "Classeur" -#: accounting/models.py:264 +#: accounting/models.py:281 msgid "number" msgstr "numéro" -#: accounting/models.py:266 +#: accounting/models.py:286 msgid "journal" msgstr "classeur" -#: accounting/models.py:269 core/models.py:813 core/models.py:1349 -#: core/models.py:1395 core/models.py:1424 counter/models.py:353 -#: counter/models.py:446 counter/models.py:615 eboutic/models.py:42 -#: eboutic/models.py:85 forum/models.py:298 forum/models.py:391 -#: stock/models.py:99 +#: accounting/models.py:290 core/models.py:825 core/models.py:1363 +#: core/models.py:1411 core/models.py:1440 counter/models.py:364 +#: counter/models.py:457 counter/models.py:646 eboutic/models.py:46 +#: eboutic/models.py:93 forum/models.py:311 forum/models.py:408 +#: stock/models.py:104 msgid "date" msgstr "date" -#: accounting/models.py:270 counter/models.py:123 counter/models.py:616 -#: pedagogy/models.py:215 stock/models.py:102 +#: accounting/models.py:291 counter/models.py:123 counter/models.py:647 +#: pedagogy/models.py:219 stock/models.py:107 msgid "comment" msgstr "commentaire" -#: accounting/models.py:272 counter/models.py:355 counter/models.py:448 -#: subscription/models.py:64 +#: accounting/models.py:293 counter/models.py:366 counter/models.py:459 +#: subscription/models.py:66 msgid "payment method" msgstr "méthode de paiement" -#: accounting/models.py:277 +#: accounting/models.py:298 msgid "cheque number" msgstr "numéro de chèque" -#: accounting/models.py:282 eboutic/models.py:166 +#: accounting/models.py:303 eboutic/models.py:178 msgid "invoice" msgstr "facture" -#: accounting/models.py:286 +#: accounting/models.py:308 msgid "is done" msgstr "est fait" -#: accounting/models.py:290 +#: accounting/models.py:312 msgid "simple type" msgstr "type simplifié" -#: accounting/models.py:297 accounting/models.py:462 +#: accounting/models.py:320 accounting/models.py:487 msgid "accounting type" msgstr "type comptable" -#: accounting/models.py:304 accounting/models.py:450 accounting/models.py:485 -#: accounting/models.py:519 core/models.py:1423 counter/models.py:412 +#: accounting/models.py:328 accounting/models.py:475 accounting/models.py:510 +#: accounting/models.py:545 core/models.py:1439 counter/models.py:423 msgid "label" msgstr "étiquette" -#: accounting/models.py:310 +#: accounting/models.py:334 msgid "target type" msgstr "type de cible" -#: accounting/models.py:313 club/models.py:415 +#: accounting/models.py:337 club/models.py:438 #: club/templates/club/club_members.jinja:16 #: club/templates/club/club_old_members.jinja:8 #: club/templates/club/mailing.jinja:41 @@ -186,7 +186,7 @@ msgstr "type de cible" msgid "User" msgstr "Utilisateur" -#: accounting/models.py:314 club/models.py:320 +#: accounting/models.py:338 club/models.py:334 #: club/templates/club/club_detail.jinja:12 #: com/templates/com/mailing_admin.jinja:11 #: com/templates/com/news_admin_list.jinja:23 @@ -210,36 +210,36 @@ msgstr "Utilisateur" msgid "Club" msgstr "Club" -#: accounting/models.py:315 core/views/user.py:297 +#: accounting/models.py:339 core/views/user.py:286 msgid "Account" msgstr "Compte" -#: accounting/models.py:316 +#: accounting/models.py:340 msgid "Company" msgstr "Entreprise" -#: accounting/models.py:317 sith/settings.py:377 +#: accounting/models.py:341 sith/settings.py:377 #: stock/templates/stock/shopping_list_items.jinja:37 msgid "Other" msgstr "Autre" -#: accounting/models.py:320 +#: accounting/models.py:344 msgid "target id" msgstr "id de la cible" -#: accounting/models.py:322 +#: accounting/models.py:346 msgid "target label" msgstr "nom de la cible" -#: accounting/models.py:327 +#: accounting/models.py:351 msgid "linked operation" msgstr "opération liée" -#: accounting/models.py:346 +#: accounting/models.py:371 msgid "The date must be set." msgstr "La date doit être indiquée." -#: accounting/models.py:350 +#: accounting/models.py:375 #, python-format msgid "" "The date can not be before the start date of the journal, which is\n" @@ -248,16 +248,16 @@ msgstr "" "La date ne peut pas être avant la date de début du journal, qui est\n" "%(start_date)s." -#: accounting/models.py:360 +#: accounting/models.py:385 msgid "Target does not exists" msgstr "La cible n'existe pas." -#: accounting/models.py:363 +#: accounting/models.py:388 msgid "Please add a target label if you set no existing target" msgstr "" "Merci d'ajouter un nom de cible si vous ne spécifiez pas de cible existante" -#: accounting/models.py:368 +#: accounting/models.py:393 msgid "" "You need to provide ether a simplified accounting type or a standard " "accounting type" @@ -265,41 +265,41 @@ msgstr "" "Vous devez fournir soit un type comptable simplifié ou un type comptable " "standard" -#: accounting/models.py:442 counter/models.py:159 pedagogy/models.py:46 +#: accounting/models.py:467 counter/models.py:159 pedagogy/models.py:46 msgid "code" msgstr "code" -#: accounting/models.py:446 +#: accounting/models.py:471 msgid "An accounting type code contains only numbers" msgstr "Un code comptable ne contient que des numéros" -#: accounting/models.py:452 +#: accounting/models.py:477 msgid "movement type" msgstr "type de mouvement" -#: accounting/models.py:454 +#: accounting/models.py:479 #: accounting/templates/accounting/journal_statement_nature.jinja:9 #: accounting/templates/accounting/journal_statement_person.jinja:12 #: accounting/views.py:602 msgid "Credit" msgstr "Crédit" -#: accounting/models.py:455 +#: accounting/models.py:480 #: accounting/templates/accounting/journal_statement_nature.jinja:28 #: accounting/templates/accounting/journal_statement_person.jinja:40 #: accounting/views.py:602 msgid "Debit" msgstr "Débit" -#: accounting/models.py:456 +#: accounting/models.py:481 msgid "Neutral" msgstr "Neutre" -#: accounting/models.py:489 +#: accounting/models.py:514 msgid "simplified accounting types" msgstr "type simplifié" -#: accounting/models.py:493 +#: accounting/models.py:519 msgid "simplified type" msgstr "type simplifié" @@ -381,7 +381,7 @@ msgstr "Compte en banque : " #: pedagogy/templates/pedagogy/guide.jinja:90 #: pedagogy/templates/pedagogy/guide.jinja:126 #: pedagogy/templates/pedagogy/uv_detail.jinja:185 -#: sas/templates/sas/album.jinja:26 sas/templates/sas/moderation.jinja:18 +#: sas/templates/sas/album.jinja:27 sas/templates/sas/moderation.jinja:18 #: sas/templates/sas/picture.jinja:74 sas/templates/sas/picture.jinja:124 #: stock/templates/stock/stock_shopping_list.jinja:43 #: stock/templates/stock/stock_shopping_list.jinja:69 @@ -391,7 +391,7 @@ msgid "Delete" msgstr "Supprimer" #: accounting/templates/accounting/bank_account_details.jinja:18 -#: club/views.py:78 core/views/user.py:207 sas/templates/sas/picture.jinja:86 +#: club/views.py:78 core/views/user.py:196 sas/templates/sas/picture.jinja:86 msgid "Infos" msgstr "Infos" @@ -425,7 +425,7 @@ msgstr "Nouveau compte club" #: com/templates/com/weekmail.jinja:61 core/templates/core/file.jinja:38 #: core/templates/core/group_list.jinja:24 core/templates/core/page.jinja:35 #: core/templates/core/poster_list.jinja:40 -#: core/templates/core/user_tools.jinja:42 core/views/user.py:239 +#: core/templates/core/user_tools.jinja:42 core/views/user.py:228 #: counter/templates/counter/cash_summary_list.jinja:53 #: counter/templates/counter/counter_list.jinja:17 #: counter/templates/counter/counter_list.jinja:33 @@ -440,7 +440,7 @@ msgstr "Nouveau compte club" #: pedagogy/templates/pedagogy/guide.jinja:89 #: pedagogy/templates/pedagogy/guide.jinja:125 #: pedagogy/templates/pedagogy/uv_detail.jinja:184 -#: sas/templates/sas/album.jinja:18 sas/templates/sas/picture.jinja:100 +#: sas/templates/sas/album.jinja:19 sas/templates/sas/picture.jinja:100 #: trombi/templates/trombi/detail.jinja:9 #: trombi/templates/trombi/edit_profile.jinja:34 msgid "Edit" @@ -631,7 +631,7 @@ msgstr "No" #: core/templates/core/user_account_detail.jinja:78 #: counter/templates/counter/cash_summary_list.jinja:34 #: counter/templates/counter/last_ops.jinja:14 -#: counter/templates/counter/last_ops.jinja:39 sas/views.py:353 +#: counter/templates/counter/last_ops.jinja:39 sas/views.py:369 #: stock/templates/stock/stock_shopping_list.jinja:25 #: stock/templates/stock/stock_shopping_list.jinja:54 #: trombi/templates/trombi/user_profile.jinja:40 @@ -673,7 +673,7 @@ msgstr "Effectuées" #: pedagogy/templates/pedagogy/uv_detail.jinja:138 #: trombi/templates/trombi/comment.jinja:4 #: trombi/templates/trombi/comment.jinja:8 -#: trombi/templates/trombi/user_tools.jinja:50 +#: trombi/templates/trombi/user_tools.jinja:51 msgid "Comment" msgstr "Commentaire" @@ -969,7 +969,7 @@ msgid "Begin date" msgstr "Date de début" #: club/forms.py:169 com/views.py:85 com/views.py:210 counter/views.py:1564 -#: election/views.py:190 subscription/views.py:52 +#: election/views.py:178 subscription/views.py:52 msgid "End date" msgstr "Date de fin" @@ -998,15 +998,15 @@ msgstr "Vous ne pouvez pas ajouter deux fois le même utilisateur" msgid "You should specify a role" msgstr "Vous devez choisir un rôle" -#: club/forms.py:290 sas/views.py:129 sas/views.py:195 sas/views.py:286 +#: club/forms.py:290 sas/views.py:130 sas/views.py:196 sas/views.py:295 msgid "You do not have the permission to do that" msgstr "Vous n'avez pas la permission de faire cela" -#: club/models.py:51 +#: club/models.py:53 msgid "unix name" msgstr "nom unix" -#: club/models.py:58 +#: club/models.py:60 msgid "" "Enter a valid unix name. This value may contain only letters, numbers ./-/_ " "characters." @@ -1014,94 +1014,94 @@ msgstr "" "Entrez un nom UNIX valide. Cette valeur peut contenir uniquement des " "lettres, des nombres, et les caractères ./-/_" -#: club/models.py:63 +#: club/models.py:65 msgid "A club with that unix name already exists." msgstr "Un club avec ce nom UNIX existe déjà." -#: club/models.py:66 +#: club/models.py:68 msgid "logo" msgstr "logo" -#: club/models.py:68 +#: club/models.py:70 msgid "is active" msgstr "actif" -#: club/models.py:70 +#: club/models.py:72 msgid "short description" msgstr "description courte" -#: club/models.py:72 core/models.py:260 +#: club/models.py:74 core/models.py:260 msgid "address" msgstr "Adresse" -#: club/models.py:89 core/models.py:173 +#: club/models.py:94 core/models.py:173 msgid "home" msgstr "home" -#: club/models.py:111 +#: club/models.py:118 msgid "You can not make loops in clubs" msgstr "Vous ne pouvez pas faire de boucles dans les clubs" -#: club/models.py:125 +#: club/models.py:132 msgid "A club with that unix_name already exists" msgstr "Un club avec ce nom UNIX existe déjà." -#: club/models.py:260 counter/models.py:587 counter/models.py:610 -#: eboutic/models.py:40 eboutic/models.py:83 election/models.py:180 -#: launderette/models.py:134 launderette/models.py:190 sas/models.py:239 -#: trombi/models.py:203 +#: club/models.py:267 counter/models.py:607 counter/models.py:637 +#: eboutic/models.py:42 eboutic/models.py:89 election/models.py:192 +#: launderette/models.py:145 launderette/models.py:213 sas/models.py:244 +#: trombi/models.py:213 msgid "user" msgstr "nom d'utilisateur" -#: club/models.py:271 core/models.py:224 election/models.py:178 -#: election/models.py:204 trombi/models.py:206 +#: club/models.py:284 core/models.py:224 election/models.py:187 +#: election/models.py:223 trombi/models.py:218 msgid "role" msgstr "rôle" -#: club/models.py:276 core/models.py:73 counter/models.py:122 -#: counter/models.py:150 election/models.py:15 election/models.py:117 -#: election/models.py:182 forum/models.py:59 forum/models.py:231 +#: club/models.py:289 core/models.py:73 counter/models.py:122 +#: counter/models.py:150 election/models.py:15 election/models.py:120 +#: election/models.py:197 forum/models.py:59 forum/models.py:240 msgid "description" msgstr "description" -#: club/models.py:286 +#: club/models.py:299 msgid "past member" msgstr "Anciens membres" -#: club/models.py:323 club/models.py:420 +#: club/models.py:341 club/models.py:444 msgid "Email address" msgstr "Adresse email" -#: club/models.py:331 +#: club/models.py:349 msgid "Enter a valid address. Only the root of the address is needed." msgstr "" "Entrez une adresse valide. Seule la racine de l'adresse est nécessaire." -#: club/models.py:335 com/models.py:78 com/models.py:259 core/models.py:814 +#: club/models.py:353 com/models.py:83 com/models.py:310 core/models.py:826 msgid "is moderated" msgstr "est modéré" -#: club/models.py:337 com/models.py:80 com/models.py:263 +#: club/models.py:357 com/models.py:87 com/models.py:314 msgid "moderator" msgstr "modérateur" -#: club/models.py:342 +#: club/models.py:364 msgid "This mailing list already exists." msgstr "Cette liste de diffusion existe déjà." -#: club/models.py:408 club/templates/club/mailing.jinja:23 +#: club/models.py:430 club/templates/club/mailing.jinja:23 msgid "Mailing" msgstr "Liste de diffusion" -#: club/models.py:427 +#: club/models.py:451 msgid "At least user or email is required" msgstr "Au moins un utilisateur ou un email est nécessaire" -#: club/models.py:435 club/tests.py:633 +#: club/models.py:459 club/tests.py:633 msgid "This email is already suscribed in this mailing" msgstr "Cet email est déjà abonné à cette mailing" -#: club/models.py:461 +#: club/models.py:485 msgid "Unregistered user" msgstr "Utilisateur non enregistré" @@ -1363,8 +1363,8 @@ msgstr "Anciens membres" msgid "History" msgstr "Historique" -#: club/views.py:115 core/templates/core/base.jinja:119 core/views/user.py:230 -#: sas/templates/sas/picture.jinja:95 trombi/views.py:60 +#: club/views.py:115 core/templates/core/base.jinja:119 core/views/user.py:219 +#: sas/templates/sas/picture.jinja:95 trombi/views.py:61 msgid "Tools" msgstr "Outils" @@ -1419,9 +1419,9 @@ msgstr "Hebdomadaire" msgid "Call" msgstr "Appel" -#: com/models.py:68 com/models.py:154 com/models.py:212 election/models.py:14 -#: election/models.py:116 election/models.py:156 forum/models.py:242 -#: forum/models.py:296 pedagogy/models.py:100 +#: com/models.py:68 com/models.py:175 com/models.py:253 election/models.py:14 +#: election/models.py:119 election/models.py:159 forum/models.py:251 +#: forum/models.py:309 pedagogy/models.py:101 msgid "title" msgstr "titre" @@ -1429,70 +1429,70 @@ msgstr "titre" msgid "summary" msgstr "résumé" -#: com/models.py:70 com/models.py:213 trombi/models.py:188 +#: com/models.py:70 com/models.py:254 trombi/models.py:197 msgid "content" msgstr "contenu" -#: com/models.py:72 core/models.py:1393 launderette/models.py:95 -#: launderette/models.py:130 launderette/models.py:182 stock/models.py:77 -#: stock/models.py:131 +#: com/models.py:72 core/models.py:1409 launderette/models.py:101 +#: launderette/models.py:139 launderette/models.py:196 stock/models.py:80 +#: stock/models.py:138 msgid "type" msgstr "type" -#: com/models.py:76 com/models.py:215 pedagogy/models.py:61 -#: pedagogy/models.py:210 trombi/models.py:183 +#: com/models.py:80 com/models.py:258 pedagogy/models.py:61 +#: pedagogy/models.py:211 trombi/models.py:187 msgid "author" msgstr "auteur" -#: com/models.py:141 +#: com/models.py:153 msgid "news_date" msgstr "date de la nouvelle" -#: com/models.py:142 +#: com/models.py:156 msgid "start_date" msgstr "date de début" -#: com/models.py:143 +#: com/models.py:157 msgid "end_date" msgstr "date de fin" -#: com/models.py:155 +#: com/models.py:176 msgid "intro" msgstr "intro" -#: com/models.py:156 +#: com/models.py:177 msgid "joke" msgstr "blague" -#: com/models.py:157 +#: com/models.py:178 msgid "protip" msgstr "astuce" -#: com/models.py:158 +#: com/models.py:179 msgid "conclusion" msgstr "conclusion" -#: com/models.py:159 +#: com/models.py:180 msgid "sent" msgstr "envoyé" -#: com/models.py:210 +#: com/models.py:249 msgid "weekmail" msgstr "weekmail" -#: com/models.py:220 +#: com/models.py:267 msgid "rank" msgstr "rang" -#: com/models.py:249 core/models.py:784 core/models.py:828 +#: com/models.py:296 core/models.py:791 core/models.py:841 msgid "file" msgstr "fichier" -#: com/models.py:257 +#: com/models.py:308 msgid "display time" msgstr "temps d'affichage" -#: com/models.py:284 +#: com/models.py:336 msgid "Begin date should be before end date" msgstr "La date de début doit être avant celle de fin" @@ -1897,7 +1897,7 @@ msgstr "Astuce" msgid "Final word" msgstr "Le mot de la fin" -#: com/views.py:78 com/views.py:204 election/views.py:185 +#: com/views.py:78 com/views.py:204 election/views.py:172 #: subscription/views.py:46 msgid "Start date" msgstr "Date de début" @@ -1922,31 +1922,31 @@ msgstr "Message d'alerte" msgid "Screens list" msgstr "Liste d'écrans" -#: com/views.py:215 +#: com/views.py:216 msgid "Until" msgstr "Jusqu'à" -#: com/views.py:217 +#: com/views.py:220 msgid "Automoderation" msgstr "Automodération" -#: com/views.py:224 com/views.py:228 com/views.py:238 +#: com/views.py:227 com/views.py:231 com/views.py:241 msgid "This field is required." msgstr "Ce champ est obligatoire." -#: com/views.py:234 +#: com/views.py:237 msgid "You crazy? You can not finish an event before starting it." msgstr "T'es fou? Un événement ne peut pas finir avant même de commencer." -#: com/views.py:463 +#: com/views.py:466 msgid "Delete and save to regenerate" msgstr "Supprimer et sauver pour regénérer" -#: com/views.py:478 +#: com/views.py:481 msgid "Weekmail of the " msgstr "Weekmail du " -#: com/views.py:588 +#: com/views.py:591 msgid "" "You must be a board member of the selected club to post in the Weekmail." msgstr "" @@ -2060,11 +2060,11 @@ msgstr "blouse" msgid "sex" msgstr "sexe" -#: core/models.py:205 matmat/views.py:73 +#: core/models.py:205 matmat/views.py:74 msgid "Man" msgstr "Homme" -#: core/models.py:205 matmat/views.py:73 +#: core/models.py:205 matmat/views.py:75 msgid "Woman" msgstr "Femme" @@ -2140,7 +2140,7 @@ msgstr "département" msgid "dpt option" msgstr "Filière" -#: core/models.py:248 pedagogy/models.py:73 pedagogy/models.py:295 +#: core/models.py:248 pedagogy/models.py:74 pedagogy/models.py:303 msgid "semester" msgstr "semestre" @@ -2194,7 +2194,7 @@ msgstr "Un utilisateur de ce nom d'utilisateur existe déjà" #: election/templates/election/election_detail.jinja:340 #: forum/templates/forum/macros.jinja:104 #: forum/templates/forum/macros.jinja:106 -#: trombi/templates/trombi/user_tools.jinja:41 +#: trombi/templates/trombi/user_tools.jinja:42 msgid "Profile" msgstr "Profil" @@ -2202,105 +2202,105 @@ msgstr "Profil" msgid "Visitor" msgstr "Visiteur" -#: core/models.py:748 +#: core/models.py:750 msgid "do you want to receive the weekmail" msgstr "voulez-vous recevoir le Weekmail" -#: core/models.py:750 +#: core/models.py:752 msgid "show your stats to others" msgstr "montrez vos statistiques aux autres" -#: core/models.py:752 +#: core/models.py:754 msgid "get a notification for every click" msgstr "recevez une notification pour chaque click" -#: core/models.py:755 +#: core/models.py:757 msgid "get a notification for every refilling" msgstr "recevez une notification pour chaque rechargement" -#: core/models.py:778 +#: core/models.py:780 msgid "file name" msgstr "nom du fichier" -#: core/models.py:780 core/models.py:1119 +#: core/models.py:784 core/models.py:1132 msgid "parent" msgstr "parent" -#: core/models.py:791 +#: core/models.py:798 msgid "compressed file" msgstr "version allégée" -#: core/models.py:798 +#: core/models.py:805 msgid "thumbnail" msgstr "miniature" -#: core/models.py:803 core/models.py:818 +#: core/models.py:813 core/models.py:830 msgid "owner" msgstr "propriétaire" -#: core/models.py:805 core/models.py:1138 core/views/files.py:193 +#: core/models.py:817 core/models.py:1152 core/views/files.py:191 msgid "edit group" msgstr "groupe d'édition" -#: core/models.py:808 core/models.py:1141 core/views/files.py:196 +#: core/models.py:820 core/models.py:1155 core/views/files.py:194 msgid "view group" msgstr "groupe de vue" -#: core/models.py:810 +#: core/models.py:822 msgid "is folder" msgstr "est un dossier" -#: core/models.py:811 +#: core/models.py:823 msgid "mime type" msgstr "type mime" -#: core/models.py:812 +#: core/models.py:824 msgid "size" msgstr "taille" -#: core/models.py:822 +#: core/models.py:835 msgid "asked for removal" msgstr "retrait demandé" -#: core/models.py:824 +#: core/models.py:837 msgid "is in the SAS" msgstr "est dans le SAS" -#: core/models.py:866 +#: core/models.py:879 msgid "Character '/' not authorized in name" msgstr "Le caractère '/' n'est pas autorisé dans les noms de fichier" -#: core/models.py:868 core/models.py:872 +#: core/models.py:881 core/models.py:885 msgid "Loop in folder tree" msgstr "Boucle dans l'arborescence des dossiers" -#: core/models.py:875 +#: core/models.py:888 msgid "You can not make a file be a children of a non folder file" msgstr "" "Vous ne pouvez pas mettre un fichier enfant de quelque chose qui n'est pas " "un dossier" -#: core/models.py:886 +#: core/models.py:899 msgid "Duplicate file" msgstr "Un fichier de ce nom existe déjà" -#: core/models.py:903 +#: core/models.py:916 msgid "You must provide a file" msgstr "Vous devez fournir un fichier" -#: core/models.py:1043 +#: core/models.py:1056 msgid "Folder: " msgstr "Dossier : " -#: core/models.py:1045 +#: core/models.py:1058 msgid "File: " msgstr "Fichier : " -#: core/models.py:1102 +#: core/models.py:1115 msgid "page unix name" msgstr "nom unix de la page" -#: core/models.py:1108 +#: core/models.py:1121 msgid "" "Enter a valid page name. This value may contain only unaccented letters, " "numbers and ./+/-/_ characters." @@ -2308,51 +2308,51 @@ msgstr "" "Entrez un nom de page correct. Uniquement des lettres non accentuées, " "numéros, et ./+/-/_" -#: core/models.py:1126 +#: core/models.py:1139 msgid "page name" msgstr "nom de la page" -#: core/models.py:1134 +#: core/models.py:1147 msgid "owner group" msgstr "groupe propriétaire" -#: core/models.py:1146 +#: core/models.py:1160 msgid "lock user" msgstr "utilisateur bloquant" -#: core/models.py:1152 +#: core/models.py:1167 msgid "lock_timeout" msgstr "décompte du déblocage" -#: core/models.py:1183 +#: core/models.py:1197 msgid "Duplicate page" msgstr "Une page de ce nom existe déjà" -#: core/models.py:1186 +#: core/models.py:1200 msgid "Loop in page tree" msgstr "Boucle dans l'arborescence des pages" -#: core/models.py:1346 +#: core/models.py:1360 msgid "revision" msgstr "révision" -#: core/models.py:1347 +#: core/models.py:1361 msgid "page title" msgstr "titre de la page" -#: core/models.py:1348 +#: core/models.py:1362 msgid "page content" msgstr "contenu de la page" -#: core/models.py:1390 +#: core/models.py:1406 msgid "url" msgstr "url" -#: core/models.py:1391 +#: core/models.py:1407 msgid "param" msgstr "param" -#: core/models.py:1396 +#: core/models.py:1412 msgid "viewed" msgstr "vue" @@ -2469,7 +2469,7 @@ msgstr "Forum" msgid "Gallery" msgstr "Photos" -#: core/templates/core/base.jinja:181 counter/models.py:219 +#: core/templates/core/base.jinja:181 counter/models.py:223 #: counter/templates/counter/counter_list.jinja:11 #: eboutic/templates/eboutic/eboutic_main.jinja:4 #: eboutic/templates/eboutic/eboutic_main.jinja:24 @@ -2487,7 +2487,7 @@ msgstr "Services" msgid "Matmatronch" msgstr "Matmatronch" -#: core/templates/core/base.jinja:188 launderette/models.py:44 +#: core/templates/core/base.jinja:188 launderette/models.py:47 #: launderette/templates/launderette/launderette_book.jinja:5 #: launderette/templates/launderette/launderette_book_choose.jinja:4 #: launderette/templates/launderette/launderette_main.jinja:4 @@ -2495,7 +2495,7 @@ msgid "Launderette" msgstr "Laverie" #: core/templates/core/base.jinja:189 core/templates/core/file.jinja:20 -#: core/views/files.py:86 +#: core/views/files.py:84 msgid "Files" msgstr "Fichiers" @@ -2613,19 +2613,19 @@ msgstr "Propriétés" msgid "Owner: " msgstr "Propriétaire : " -#: core/templates/core/file_detail.jinja:26 sas/templates/sas/album.jinja:27 +#: core/templates/core/file_detail.jinja:26 sas/templates/sas/album.jinja:28 msgid "Clear clipboard" msgstr "Vider le presse-papier" -#: core/templates/core/file_detail.jinja:27 sas/templates/sas/album.jinja:28 +#: core/templates/core/file_detail.jinja:27 sas/templates/sas/album.jinja:29 msgid "Cut" msgstr "Couper" -#: core/templates/core/file_detail.jinja:28 sas/templates/sas/album.jinja:29 +#: core/templates/core/file_detail.jinja:28 sas/templates/sas/album.jinja:30 msgid "Paste" msgstr "Coller" -#: core/templates/core/file_detail.jinja:31 sas/templates/sas/album.jinja:32 +#: core/templates/core/file_detail.jinja:31 sas/templates/sas/album.jinja:33 msgid "Clipboard: " msgstr "Presse-papier : " @@ -2723,8 +2723,8 @@ msgstr "" "compte qui a accès." #: core/templates/core/login.jinja:18 -msgid "Please login to see this page." -msgstr "Merci de vous identifier pour voir cette page." +msgid "Please login or create an account to see this page." +msgstr "Merci de vous identifier ou de créer un compte pour voir cette page." #: core/templates/core/login.jinja:28 #: counter/templates/counter/counter_main.jinja:51 @@ -2735,6 +2735,10 @@ msgstr "login" msgid "Lost password?" msgstr "Mot de passe perdu ?" +#: core/templates/core/login.jinja:33 +msgid "Create account" +msgstr "Créer un compte" + #: core/templates/core/macros.jinja:35 msgid "Share on Facebook" msgstr "Partager sur Facebook" @@ -2752,7 +2756,7 @@ msgstr "Cotisant jusqu'au %(subscription_end)s" msgid "Account number: " msgstr "Numero de compte : " -#: core/templates/core/macros.jinja:88 launderette/models.py:193 +#: core/templates/core/macros.jinja:88 launderette/models.py:217 msgid "Slot" msgstr "Créneau" @@ -2761,23 +2765,23 @@ msgstr "Créneau" msgid "Tokens" msgstr "Jetons" -#: core/templates/core/macros.jinja:118 core/templates/core/macros.jinja:120 +#: core/templates/core/macros.jinja:119 core/templates/core/macros.jinja:121 msgid "Previous" msgstr "Précédent" -#: core/templates/core/macros.jinja:124 +#: core/templates/core/macros.jinja:125 msgid "current" msgstr "actuel" -#: core/templates/core/macros.jinja:130 core/templates/core/macros.jinja:132 +#: core/templates/core/macros.jinja:131 core/templates/core/macros.jinja:133 msgid "Next" msgstr "Suivant" -#: core/templates/core/macros.jinja:147 +#: core/templates/core/macros.jinja:149 msgid "Select All" msgstr "Tout sélectionner" -#: core/templates/core/macros.jinja:148 +#: core/templates/core/macros.jinja:150 msgid "Unselect All" msgstr "Tout désélectionner" @@ -2909,7 +2913,9 @@ msgstr "Vous avez correctement réinitialisé votre mot de passe !" msgid "" "It seems that this link has expired. To generate a new link, you can follow " "this link: " -msgstr "Il semble que le lien ai expiré. Pour générer un nouveau lien, tu peux suivre ce lien : " +msgstr "" +"Il semble que le lien ai expiré. Pour générer un nouveau lien, tu peux " +"suivre ce lien : " #: core/templates/core/password_reset_confirm.jinja:11 msgid "lost password" @@ -2990,7 +2996,7 @@ msgstr "Résultat de la recherche" msgid "Users" msgstr "Utilisateurs" -#: core/templates/core/search.jinja:18 core/views/user.py:258 +#: core/templates/core/search.jinja:18 core/views/user.py:247 #: counter/templates/counter/stats.jinja:17 msgid "Clubs" msgstr "Clubs" @@ -3221,8 +3227,8 @@ msgstr "Parrains de %(user_name)s" msgid "Show family picture" msgstr "Voir une image de la famille" -#: core/templates/core/user_godfathers.jinja:12 core/views/user.py:216 -#: core/views/user.py:488 +#: core/templates/core/user_godfathers.jinja:12 core/views/user.py:205 +#: core/views/user.py:477 msgid "Godfathers" msgstr "Parrains" @@ -3235,7 +3241,7 @@ msgstr "Voir l'arbre des ancêtres" msgid "No godfathers" msgstr "Pas de parrains" -#: core/templates/core/user_godfathers.jinja:25 core/views/user.py:486 +#: core/templates/core/user_godfathers.jinja:25 core/views/user.py:475 msgid "Godchildren" msgstr "Fillots" @@ -3291,11 +3297,11 @@ msgid "%(user_name)s's pictures" msgstr "Photos de %(user_name)s" #: core/templates/core/user_preferences.jinja:4 -#: core/templates/core/user_preferences.jinja:8 core/views/user.py:248 +#: core/templates/core/user_preferences.jinja:8 core/views/user.py:237 msgid "Preferences" msgstr "Préférences" -#: core/templates/core/user_preferences.jinja:14 trombi/views.py:55 +#: core/templates/core/user_preferences.jinja:14 trombi/views.py:56 msgid "Trombi" msgstr "Trombi" @@ -3357,7 +3363,7 @@ msgstr "Outils utilisateurs" msgid "Sith management" msgstr "Gestion de Sith" -#: core/templates/core/user_tools.jinja:14 core/views/user.py:268 +#: core/templates/core/user_tools.jinja:14 core/views/user.py:257 msgid "Groups" msgstr "Groupes" @@ -3407,7 +3413,7 @@ msgstr "Relevés de caisse" msgid "Invoices call" msgstr "Appels à facture" -#: core/templates/core/user_tools.jinja:43 core/views/user.py:288 +#: core/templates/core/user_tools.jinja:43 core/views/user.py:277 #: counter/templates/counter/counter_list.jinja:18 #: counter/templates/counter/counter_list.jinja:34 #: counter/templates/counter/counter_list.jinja:56 @@ -3505,22 +3511,22 @@ msgstr "Convertir de la syntaxe dokuwiki/BBcode vers Markdown" msgid "Trombi tools" msgstr "Outils Trombi" -#: core/views/files.py:82 +#: core/views/files.py:80 msgid "Add a new folder" msgstr "Ajouter un nouveau dossier" -#: core/views/files.py:103 +#: core/views/files.py:101 #, python-format msgid "Error creating folder %(folder_name)s: %(msg)s" msgstr "Erreur de création du dossier %(folder_name)s : %(msg)s" -#: core/views/files.py:123 core/views/forms.py:323 core/views/forms.py:330 -#: sas/views.py:93 +#: core/views/files.py:121 core/views/forms.py:323 core/views/forms.py:330 +#: sas/views.py:94 #, python-format msgid "Error uploading file %(file_name)s: %(msg)s" msgstr "Erreur d'envoi du fichier %(file_name)s : %(msg)s" -#: core/views/files.py:198 sas/views.py:356 +#: core/views/files.py:196 sas/views.py:372 msgid "Apply rights recursively" msgstr "Appliquer les droits récursivement" @@ -3636,17 +3642,17 @@ msgstr "Parrain" msgid "Godchild" msgstr "Fillot" -#: core/views/forms.py:358 counter/views.py:154 trombi/views.py:141 +#: core/views/forms.py:358 counter/views.py:154 trombi/views.py:156 msgid "Select user" msgstr "Choisir un utilisateur" #: core/views/forms.py:371 core/views/forms.py:389 election/models.py:24 -#: election/views.py:167 +#: election/views.py:154 msgid "edit groups" msgstr "groupe d'édition" #: core/views/forms.py:374 core/views/forms.py:392 election/models.py:31 -#: election/views.py:170 +#: election/views.py:157 msgid "view groups" msgstr "groupe de vue" @@ -3658,16 +3664,16 @@ msgstr "Utilisateurs à retirer du groupe" msgid "Users to add to group" msgstr "Utilisateurs à ajouter au groupe" -#: core/views/user.py:225 trombi/templates/trombi/export.jinja:25 +#: core/views/user.py:214 trombi/templates/trombi/export.jinja:25 #: trombi/templates/trombi/user_profile.jinja:11 msgid "Pictures" msgstr "Photos" -#: core/views/user.py:490 +#: core/views/user.py:479 msgid "Family" msgstr "Famille" -#: core/views/user.py:632 +#: core/views/user.py:621 msgid "User already has a profile picture" msgstr "L'utilisateur a déjà une photo de profil" @@ -3716,163 +3722,166 @@ msgstr "prix de vente spécial" msgid "icon" msgstr "icône" -#: counter/models.py:167 +#: counter/models.py:169 msgid "limit age" msgstr "âge limite" -#: counter/models.py:168 +#: counter/models.py:170 msgid "tray price" msgstr "prix plateau" -#: counter/models.py:172 +#: counter/models.py:174 msgid "parent product" msgstr "produit parent" -#: counter/models.py:178 +#: counter/models.py:180 msgid "buying groups" msgstr "groupe d'achat" -#: counter/models.py:180 election/models.py:52 +#: counter/models.py:182 election/models.py:52 msgid "archived" msgstr "archivé" -#: counter/models.py:183 counter/models.py:702 +#: counter/models.py:185 counter/models.py:738 msgid "product" msgstr "produit" -#: counter/models.py:214 +#: counter/models.py:218 msgid "products" msgstr "produits" -#: counter/models.py:217 +#: counter/models.py:221 msgid "counter type" msgstr "type de comptoir" -#: counter/models.py:219 +#: counter/models.py:223 msgid "Bar" msgstr "Bar" -#: counter/models.py:219 +#: counter/models.py:223 msgid "Office" msgstr "Bureau" -#: counter/models.py:222 +#: counter/models.py:226 msgid "sellers" msgstr "vendeurs" -#: counter/models.py:230 launderette/models.py:188 +#: counter/models.py:234 launderette/models.py:207 msgid "token" msgstr "jeton" -#: counter/models.py:233 counter/models.py:589 counter/models.py:613 -#: launderette/models.py:40 stock/models.py:42 +#: counter/models.py:237 counter/models.py:613 counter/models.py:643 +#: launderette/models.py:41 stock/models.py:43 msgid "counter" msgstr "comptoir" -#: counter/models.py:361 +#: counter/models.py:372 msgid "bank" msgstr "banque" -#: counter/models.py:363 counter/models.py:453 +#: counter/models.py:374 counter/models.py:464 msgid "is validated" msgstr "est validé" -#: counter/models.py:366 +#: counter/models.py:377 msgid "refilling" msgstr "rechargement" -#: counter/models.py:430 eboutic/models.py:146 +#: counter/models.py:441 eboutic/models.py:154 msgid "unit price" msgstr "prix unitaire" -#: counter/models.py:431 counter/models.py:689 eboutic/models.py:147 +#: counter/models.py:442 counter/models.py:723 eboutic/models.py:155 msgid "quantity" msgstr "quantité" -#: counter/models.py:450 +#: counter/models.py:461 msgid "Sith account" msgstr "Compte utilisateur" -#: counter/models.py:450 sith/settings.py:369 sith/settings.py:374 +#: counter/models.py:461 sith/settings.py:369 sith/settings.py:374 #: sith/settings.py:392 msgid "Credit card" msgstr "Carte bancaire" -#: counter/models.py:456 +#: counter/models.py:467 msgid "selling" msgstr "vente" -#: counter/models.py:479 +#: counter/models.py:490 msgid "Unknown event" msgstr "Événement inconnu" -#: counter/models.py:480 +#: counter/models.py:491 #, python-format msgid "Eticket bought for the event %(event)s" msgstr "Eticket acheté pour l'événement %(event)s" -#: counter/models.py:482 counter/models.py:496 +#: counter/models.py:493 counter/models.py:508 #, python-format msgid "" "You bought an eticket for the event %(event)s.\n" -"You can download it on this page %(url)s." +"You can download it directly from this link %(eticket)s.\n" +"You can also retrieve all your e-tickets on your account page %(url)s." msgstr "" -"Vous avez acheté un Eticket pour l'événement %(event)s.\n" -"Vous pouvez le télécharger sur cette page: %(url)s" +"Vous avez acheté un e-ticket pour l'événement %(event)s.\n" +"Vous pouvez le télécharger directement depuis ce lien: %(eticket)s.\n" +"Vous pouvez également retrouver tous vos e-tickets sur votre page de compte " +"%(url)s." -#: counter/models.py:593 +#: counter/models.py:618 msgid "last activity date" msgstr "dernière activité" -#: counter/models.py:596 +#: counter/models.py:621 msgid "permanency" msgstr "permanence" -#: counter/models.py:617 +#: counter/models.py:648 msgid "emptied" msgstr "coffre vidée" -#: counter/models.py:620 +#: counter/models.py:651 msgid "cash register summary" msgstr "relevé de caisse" -#: counter/models.py:686 +#: counter/models.py:719 msgid "cash summary" msgstr "relevé" -#: counter/models.py:688 +#: counter/models.py:722 msgid "value" msgstr "valeur" -#: counter/models.py:690 +#: counter/models.py:724 msgid "check" msgstr "chèque" -#: counter/models.py:693 +#: counter/models.py:727 msgid "cash register summary item" msgstr "élément de relevé de caisse" -#: counter/models.py:705 +#: counter/models.py:742 msgid "banner" msgstr "bannière" -#: counter/models.py:707 +#: counter/models.py:744 msgid "event date" msgstr "date de l'événement" -#: counter/models.py:709 +#: counter/models.py:746 msgid "event title" msgstr "titre de l'événement" -#: counter/models.py:711 +#: counter/models.py:748 msgid "secret" msgstr "secret" -#: counter/models.py:767 +#: counter/models.py:804 msgid "uid" msgstr "uid" -#: counter/models.py:772 +#: counter/models.py:809 msgid "student cards" msgstr "cartes étudiante" @@ -4286,27 +4295,27 @@ msgstr "Nombre de chèque" msgid "people(s)" msgstr "personne(s)" -#: eboutic/models.py:86 +#: eboutic/models.py:94 msgid "validated" msgstr "validé" -#: eboutic/models.py:99 +#: eboutic/models.py:107 msgid "Invoice already validated" msgstr "Facture déjà validée" -#: eboutic/models.py:143 +#: eboutic/models.py:151 msgid "product id" msgstr "ID du produit" -#: eboutic/models.py:144 +#: eboutic/models.py:152 msgid "product name" msgstr "nom du produit" -#: eboutic/models.py:145 +#: eboutic/models.py:153 msgid "product type id" msgstr "id du type du produit" -#: eboutic/models.py:161 +#: eboutic/models.py:170 msgid "basket" msgstr "panier" @@ -4357,27 +4366,27 @@ msgstr "début des candidatures" msgid "end candidature" msgstr "fin des candidatures" -#: election/models.py:38 election/views.py:173 +#: election/models.py:38 election/views.py:160 msgid "vote groups" msgstr "groupe de vote" -#: election/models.py:45 election/views.py:180 +#: election/models.py:45 election/views.py:167 msgid "candidature groups" msgstr "groupe de candidature" -#: election/models.py:114 election/models.py:158 +#: election/models.py:116 election/models.py:163 msgid "election" msgstr "élection" -#: election/models.py:118 +#: election/models.py:121 msgid "max choice" msgstr "nombre de choix maxi" -#: election/models.py:184 +#: election/models.py:201 msgid "election list" msgstr "liste électorale" -#: election/models.py:206 +#: election/models.py:226 msgid "candidature" msgstr "candidature" @@ -4425,7 +4434,7 @@ msgstr "Vous avez déjà soumis votre vote." msgid "You have voted in this election." msgstr "Vous avez déjà voté pour cette élection." -#: election/templates/election/election_detail.jinja:266 election/views.py:106 +#: election/templates/election/election_detail.jinja:266 election/views.py:93 msgid "Blank vote" msgstr "Vote blanc" @@ -4494,23 +4503,23 @@ msgstr "au" msgid "Polls open from" msgstr "Votes ouverts du" -#: election/views.py:57 +#: election/views.py:44 msgid "You have selected too much candidates." msgstr "Vous avez sélectionné trop de candidats." -#: election/views.py:73 +#: election/views.py:60 msgid "User to candidate" msgstr "Utilisateur se présentant" -#: election/views.py:131 +#: election/views.py:118 msgid "This role already exists for this election" msgstr "Ce rôle existe déjà pour cette élection" -#: election/views.py:194 +#: election/views.py:184 msgid "Start candidature" msgstr "Début des candidatures" -#: election/views.py:200 +#: election/views.py:190 msgid "End candidature" msgstr "Fin des candidatures" @@ -4518,63 +4527,63 @@ msgstr "Fin des candidatures" msgid "is a category" msgstr "est une catégorie" -#: forum/models.py:65 +#: forum/models.py:71 msgid "owner club" msgstr "club propriétaire" -#: forum/models.py:81 +#: forum/models.py:88 msgid "number to choose a specific forum ordering" msgstr "numéro spécifiant l'ordre d'affichage" -#: forum/models.py:86 forum/models.py:238 +#: forum/models.py:93 forum/models.py:247 msgid "the last message" msgstr "le dernier message" -#: forum/models.py:90 +#: forum/models.py:97 msgid "number of topics" msgstr "nombre de sujets" -#: forum/models.py:177 +#: forum/models.py:184 msgid "You can not make loops in forums" msgstr "Vous ne pouvez pas faire de boucles dans les forums" -#: forum/models.py:233 +#: forum/models.py:242 msgid "subscribed users" msgstr "utilisateurs abonnés" -#: forum/models.py:243 +#: forum/models.py:252 msgid "number of messages" msgstr "nombre de messages" -#: forum/models.py:297 +#: forum/models.py:310 msgid "message" msgstr "message" -#: forum/models.py:300 +#: forum/models.py:313 msgid "readers" msgstr "lecteurs" -#: forum/models.py:302 +#: forum/models.py:315 msgid "is deleted" msgstr "est supprimé" -#: forum/models.py:382 +#: forum/models.py:395 msgid "Message edited by" msgstr "Message édité par" -#: forum/models.py:383 +#: forum/models.py:396 msgid "Message deleted by" msgstr "Message supprimé par" -#: forum/models.py:384 +#: forum/models.py:397 msgid "Message undeleted by" msgstr "Message restauré par" -#: forum/models.py:392 +#: forum/models.py:409 msgid "action" msgstr "action" -#: forum/models.py:409 +#: forum/models.py:428 msgid "last read date" msgstr "dernière date de lecture" @@ -4667,31 +4676,31 @@ msgstr "Appliquer les droits et le club propriétaire récursivement" msgid "%(author)s said" msgstr "Citation de %(author)s" -#: launderette/models.py:92 launderette/models.py:127 +#: launderette/models.py:97 launderette/models.py:135 msgid "launderette" msgstr "laverie" -#: launderette/models.py:97 +#: launderette/models.py:103 msgid "is working" msgstr "fonctionne" -#: launderette/models.py:100 +#: launderette/models.py:106 msgid "Machine" msgstr "Machine" -#: launderette/models.py:132 +#: launderette/models.py:141 msgid "borrow date" msgstr "date d'emprunt" -#: launderette/models.py:138 +#: launderette/models.py:152 msgid "Token" msgstr "Jeton" -#: launderette/models.py:144 +#: launderette/models.py:158 msgid "Token name can not be blank" msgstr "Le nom du jeton ne peut pas être vide" -#: launderette/models.py:185 +#: launderette/models.py:201 msgid "machine" msgstr "machine" @@ -4789,15 +4798,15 @@ msgstr "Recherche inversée" msgid "Quick search" msgstr "Recherche rapide" -#: matmat/views.py:73 +#: matmat/views.py:76 msgid "Indifferent" msgstr "Indifferent" -#: matmat/views.py:76 +#: matmat/views.py:80 msgid "Sex" msgstr "Sexe" -#: matmat/views.py:79 +#: matmat/views.py:83 msgid "Last/First name or nickname" msgstr "Nom de famille, prénom ou surnom" @@ -4825,103 +4834,103 @@ msgstr "" "Le code d'une UV doit seulement contenire des caractères majuscule sans " "accents et nombres" -#: pedagogy/models.py:66 +#: pedagogy/models.py:67 msgid "credit type" msgstr "type de crédit" -#: pedagogy/models.py:71 pedagogy/models.py:101 +#: pedagogy/models.py:72 pedagogy/models.py:102 msgid "uv manager" msgstr "gestionnaire d'uv" -#: pedagogy/models.py:79 +#: pedagogy/models.py:80 msgid "language" msgstr "langue" -#: pedagogy/models.py:85 +#: pedagogy/models.py:86 msgid "credits" msgstr "crédits" -#: pedagogy/models.py:93 +#: pedagogy/models.py:94 msgid "departmenmt" msgstr "département" -#: pedagogy/models.py:102 +#: pedagogy/models.py:103 msgid "objectives" msgstr "objecifs" -#: pedagogy/models.py:103 +#: pedagogy/models.py:104 msgid "program" msgstr "programme" -#: pedagogy/models.py:104 +#: pedagogy/models.py:105 msgid "skills" msgstr "compétences" -#: pedagogy/models.py:105 +#: pedagogy/models.py:106 msgid "key concepts" msgstr "concepts clefs" -#: pedagogy/models.py:110 +#: pedagogy/models.py:111 msgid "hours CM" msgstr "heures CM" -#: pedagogy/models.py:117 +#: pedagogy/models.py:118 msgid "hours TD" msgstr "heures TD" -#: pedagogy/models.py:124 +#: pedagogy/models.py:125 msgid "hours TP" msgstr "heures TP" -#: pedagogy/models.py:131 +#: pedagogy/models.py:132 msgid "hours THE" msgstr "heures THE" -#: pedagogy/models.py:138 +#: pedagogy/models.py:139 msgid "hours TE" msgstr "heures TE" -#: pedagogy/models.py:214 pedagogy/models.py:286 +#: pedagogy/models.py:217 pedagogy/models.py:291 msgid "uv" msgstr "uv" -#: pedagogy/models.py:217 +#: pedagogy/models.py:221 msgid "global grade" msgstr "note globale" -#: pedagogy/models.py:224 +#: pedagogy/models.py:228 msgid "utility grade" msgstr "note d'utilité" -#: pedagogy/models.py:231 +#: pedagogy/models.py:235 msgid "interest grade" msgstr "note d'intérêt" -#: pedagogy/models.py:238 +#: pedagogy/models.py:242 msgid "teaching grade" msgstr "note d'enseignement" -#: pedagogy/models.py:245 +#: pedagogy/models.py:249 msgid "work load grade" msgstr "note de charge de travail" -#: pedagogy/models.py:251 +#: pedagogy/models.py:255 msgid "publish date" msgstr "date de publication" -#: pedagogy/models.py:289 +#: pedagogy/models.py:297 msgid "grade" msgstr "note" -#: pedagogy/models.py:309 +#: pedagogy/models.py:317 msgid "report" msgstr "signaler" -#: pedagogy/models.py:313 +#: pedagogy/models.py:323 msgid "reporter" msgstr "signalant" -#: pedagogy/models.py:315 +#: pedagogy/models.py:326 msgid "reason" msgstr "raison" @@ -5110,26 +5119,26 @@ msgstr "Utilisateur qui sera supprimé" msgid "User to be selected" msgstr "Utilisateur à sélectionner" -#: sas/models.py:243 +#: sas/models.py:252 msgid "picture" msgstr "photo" -#: sas/templates/sas/album.jinja:4 sas/templates/sas/main.jinja:4 +#: sas/templates/sas/album.jinja:5 sas/templates/sas/main.jinja:4 #: sas/templates/sas/main.jinja:32 sas/templates/sas/picture.jinja:34 msgid "SAS" msgstr "SAS" -#: sas/templates/sas/album.jinja:52 sas/templates/sas/album.jinja:54 +#: sas/templates/sas/album.jinja:53 sas/templates/sas/album.jinja:55 #: sas/templates/sas/main.jinja:13 sas/templates/sas/main.jinja:15 #: sas/templates/sas/main.jinja:17 msgid "preview" msgstr "miniature" -#: sas/templates/sas/album.jinja:86 +#: sas/templates/sas/album.jinja:89 msgid "Upload" msgstr "Envoyer" -#: sas/templates/sas/album.jinja:88 +#: sas/templates/sas/album.jinja:91 msgid "Template generation time: " msgstr "Temps de génération du template : " @@ -5173,28 +5182,28 @@ msgstr "Demander le retrait" msgid "Asked for removal" msgstr "Retrait demandé" -#: sas/views.py:48 +#: sas/views.py:49 msgid "Add a new album" msgstr "Ajouter un nouvel album" -#: sas/views.py:52 +#: sas/views.py:53 msgid "Upload images" msgstr "Envoyer les images" -#: sas/views.py:70 +#: sas/views.py:71 #, python-format msgid "Error creating album %(album)s: %(msg)s" msgstr "Erreur de création de l'album %(album)s : %(msg)s" -#: sas/views.py:105 trombi/templates/trombi/detail.jinja:15 +#: sas/views.py:106 trombi/templates/trombi/detail.jinja:15 msgid "Add user" msgstr "Ajouter une personne" -#: sith/settings.py:217 sith/settings.py:429 +#: sith/settings.py:216 sith/settings.py:429 msgid "English" msgstr "Anglais" -#: sith/settings.py:217 sith/settings.py:428 +#: sith/settings.py:216 sith/settings.py:428 msgid "French" msgstr "Français" @@ -5547,27 +5556,27 @@ msgstr "Weekmail envoyé avec succès" msgid "AE tee-shirt" msgstr "Tee-shirt AE" -#: stock/models.py:62 +#: stock/models.py:65 msgid "unit quantity" msgstr "quantité unitaire" -#: stock/models.py:62 +#: stock/models.py:65 msgid "number of element in one box" msgstr "nombre d'éléments par boîte" -#: stock/models.py:65 +#: stock/models.py:68 msgid "effective quantity" msgstr "quantité effective" -#: stock/models.py:65 +#: stock/models.py:68 msgid "number of box" msgstr "nombre de boîtes" -#: stock/models.py:68 +#: stock/models.py:71 msgid "minimal quantity" msgstr "quantité minimale" -#: stock/models.py:71 +#: stock/models.py:74 msgid "" "if the effective quantity is less than the minimal, item is added to the " "shopping list" @@ -5575,27 +5584,27 @@ msgstr "" "si la quantité effective est en dessous du minima, l'item est ajouté àla " "liste de courses" -#: stock/models.py:101 +#: stock/models.py:106 msgid "todo" msgstr "à faire" -#: stock/models.py:121 +#: stock/models.py:128 msgid "shopping lists" msgstr "listes de courses" -#: stock/models.py:137 +#: stock/models.py:144 msgid "quantity to buy" msgstr "quantité à acheter" -#: stock/models.py:139 +#: stock/models.py:146 msgid "quantity to buy during the next shopping session" msgstr "quantité à acheter pendant les prochaines courses" -#: stock/models.py:142 +#: stock/models.py:149 msgid "quantity bought" msgstr "quantité achetée" -#: stock/models.py:144 +#: stock/models.py:151 msgid "quantity bought during the last shopping session" msgstr "quantité achetée pendant les dernières courses" @@ -5749,27 +5758,27 @@ msgstr "Mauvais type de cotisation" msgid "Bad payment method" msgstr "Mauvais type de paiement" -#: subscription/models.py:55 +#: subscription/models.py:57 msgid "subscription type" msgstr "type d'inscription" -#: subscription/models.py:61 +#: subscription/models.py:63 msgid "subscription start" msgstr "début de la cotisation" -#: subscription/models.py:62 +#: subscription/models.py:64 msgid "subscription end" msgstr "fin de la cotisation" -#: subscription/models.py:71 +#: subscription/models.py:73 msgid "location" msgstr "lieu" -#: subscription/models.py:91 +#: subscription/models.py:93 msgid "You can not subscribe many time for the same period" msgstr "Vous ne pouvez pas cotiser plusieurs fois pour la même période" -#: subscription/models.py:96 +#: subscription/models.py:98 msgid "Subscription error" msgstr "Erreur de cotisation" @@ -5835,19 +5844,19 @@ msgid "" msgstr "" "Fermer les inscriptions après les commentaires est vraiment une idée pourrie." -#: trombi/models.py:120 +#: trombi/models.py:121 msgid "trombi user" msgstr "utilisateur trombi" -#: trombi/models.py:124 +#: trombi/models.py:127 msgid "trombi" msgstr "trombi" -#: trombi/models.py:132 +#: trombi/models.py:135 msgid "profile pict" msgstr "photo de profil" -#: trombi/models.py:136 +#: trombi/models.py:139 msgid "" "The profile picture you want in the trombi (warning: this picture may be " "published)" @@ -5855,11 +5864,11 @@ msgstr "" "La photo de profil que vous souhaitez voir dans le Trombi (attention: cette " "photo risque d'être publiée)" -#: trombi/models.py:141 +#: trombi/models.py:144 msgid "scrub pict" msgstr "photo de blouse" -#: trombi/models.py:145 +#: trombi/models.py:148 msgid "" "The scrub picture you want in the trombi (warning: this picture may be " "published)" @@ -5867,19 +5876,19 @@ msgstr "" "La photo de blouse que vous souhaitez voir dans le Trombi (attention: cette " "photo risque d'être publiée)" -#: trombi/models.py:186 +#: trombi/models.py:193 msgid "target" msgstr "cible" -#: trombi/models.py:189 +#: trombi/models.py:198 msgid "is the comment moderated" msgstr "le commentaire est modéré" -#: trombi/models.py:207 +#: trombi/models.py:219 msgid "start" msgstr "début" -#: trombi/models.py:208 +#: trombi/models.py:220 msgid "end" msgstr "fin" @@ -5985,16 +5994,16 @@ msgstr "Trombi de %(user_name)s" msgid "Trombi'" msgstr "Trombi'" -#: trombi/templates/trombi/user_tools.jinja:16 +#: trombi/templates/trombi/user_tools.jinja:17 #, python-format msgid "You are subscribed to the Trombi %(trombi)s" msgstr "Vous êtes inscrit au Trombi %(trombi)s" -#: trombi/templates/trombi/user_tools.jinja:21 +#: trombi/templates/trombi/user_tools.jinja:22 msgid "You can not write comments at this date." msgstr "Vous ne pouvez pas commenter à cette date." -#: trombi/templates/trombi/user_tools.jinja:23 +#: trombi/templates/trombi/user_tools.jinja:24 #, python-format msgid "" "Comments are only allowed between %(start)s (excluded) and %(end)s (included)" @@ -6002,31 +6011,31 @@ msgstr "" "Les commentaires sont autorisés entre le %(start)s (exclu) et le %(end)s " "(inclu)" -#: trombi/templates/trombi/user_tools.jinja:48 +#: trombi/templates/trombi/user_tools.jinja:49 msgid "Edit comment" msgstr "Éditer le commentaire" -#: trombi/views.py:66 +#: trombi/views.py:68 msgid "My profile" msgstr "Mon profil" -#: trombi/views.py:73 +#: trombi/views.py:75 msgid "My pictures" msgstr "Mes photos" -#: trombi/views.py:85 +#: trombi/views.py:87 msgid "Admin tools" msgstr "Admin Trombi" -#: trombi/views.py:205 +#: trombi/views.py:220 msgid "Explain why you rejected the comment" msgstr "Expliquez pourquoi vous refusez le commentaire" -#: trombi/views.py:238 +#: trombi/views.py:253 msgid "Rejected comment" msgstr "Commentaire rejeté" -#: trombi/views.py:240 +#: trombi/views.py:255 #, python-format msgid "" "Your comment to %(target)s on the Trombi \"%(trombi)s\" was rejected for the " @@ -6043,16 +6052,16 @@ msgstr "" "\n" "%(content)s" -#: trombi/views.py:272 +#: trombi/views.py:287 #, python-format msgid "%(name)s (deadline: %(date)s)" msgstr "%(name)s (date limite: %(date)s)" -#: trombi/views.py:282 +#: trombi/views.py:297 msgid "Select trombi" msgstr "Choisir un trombi" -#: trombi/views.py:284 +#: trombi/views.py:299 msgid "" "This allows you to subscribe to a Trombi. Be aware that you can subscribe " "only once, so don't play with that, or you will expose yourself to the " @@ -6062,19 +6071,19 @@ msgstr "" "pouvez vous inscrire qu'à un seul Trombi, donc ne jouez pas avec cet option " "ou vous encourerez la colère des admins!" -#: trombi/views.py:346 +#: trombi/views.py:372 msgid "Personal email (not UTBM)" msgstr "Email personnel (pas UTBM)" -#: trombi/views.py:347 +#: trombi/views.py:373 msgid "Phone" msgstr "Téléphone" -#: trombi/views.py:348 +#: trombi/views.py:374 msgid "Native town" msgstr "Ville d'origine" -#: trombi/views.py:432 +#: trombi/views.py:458 msgid "" "You can not yet write comment, you must wait for the subscription deadline " "to be passed." @@ -6082,11 +6091,11 @@ msgstr "" "Vous ne pouvez pas encore écrire de commentaires, vous devez attendre la fin " "des inscriptions" -#: trombi/views.py:439 +#: trombi/views.py:465 msgid "You can not write comment anymore, the deadline is already passed." msgstr "Vous ne pouvez plus écrire de commentaires, la date est passée." -#: trombi/views.py:452 +#: trombi/views.py:478 #, python-format msgid "Maximum characters: %(max_length)s" msgstr "Nombre de caractères max: %(max_length)s"