diff --git a/counter/models.py b/counter/models.py index 584bb99a..04c7073a 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 retreive all your e-tickets on your account page %(url)s." ) % { "event": event, "url": "".join( @@ -502,10 +502,15 @@ class Selling(models.Model): "", ) ), + "eticket": "" + 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 retreive 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 +573,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 +588,20 @@ 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 c7e99d71..e0c792f0 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-10-12 17:41+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:253 -#: com/models.py:270 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:241 com/models.py:274 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:378 +#: 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é" @@ -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 @@ -531,7 +531,7 @@ msgid "Effective amount" msgstr "Montant effectif" #: accounting/templates/accounting/club_account_details.jinja:36 -#: sith/settings.py:422 +#: sith/settings.py:421 msgid "Closed" msgstr "Fermé" @@ -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" @@ -1002,11 +1002,11 @@ msgstr "Vous devez choisir un rôle" 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:243 -#: 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:282 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:286 +#: 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,7 +1363,7 @@ msgstr "Anciens membres" msgid "History" msgstr "Historique" -#: club/views.py:115 core/templates/core/base.jinja:119 core/views/user.py:230 +#: 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:161 com/models.py:235 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:236 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:238 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:162 +#: com/models.py:176 msgid "intro" msgstr "intro" -#: com/models.py:163 +#: com/models.py:177 msgid "joke" msgstr "blague" -#: com/models.py:164 +#: com/models.py:178 msgid "protip" msgstr "astuce" -#: com/models.py:165 +#: com/models.py:179 msgid "conclusion" msgstr "conclusion" -#: com/models.py:166 +#: com/models.py:180 msgid "sent" msgstr "envoyé" -#: com/models.py:233 +#: com/models.py:249 msgid "weekmail" msgstr "weekmail" -#: com/models.py:243 +#: com/models.py:267 msgid "rank" msgstr "rang" -#: com/models.py:272 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:280 +#: com/models.py:308 msgid "display time" msgstr "temps d'affichage" -#: com/models.py:307 +#: 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" @@ -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:191 +#: 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:194 +#: 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,13 +2469,13 @@ 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 #: eboutic/templates/eboutic/eboutic_makecommand.jinja:8 #: eboutic/templates/eboutic/eboutic_payment_result.jinja:4 -#: sith/settings.py:377 sith/settings.py:385 +#: sith/settings.py:376 sith/settings.py:384 msgid "Eboutic" msgstr "Eboutic" @@ -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 @@ -2756,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" @@ -2996,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" @@ -3227,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" @@ -3241,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" @@ -3297,7 +3297,7 @@ 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" @@ -3363,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" @@ -3413,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 @@ -3647,12 +3647,12 @@ 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" @@ -3664,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" @@ -3722,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:370 sith/settings.py:375 -#: sith/settings.py:393 +#: 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 retreive 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" @@ -4292,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" @@ -4363,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" @@ -4431,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" @@ -4500,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" @@ -4524,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" @@ -4673,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" @@ -4722,12 +4725,12 @@ msgid "Washing and drying" msgstr "Lavage et séchage" #: launderette/templates/launderette/launderette_book.jinja:27 -#: sith/settings.py:584 +#: sith/settings.py:583 msgid "Washing" msgstr "Lavage" #: launderette/templates/launderette/launderette_book.jinja:31 -#: sith/settings.py:584 +#: sith/settings.py:583 msgid "Drying" msgstr "Séchage" @@ -4795,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" @@ -4831,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" @@ -5116,7 +5119,7 @@ msgstr "Utilisateur qui sera supprimé" msgid "User to be selected" msgstr "Utilisateur à sélectionner" -#: sas/models.py:247 +#: sas/models.py:252 msgid "picture" msgstr "photo" @@ -5196,384 +5199,384 @@ msgstr "Erreur de création de l'album %(album)s : %(msg)s" msgid "Add user" msgstr "Ajouter une personne" -#: sith/settings.py:217 sith/settings.py:430 +#: sith/settings.py:216 sith/settings.py:429 msgid "English" msgstr "Anglais" -#: sith/settings.py:217 sith/settings.py:429 +#: sith/settings.py:216 sith/settings.py:428 msgid "French" msgstr "Français" -#: sith/settings.py:351 +#: sith/settings.py:350 msgid "TC" msgstr "TC" -#: sith/settings.py:352 +#: sith/settings.py:351 msgid "IMSI" msgstr "IMSI" -#: sith/settings.py:353 +#: sith/settings.py:352 msgid "IMAP" msgstr "IMAP" -#: sith/settings.py:354 +#: sith/settings.py:353 msgid "INFO" msgstr "INFO" -#: sith/settings.py:355 +#: sith/settings.py:354 msgid "GI" msgstr "GI" -#: sith/settings.py:356 sith/settings.py:440 +#: sith/settings.py:355 sith/settings.py:439 msgid "E" msgstr "E" -#: sith/settings.py:357 +#: sith/settings.py:356 msgid "EE" msgstr "EE" -#: sith/settings.py:358 +#: sith/settings.py:357 msgid "GESC" msgstr "GESC" -#: sith/settings.py:359 +#: sith/settings.py:358 msgid "GMC" msgstr "GMC" -#: sith/settings.py:360 +#: sith/settings.py:359 msgid "MC" msgstr "MC" -#: sith/settings.py:361 +#: sith/settings.py:360 msgid "EDIM" msgstr "EDIM" -#: sith/settings.py:362 +#: sith/settings.py:361 msgid "Humanities" msgstr "Humanités" -#: sith/settings.py:363 +#: sith/settings.py:362 msgid "N/A" msgstr "N/A" -#: sith/settings.py:367 sith/settings.py:374 sith/settings.py:391 +#: sith/settings.py:366 sith/settings.py:373 sith/settings.py:390 msgid "Check" msgstr "Chèque" -#: sith/settings.py:368 sith/settings.py:376 sith/settings.py:392 +#: sith/settings.py:367 sith/settings.py:375 sith/settings.py:391 msgid "Cash" msgstr "Espèces" -#: sith/settings.py:369 +#: sith/settings.py:368 msgid "Transfert" msgstr "Virement" -#: sith/settings.py:382 +#: sith/settings.py:381 msgid "Belfort" msgstr "Belfort" -#: sith/settings.py:383 +#: sith/settings.py:382 msgid "Sevenans" msgstr "Sevenans" -#: sith/settings.py:384 +#: sith/settings.py:383 msgid "Montbéliard" msgstr "Montbéliard" -#: sith/settings.py:410 +#: sith/settings.py:409 msgid "Free" msgstr "Libre" -#: sith/settings.py:411 +#: sith/settings.py:410 msgid "CS" msgstr "CS" -#: sith/settings.py:412 +#: sith/settings.py:411 msgid "TM" msgstr "TM" -#: sith/settings.py:413 +#: sith/settings.py:412 msgid "OM" msgstr "OM" -#: sith/settings.py:414 +#: sith/settings.py:413 msgid "QC" msgstr "QC" -#: sith/settings.py:415 +#: sith/settings.py:414 msgid "EC" msgstr "EC" -#: sith/settings.py:416 +#: sith/settings.py:415 msgid "RN" msgstr "RN" -#: sith/settings.py:417 +#: sith/settings.py:416 msgid "ST" msgstr "ST" -#: sith/settings.py:418 +#: sith/settings.py:417 msgid "EXT" msgstr "EXT" -#: sith/settings.py:423 +#: sith/settings.py:422 msgid "Autumn" msgstr "Automne" -#: sith/settings.py:424 +#: sith/settings.py:423 msgid "Spring" msgstr "Printemps" -#: sith/settings.py:425 +#: sith/settings.py:424 msgid "Autumn and spring" msgstr "Automne et printemps" -#: sith/settings.py:431 +#: sith/settings.py:430 msgid "German" msgstr "Allemant" -#: sith/settings.py:432 +#: sith/settings.py:431 msgid "Spanich" msgstr "Espagnol" -#: sith/settings.py:436 +#: sith/settings.py:435 msgid "A" msgstr "A" -#: sith/settings.py:437 +#: sith/settings.py:436 msgid "B" msgstr "B" -#: sith/settings.py:438 +#: sith/settings.py:437 msgid "C" msgstr "C" -#: sith/settings.py:439 +#: sith/settings.py:438 msgid "D" msgstr "D" -#: sith/settings.py:441 +#: sith/settings.py:440 msgid "FX" msgstr "FX" -#: sith/settings.py:442 +#: sith/settings.py:441 msgid "F" msgstr "F" -#: sith/settings.py:443 +#: sith/settings.py:442 msgid "Abs" msgstr "Abs" -#: sith/settings.py:472 +#: sith/settings.py:471 msgid "One semester" msgstr "Un semestre, 15 €" -#: sith/settings.py:473 +#: sith/settings.py:472 msgid "Two semesters" msgstr "Deux semestres, 28 €" -#: sith/settings.py:475 +#: sith/settings.py:474 msgid "Common core cursus" msgstr "Cursus tronc commun, 45 €" -#: sith/settings.py:479 +#: sith/settings.py:478 msgid "Branch cursus" msgstr "Cursus branche, 45 €" -#: sith/settings.py:480 +#: sith/settings.py:479 msgid "Alternating cursus" msgstr "Cursus alternant, 30 €" -#: sith/settings.py:481 +#: sith/settings.py:480 msgid "Honorary member" msgstr "Membre honoraire, 0 €" -#: sith/settings.py:482 +#: sith/settings.py:481 msgid "Assidu member" msgstr "Membre d'Assidu, 0 €" -#: sith/settings.py:483 +#: sith/settings.py:482 msgid "Amicale/DOCEO member" msgstr "Membre de l'Amicale/DOCEO, 0 €" -#: sith/settings.py:484 +#: sith/settings.py:483 msgid "UT network member" msgstr "Cotisant du réseau UT, 0 €" -#: sith/settings.py:485 +#: sith/settings.py:484 msgid "CROUS member" msgstr "Membres du CROUS, 0 €" -#: sith/settings.py:486 +#: sith/settings.py:485 msgid "Sbarro/ESTA member" msgstr "Membre de Sbarro ou de l'ESTA, 15 €" -#: sith/settings.py:488 +#: sith/settings.py:487 msgid "One semester Welcome Week" msgstr "Un semestre Welcome Week" -#: sith/settings.py:492 +#: sith/settings.py:491 msgid "Two months for free" msgstr "Deux mois gratuits" -#: sith/settings.py:493 +#: sith/settings.py:492 msgid "Eurok's volunteer" msgstr "Bénévole Eurockéennes" -#: sith/settings.py:495 +#: sith/settings.py:494 msgid "Six weeks for free" msgstr "6 semaines gratuites" -#: sith/settings.py:499 +#: sith/settings.py:498 msgid "One day" msgstr "Un jour" -#: sith/settings.py:502 +#: sith/settings.py:501 msgid "One semester (-20%)" msgstr "Un semestre (-20%), 12 €" -#: sith/settings.py:507 +#: sith/settings.py:506 msgid "Two semesters (-20%)" msgstr "Deux semestres (-20%), 22 €" -#: sith/settings.py:512 +#: sith/settings.py:511 msgid "Common core cursus (-20%)" msgstr "Cursus tronc commun (-20%), 36 €" -#: sith/settings.py:517 +#: sith/settings.py:516 msgid "Branch cursus (-20%)" msgstr "Cursus branche (-20%), 36 €" -#: sith/settings.py:522 +#: sith/settings.py:521 msgid "Alternating cursus (-20%)" msgstr "Cursus alternant (-20%), 24 €" -#: sith/settings.py:544 +#: sith/settings.py:543 msgid "President" msgstr "Président" -#: sith/settings.py:545 +#: sith/settings.py:544 msgid "Vice-President" msgstr "Vice-Président" -#: sith/settings.py:546 +#: sith/settings.py:545 msgid "Treasurer" msgstr "Trésorier" -#: sith/settings.py:547 +#: sith/settings.py:546 msgid "Communication supervisor" msgstr "Responsable communication" -#: sith/settings.py:548 +#: sith/settings.py:547 msgid "Secretary" msgstr "Secrétaire" -#: sith/settings.py:549 +#: sith/settings.py:548 msgid "IT supervisor" msgstr "Responsable info" -#: sith/settings.py:550 +#: sith/settings.py:549 msgid "Board member" msgstr "Membre du bureau" -#: sith/settings.py:551 +#: sith/settings.py:550 msgid "Active member" msgstr "Membre actif" -#: sith/settings.py:552 +#: sith/settings.py:551 msgid "Curious" msgstr "Curieux" -#: sith/settings.py:588 +#: sith/settings.py:587 msgid "A new poster needs to be moderated" msgstr "Une nouvelle affiche a besoin d'être modérée" -#: sith/settings.py:589 +#: sith/settings.py:588 msgid "A new mailing list needs to be moderated" msgstr "Une nouvelle mailing list a besoin d'être modérée" -#: sith/settings.py:592 +#: sith/settings.py:591 msgid "A new pedagogy comment has been signaled for moderation" msgstr "" "Un nouveau commentaire de la pédagogie a été signalé pour la modération" -#: sith/settings.py:594 +#: sith/settings.py:593 #, python-format msgid "There are %s fresh news to be moderated" msgstr "Il y a %s nouvelles toutes fraîches à modérer" -#: sith/settings.py:595 +#: sith/settings.py:594 msgid "New files to be moderated" msgstr "Nouveaux fichiers à modérer" -#: sith/settings.py:596 +#: sith/settings.py:595 #, python-format msgid "There are %s pictures to be moderated in the SAS" msgstr "Il y a %s photos à modérer dans le SAS" -#: sith/settings.py:597 +#: sith/settings.py:596 msgid "You've been identified on some pictures" msgstr "Vous avez été identifié sur des photos" -#: sith/settings.py:598 +#: sith/settings.py:597 #, python-format msgid "You just refilled of %s €" msgstr "Vous avez rechargé votre compte de %s€" -#: sith/settings.py:599 +#: sith/settings.py:598 #, python-format msgid "You just bought %s" msgstr "Vous avez acheté %s" -#: sith/settings.py:600 +#: sith/settings.py:599 msgid "You have a notification" msgstr "Vous avez une notification" -#: sith/settings.py:612 +#: sith/settings.py:611 msgid "Success!" msgstr "Succès !" -#: sith/settings.py:613 +#: sith/settings.py:612 msgid "Fail!" msgstr "Échec !" -#: sith/settings.py:614 +#: sith/settings.py:613 msgid "You successfully posted an article in the Weekmail" msgstr "Article posté avec succès dans le Weekmail" -#: sith/settings.py:615 +#: sith/settings.py:614 msgid "You successfully edited an article in the Weekmail" msgstr "Article édité avec succès dans le Weekmail" -#: sith/settings.py:616 +#: sith/settings.py:615 msgid "You successfully sent the Weekmail" msgstr "Weekmail envoyé avec succès" -#: sith/settings.py:624 +#: sith/settings.py:623 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" @@ -5581,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" @@ -5755,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" @@ -5841,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)" @@ -5861,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)" @@ -5873,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"