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"