Use phone number validator

This commit is contained in:
Yohann D'ANELLO 2020-08-05 14:14:51 +02:00
parent 6c9cf73848
commit acf7ecc4ae
7 changed files with 366 additions and 348 deletions

View File

@ -11,10 +11,10 @@ from django.db import models
from django.db.models import Q from django.db.models import Q
from django.template import loader from django.template import loader
from django.urls import reverse, reverse_lazy from django.urls import reverse, reverse_lazy
from django.utils import timezone
from django.utils.encoding import force_bytes from django.utils.encoding import force_bytes
from django.utils.http import urlsafe_base64_encode from django.utils.http import urlsafe_base64_encode
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from phonenumber_field.modelfields import PhoneNumberField
from permission.models import Role from permission.models import Role
from registration.tokens import email_validation_token from registration.tokens import email_validation_token
@ -34,7 +34,7 @@ class Profile(models.Model):
on_delete=models.CASCADE, on_delete=models.CASCADE,
) )
phone_number = models.CharField( phone_number = PhoneNumberField(
verbose_name=_('phone number'), verbose_name=_('phone number'),
max_length=50, max_length=50,
blank=True, blank=True,

View File

@ -69,7 +69,9 @@ class UserUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
form.fields['email'].required = True form.fields['email'].required = True
form.fields['email'].help_text = _("This address must be valid.") form.fields['email'].help_text = _("This address must be valid.")
context['profile_form'] = self.profile_form(instance=context['user_object'].profile) context['profile_form'] = self.profile_form(instance=context['user_object'].profile,
data=self.request.POST if self.request.POST else None)
return context return context
def form_valid(self, form): def form_valid(self, form):
@ -86,30 +88,33 @@ class UserUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
data=self.request.POST, data=self.request.POST,
instance=self.object.profile, instance=self.object.profile,
) )
if form.is_valid() and profile_form.is_valid(): profile_form.full_clean()
new_username = form.data['username'] if not profile_form.is_valid():
alias = Alias.objects.filter(name=new_username) return super().form_invalid(form)
# Si le nouveau pseudo n'est pas un de nos alias,
# on supprime éventuellement un alias similaire pour le remplacer
if not alias.exists():
similar = Alias.objects.filter(
normalized_name=Alias.normalize(new_username))
if similar.exists():
similar.delete()
olduser = User.objects.get(pk=form.instance.pk) new_username = form.data['username']
alias = Alias.objects.filter(name=new_username)
# Si le nouveau pseudo n'est pas un de nos alias,
# on supprime éventuellement un alias similaire pour le remplacer
if not alias.exists():
similar = Alias.objects.filter(
normalized_name=Alias.normalize(new_username))
if similar.exists():
similar.delete()
user = form.save(commit=False) olduser = User.objects.get(pk=form.instance.pk)
profile = profile_form.save(commit=False)
profile.user = user
profile.save()
user.save()
if olduser.email != user.email: user = form.save(commit=False)
# If the user changed her/his email, then it is unvalidated and a confirmation link is sent. profile = profile_form.save(commit=False)
user.profile.email_confirmed = False profile.user = user
user.profile.save() profile.save()
user.profile.send_email_validation_link() user.save()
if olduser.email != user.email:
# If the user changed her/his email, then it is unvalidated and a confirmation link is sent.
user.profile.email_confirmed = False
user.profile.save()
user.profile.send_email_validation_link()
return super().form_valid(form) return super().form_valid(form)

View File

@ -8,6 +8,8 @@ from django.conf import settings
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.db import models from django.db import models
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from phonenumber_field.modelfields import PhoneNumberField
from member.models import Club, Membership from member.models import Club, Membership
from note.models import MembershipTransaction from note.models import MembershipTransaction
from permission.models import Role from permission.models import Role
@ -223,7 +225,7 @@ class WEIRegistration(models.Model):
verbose_name=_("emergency contact name"), verbose_name=_("emergency contact name"),
) )
emergency_contact_phone = models.CharField( emergency_contact_phone = PhoneNumberField(
max_length=32, max_length=32,
verbose_name=_("emergency contact phone"), verbose_name=_("emergency contact phone"),
) )

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-03 23:53+0200\n" "POT-Creation-Date: 2020-08-05 13:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -44,10 +44,10 @@ msgid "You can't invite more than 3 people to this activity."
msgstr "" msgstr ""
#: apps/activity/models.py:24 apps/activity/models.py:49 #: apps/activity/models.py:24 apps/activity/models.py:49
#: apps/member/models.py:158 apps/note/models/notes.py:212 #: apps/member/models.py:162 apps/note/models/notes.py:212
#: apps/note/models/transactions.py:25 apps/note/models/transactions.py:45 #: apps/note/models/transactions.py:25 apps/note/models/transactions.py:45
#: apps/note/models/transactions.py:268 apps/permission/models.py:339 #: apps/note/models/transactions.py:268 apps/permission/models.py:339
#: apps/wei/models.py:65 apps/wei/models.py:117 #: apps/wei/models.py:67 apps/wei/models.py:119
#: templates/member/club_info.html:13 templates/member/profile_info.html:14 #: templates/member/club_info.html:13 templates/member/profile_info.html:14
#: templates/registration/future_profile_detail.html:16 #: templates/registration/future_profile_detail.html:16
#: templates/wei/weiclub_info.html:13 templates/wei/weimembership_form.html:18 #: templates/wei/weiclub_info.html:13 templates/wei/weimembership_form.html:18
@ -72,7 +72,7 @@ msgstr ""
#: apps/activity/models.py:54 apps/note/models/transactions.py:81 #: apps/activity/models.py:54 apps/note/models/transactions.py:81
#: apps/permission/models.py:120 apps/permission/models.py:199 #: apps/permission/models.py:120 apps/permission/models.py:199
#: apps/wei/models.py:71 apps/wei/models.py:128 #: apps/wei/models.py:73 apps/wei/models.py:130
#: templates/activity/activity_detail.html:16 #: templates/activity/activity_detail.html:16
msgid "description" msgid "description"
msgstr "" msgstr ""
@ -83,9 +83,9 @@ msgstr ""
msgid "type" msgid "type"
msgstr "" msgstr ""
#: apps/activity/models.py:67 apps/logs/models.py:22 apps/member/models.py:266 #: apps/activity/models.py:67 apps/logs/models.py:22 apps/member/models.py:270
#: apps/note/models/notes.py:126 apps/treasury/models.py:222 #: apps/note/models/notes.py:126 apps/treasury/models.py:222
#: apps/wei/models.py:159 templates/treasury/sogecredit_detail.html:14 #: apps/wei/models.py:161 templates/treasury/sogecredit_detail.html:14
#: templates/wei/survey.html:16 #: templates/wei/survey.html:16
msgid "user" msgid "user"
msgstr "" msgstr ""
@ -188,12 +188,13 @@ msgstr ""
#: apps/activity/tables.py:77 apps/member/forms.py:103 #: apps/activity/tables.py:77 apps/member/forms.py:103
#: apps/registration/forms.py:70 apps/treasury/forms.py:120 #: apps/registration/forms.py:70 apps/treasury/forms.py:120
#: apps/wei/forms/registration.py:95
msgid "Last name" msgid "Last name"
msgstr "" msgstr ""
#: apps/activity/tables.py:79 apps/member/forms.py:108 #: apps/activity/tables.py:79 apps/member/forms.py:108
#: apps/registration/forms.py:75 apps/treasury/forms.py:122 #: apps/registration/forms.py:75 apps/treasury/forms.py:122
#: templates/note/transaction_form.html:129 #: apps/wei/forms/registration.py:100 templates/note/transaction_form.html:129
msgid "First name" msgid "First name"
msgstr "" msgstr ""
@ -267,7 +268,7 @@ msgid "edit"
msgstr "" msgstr ""
#: apps/logs/models.py:63 apps/note/tables.py:137 apps/note/tables.py:165 #: apps/logs/models.py:63 apps/note/tables.py:137 apps/note/tables.py:165
#: apps/permission/models.py:137 apps/wei/tables.py:65 #: apps/permission/models.py:137 apps/wei/tables.py:73
msgid "delete" msgid "delete"
msgstr "" msgstr ""
@ -291,29 +292,29 @@ msgstr ""
msgid "changelogs" msgid "changelogs"
msgstr "" msgstr ""
#: apps/member/admin.py:52 apps/member/models.py:185 #: apps/member/admin.py:52 apps/member/models.py:189
#: templates/member/club_info.html:41 #: templates/member/club_info.html:41
msgid "membership fee (paid students)" msgid "membership fee (paid students)"
msgstr "" msgstr ""
#: apps/member/admin.py:53 apps/member/models.py:190 #: apps/member/admin.py:53 apps/member/models.py:194
#: templates/member/club_info.html:44 #: templates/member/club_info.html:44
msgid "membership fee (unpaid students)" msgid "membership fee (unpaid students)"
msgstr "" msgstr ""
#: apps/member/admin.py:67 apps/member/models.py:277 #: apps/member/admin.py:67 apps/member/models.py:281
msgid "roles" msgid "roles"
msgstr "" msgstr ""
#: apps/member/admin.py:68 apps/member/models.py:291 #: apps/member/admin.py:68 apps/member/models.py:295
msgid "fee" msgid "fee"
msgstr "" msgstr ""
#: apps/member/apps.py:14 apps/wei/tables.py:150 apps/wei/tables.py:181 #: apps/member/apps.py:14 apps/wei/tables.py:179 apps/wei/tables.py:210
msgid "member" msgid "member"
msgstr "" msgstr ""
#: apps/member/forms.py:59 apps/member/views.py:82 #: apps/member/forms.py:59 apps/member/views.py:84
#: apps/registration/forms.py:28 #: apps/registration/forms.py:28
msgid "An alias with a similar name already exists." msgid "An alias with a similar name already exists."
msgstr "" msgstr ""
@ -327,10 +328,12 @@ msgid "Check this case is the Société Générale paid the inscription."
msgstr "" msgstr ""
#: apps/member/forms.py:89 apps/registration/forms.py:57 #: apps/member/forms.py:89 apps/registration/forms.py:57
#: apps/wei/forms/registration.py:82
msgid "Credit type" msgid "Credit type"
msgstr "" msgstr ""
#: apps/member/forms.py:90 apps/registration/forms.py:58 #: apps/member/forms.py:90 apps/registration/forms.py:58
#: apps/wei/forms/registration.py:83
msgid "No credit" msgid "No credit"
msgstr "" msgstr ""
@ -339,11 +342,13 @@ msgid "You can credit the note of the user."
msgstr "" msgstr ""
#: apps/member/forms.py:96 apps/registration/forms.py:63 #: apps/member/forms.py:96 apps/registration/forms.py:63
#: apps/wei/forms/registration.py:88
msgid "Credit amount" msgid "Credit amount"
msgstr "" msgstr ""
#: apps/member/forms.py:113 apps/registration/forms.py:80 #: apps/member/forms.py:113 apps/registration/forms.py:80
#: apps/treasury/forms.py:124 templates/note/transaction_form.html:135 #: apps/treasury/forms.py:124 apps/wei/forms/registration.py:105
#: templates/note/transaction_form.html:135
msgid "Bank" msgid "Bank"
msgstr "" msgstr ""
@ -355,214 +360,214 @@ msgstr ""
msgid "Roles" msgid "Roles"
msgstr "" msgstr ""
#: apps/member/models.py:34 #: apps/member/models.py:38
#: templates/registration/future_profile_detail.html:40 #: templates/registration/future_profile_detail.html:40
#: templates/wei/weimembership_form.html:48 #: templates/wei/weimembership_form.html:48
msgid "phone number" msgid "phone number"
msgstr "" msgstr ""
#: apps/member/models.py:41 templates/member/profile_info.html:29 #: apps/member/models.py:45 templates/member/profile_info.html:29
#: templates/registration/future_profile_detail.html:34 #: templates/registration/future_profile_detail.html:34
#: templates/wei/weimembership_form.html:42 #: templates/wei/weimembership_form.html:42
msgid "section" msgid "section"
msgstr "" msgstr ""
#: apps/member/models.py:42 #: apps/member/models.py:46
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\"" msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
msgstr "" msgstr ""
#: apps/member/models.py:50 templates/wei/weimembership_form.html:36 #: apps/member/models.py:54 templates/wei/weimembership_form.html:36
msgid "department" msgid "department"
msgstr "" msgstr ""
#: apps/member/models.py:52 #: apps/member/models.py:56
msgid "Informatics (A0)" msgid "Informatics (A0)"
msgstr "" msgstr ""
#: apps/member/models.py:53 #: apps/member/models.py:57
msgid "Mathematics (A1)" msgid "Mathematics (A1)"
msgstr "" msgstr ""
#: apps/member/models.py:54 #: apps/member/models.py:58
msgid "Physics (A2)" msgid "Physics (A2)"
msgstr "" msgstr ""
#: apps/member/models.py:55 #: apps/member/models.py:59
msgid "Applied physics (A'2)" msgid "Applied physics (A'2)"
msgstr "" msgstr ""
#: apps/member/models.py:56 #: apps/member/models.py:60
msgid "Chemistry (A''2)" msgid "Chemistry (A''2)"
msgstr "" msgstr ""
#: apps/member/models.py:57 #: apps/member/models.py:61
msgid "Biology (A3)" msgid "Biology (A3)"
msgstr "" msgstr ""
#: apps/member/models.py:58 #: apps/member/models.py:62
msgid "SAPHIRE (B1234)" msgid "SAPHIRE (B1234)"
msgstr "" msgstr ""
#: apps/member/models.py:59 #: apps/member/models.py:63
msgid "Mechanics (B1)" msgid "Mechanics (B1)"
msgstr "" msgstr ""
#: apps/member/models.py:60 #: apps/member/models.py:64
msgid "Civil engineering (B2)" msgid "Civil engineering (B2)"
msgstr "" msgstr ""
#: apps/member/models.py:61 #: apps/member/models.py:65
msgid "Mechanical engineering (B3)" msgid "Mechanical engineering (B3)"
msgstr "" msgstr ""
#: apps/member/models.py:62 #: apps/member/models.py:66
msgid "EEA (B4)" msgid "EEA (B4)"
msgstr "" msgstr ""
#: apps/member/models.py:63 #: apps/member/models.py:67
msgid "Design (C)" msgid "Design (C)"
msgstr "" msgstr ""
#: apps/member/models.py:64 #: apps/member/models.py:68
msgid "Economy-management (D2)" msgid "Economy-management (D2)"
msgstr "" msgstr ""
#: apps/member/models.py:65 #: apps/member/models.py:69
msgid "Social sciences (D3)" msgid "Social sciences (D3)"
msgstr "" msgstr ""
#: apps/member/models.py:66 #: apps/member/models.py:70
msgid "English (E)" msgid "English (E)"
msgstr "" msgstr ""
#: apps/member/models.py:67 #: apps/member/models.py:71
msgid "External (EXT)" msgid "External (EXT)"
msgstr "" msgstr ""
#: apps/member/models.py:74 #: apps/member/models.py:78
msgid "promotion" msgid "promotion"
msgstr "" msgstr ""
#: apps/member/models.py:75 #: apps/member/models.py:79
msgid "Year of entry to the school (None if not ENS student)" msgid "Year of entry to the school (None if not ENS student)"
msgstr "" msgstr ""
#: apps/member/models.py:79 templates/member/profile_info.html:32 #: apps/member/models.py:83 templates/member/profile_info.html:32
#: templates/registration/future_profile_detail.html:37 #: templates/registration/future_profile_detail.html:37
#: templates/wei/weimembership_form.html:45 #: templates/wei/weimembership_form.html:45
msgid "address" msgid "address"
msgstr "" msgstr ""
#: apps/member/models.py:86 #: apps/member/models.py:90
#: templates/registration/future_profile_detail.html:43 #: templates/registration/future_profile_detail.html:43
#: templates/wei/weimembership_form.html:51 #: templates/wei/weimembership_form.html:51
msgid "paid" msgid "paid"
msgstr "" msgstr ""
#: apps/member/models.py:87 #: apps/member/models.py:91
msgid "Tells if the user receive a salary." msgid "Tells if the user receive a salary."
msgstr "" msgstr ""
#: apps/member/models.py:92 #: apps/member/models.py:96
msgid "email confirmed" msgid "email confirmed"
msgstr "" msgstr ""
#: apps/member/models.py:97 #: apps/member/models.py:101
msgid "registration valid" msgid "registration valid"
msgstr "" msgstr ""
#: apps/member/models.py:126 apps/member/models.py:127 #: apps/member/models.py:130 apps/member/models.py:131
msgid "user profile" msgid "user profile"
msgstr "" msgstr ""
#: apps/member/models.py:134 #: apps/member/models.py:138
msgid "Activate your Note Kfet account" msgid "Activate your Note Kfet account"
msgstr "" msgstr ""
#: apps/member/models.py:163 templates/member/club_info.html:57 #: apps/member/models.py:167 templates/member/club_info.html:57
#: templates/registration/future_profile_detail.html:22 #: templates/registration/future_profile_detail.html:22
#: templates/wei/weiclub_info.html:52 templates/wei/weimembership_form.html:24 #: templates/wei/weiclub_info.html:52 templates/wei/weimembership_form.html:24
msgid "email" msgid "email"
msgstr "" msgstr ""
#: apps/member/models.py:170 #: apps/member/models.py:174
msgid "parent club" msgid "parent club"
msgstr "" msgstr ""
#: apps/member/models.py:179 #: apps/member/models.py:183
msgid "require memberships" msgid "require memberships"
msgstr "" msgstr ""
#: apps/member/models.py:180 #: apps/member/models.py:184
msgid "Uncheck if this club don't require memberships." msgid "Uncheck if this club don't require memberships."
msgstr "" msgstr ""
#: apps/member/models.py:196 templates/member/club_info.html:33 #: apps/member/models.py:200 templates/member/club_info.html:33
msgid "membership duration" msgid "membership duration"
msgstr "" msgstr ""
#: apps/member/models.py:197 #: apps/member/models.py:201
msgid "The longest time (in days) a membership can last (NULL = infinite)." msgid "The longest time (in days) a membership can last (NULL = infinite)."
msgstr "" msgstr ""
#: apps/member/models.py:204 templates/member/club_info.html:23 #: apps/member/models.py:208 templates/member/club_info.html:23
msgid "membership start" msgid "membership start"
msgstr "" msgstr ""
#: apps/member/models.py:205 #: apps/member/models.py:209
msgid "How long after January 1st the members can renew their membership." msgid "How long after January 1st the members can renew their membership."
msgstr "" msgstr ""
#: apps/member/models.py:212 templates/member/club_info.html:28 #: apps/member/models.py:216 templates/member/club_info.html:28
msgid "membership end" msgid "membership end"
msgstr "" msgstr ""
#: apps/member/models.py:213 #: apps/member/models.py:217
msgid "" msgid ""
"How long the membership can last after January 1st of the next year after " "How long the membership can last after January 1st of the next year after "
"members can renew their membership." "members can renew their membership."
msgstr "" msgstr ""
#: apps/member/models.py:247 apps/member/models.py:272 #: apps/member/models.py:251 apps/member/models.py:276
#: apps/note/models/notes.py:163 #: apps/note/models/notes.py:163
msgid "club" msgid "club"
msgstr "" msgstr ""
#: apps/member/models.py:248 #: apps/member/models.py:252
msgid "clubs" msgid "clubs"
msgstr "" msgstr ""
#: apps/member/models.py:282 #: apps/member/models.py:286
msgid "membership starts on" msgid "membership starts on"
msgstr "" msgstr ""
#: apps/member/models.py:286 #: apps/member/models.py:290
msgid "membership ends on" msgid "membership ends on"
msgstr "" msgstr ""
#: apps/member/models.py:310 apps/member/views.py:540 apps/wei/views.py:798 #: apps/member/models.py:342
msgid "User is not a member of the parent club"
msgstr ""
#: apps/member/models.py:317
#, python-brace-format #, python-brace-format
msgid "The role {role} does not apply to the club {club}." msgid "The role {role} does not apply to the club {club}."
msgstr "" msgstr ""
#: apps/member/models.py:328 apps/member/views.py:549 #: apps/member/models.py:353 apps/member/views.py:589
msgid "User is already a member of the club" msgid "User is already a member of the club"
msgstr "" msgstr ""
#: apps/member/models.py:379 #: apps/member/models.py:400
msgid "User is not a member of the parent club"
msgstr ""
#: apps/member/models.py:453
#, python-brace-format #, python-brace-format
msgid "Membership of {user} for the club {club}" msgid "Membership of {user} for the club {club}"
msgstr "" msgstr ""
#: apps/member/models.py:382 #: apps/member/models.py:456
msgid "membership" msgid "membership"
msgstr "" msgstr ""
#: apps/member/models.py:383 #: apps/member/models.py:457
msgid "memberships" msgid "memberships"
msgstr "" msgstr ""
@ -580,71 +585,71 @@ msgstr ""
msgid "This address must be valid." msgid "This address must be valid."
msgstr "" msgstr ""
#: apps/member/views.py:128 #: apps/member/views.py:134
msgid "Profile detail" msgid "Profile detail"
msgstr "" msgstr ""
#: apps/member/views.py:162 #: apps/member/views.py:168
msgid "Search user" msgid "Search user"
msgstr "" msgstr ""
#: apps/member/views.py:196 apps/member/views.py:382 #: apps/member/views.py:202 apps/member/views.py:388
msgid "Note aliases" msgid "Note aliases"
msgstr "" msgstr ""
#: apps/member/views.py:210 #: apps/member/views.py:216
msgid "Update note picture" msgid "Update note picture"
msgstr "" msgstr ""
#: apps/member/views.py:268 templates/member/profile_info.html:43 #: apps/member/views.py:274 templates/member/profile_info.html:43
msgid "Manage auth token" msgid "Manage auth token"
msgstr "" msgstr ""
#: apps/member/views.py:296 #: apps/member/views.py:302
msgid "Create new club" msgid "Create new club"
msgstr "" msgstr ""
#: apps/member/views.py:308 #: apps/member/views.py:314
msgid "Search club" msgid "Search club"
msgstr "" msgstr ""
#: apps/member/views.py:333 #: apps/member/views.py:339
msgid "Club detail" msgid "Club detail"
msgstr "" msgstr ""
#: apps/member/views.py:399 #: apps/member/views.py:405
msgid "Update club" msgid "Update club"
msgstr "" msgstr ""
#: apps/member/views.py:433 #: apps/member/views.py:439
msgid "Add new member to the club" msgid "Add new member to the club"
msgstr "" msgstr ""
#: apps/member/views.py:530 apps/wei/views.py:783 #: apps/member/views.py:580 apps/wei/views.py:862
msgid "" msgid ""
"This user don't have enough money to join this club, and can't have a " "This user don't have enough money to join this club, and can't have a "
"negative balance." "negative balance."
msgstr "" msgstr ""
#: apps/member/views.py:553 #: apps/member/views.py:593
msgid "The membership must start after {:%m-%d-%Y}." msgid "The membership must start after {:%m-%d-%Y}."
msgstr "" msgstr ""
#: apps/member/views.py:558 #: apps/member/views.py:598
msgid "The membership must begin before {:%m-%d-%Y}." msgid "The membership must begin before {:%m-%d-%Y}."
msgstr "" msgstr ""
#: apps/member/views.py:575 apps/member/views.py:577 apps/member/views.py:579 #: apps/member/views.py:615 apps/member/views.py:617 apps/member/views.py:619
#: apps/registration/views.py:290 apps/registration/views.py:292 #: apps/registration/views.py:290 apps/registration/views.py:292
#: apps/registration/views.py:294 #: apps/registration/views.py:294 apps/wei/views.py:867 apps/wei/views.py:871
msgid "This field is required." msgid "This field is required."
msgstr "" msgstr ""
#: apps/member/views.py:647 #: apps/member/views.py:703
msgid "Manage roles of an user in the club" msgid "Manage roles of an user in the club"
msgstr "" msgstr ""
#: apps/member/views.py:672 #: apps/member/views.py:728
msgid "Members of the club" msgid "Members of the club"
msgstr "" msgstr ""
@ -938,13 +943,13 @@ msgstr ""
msgid "No reason specified" msgid "No reason specified"
msgstr "" msgstr ""
#: apps/note/tables.py:139 apps/note/tables.py:167 apps/wei/tables.py:66 #: apps/note/tables.py:139 apps/note/tables.py:167 apps/wei/tables.py:74
#: templates/treasury/sogecredit_detail.html:59 #: apps/wei/tables.py:100 templates/treasury/sogecredit_detail.html:59
#: templates/wei/weiregistration_confirm_delete.html:32 #: templates/wei/weiregistration_confirm_delete.html:32
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: apps/note/tables.py:162 apps/wei/tables.py:42 apps/wei/tables.py:43 #: apps/note/tables.py:162 apps/wei/tables.py:46 apps/wei/tables.py:47
#: templates/member/club_info.html:67 templates/note/conso_form.html:128 #: templates/member/club_info.html:67 templates/note/conso_form.html:128
#: templates/wei/bus_tables.html:15 templates/wei/busteam_tables.html:15 #: templates/wei/bus_tables.html:15 templates/wei/busteam_tables.html:15
#: templates/wei/busteam_tables.html:33 templates/wei/weiclub_info.html:68 #: templates/wei/busteam_tables.html:33 templates/wei/weiclub_info.html:68
@ -1163,7 +1168,7 @@ msgstr ""
#: templates/activity/activity_form.html:9 #: templates/activity/activity_form.html:9
#: templates/activity/activity_invite.html:8 #: templates/activity/activity_invite.html:8
#: templates/django_filters/rest_framework/form.html:5 #: templates/django_filters/rest_framework/form.html:5
#: templates/member/add_members.html:14 templates/member/club_form.html:9 #: templates/member/add_members.html:31 templates/member/club_form.html:9
#: templates/note/transactiontemplate_form.html:15 #: templates/note/transactiontemplate_form.html:15
#: templates/treasury/invoice_form.html:46 templates/wei/bus_form.html:13 #: templates/treasury/invoice_form.html:46 templates/wei/bus_form.html:13
#: templates/wei/busteam_form.html:13 templates/wei/weiclub_form.html:15 #: templates/wei/busteam_form.html:13 templates/wei/weiclub_form.html:15
@ -1381,348 +1386,348 @@ msgstr ""
msgid "List of credits from the Société générale" msgid "List of credits from the Société générale"
msgstr "" msgstr ""
#: apps/treasury/views.py:384 #: apps/treasury/views.py:379
msgid "Manage credits from the Société générale" msgid "Manage credits from the Société générale"
msgstr "" msgstr ""
#: apps/wei/apps.py:10 apps/wei/models.py:48 apps/wei/models.py:49 #: apps/wei/apps.py:10 apps/wei/models.py:50 apps/wei/models.py:51
#: apps/wei/models.py:60 apps/wei/models.py:166 templates/base.html:124 #: apps/wei/models.py:62 apps/wei/models.py:168 templates/base.html:124
msgid "WEI" msgid "WEI"
msgstr "" msgstr ""
#: apps/wei/forms/registration.py:48 apps/wei/models.py:112 #: apps/wei/forms/registration.py:50 apps/wei/models.py:114
#: apps/wei/models.py:297 #: apps/wei/models.py:299
msgid "bus" msgid "bus"
msgstr "" msgstr ""
#: apps/wei/forms/registration.py:49 #: apps/wei/forms/registration.py:51
msgid "" msgid ""
"This choice is not definitive. The WEI organizers are free to attribute for " "This choice is not definitive. The WEI organizers are free to attribute for "
"you a bus and a team, in particular if you are a free eletron." "you a bus and a team, in particular if you are a free eletron."
msgstr "" msgstr ""
#: apps/wei/forms/registration.py:56 #: apps/wei/forms/registration.py:58
msgid "Team" msgid "Team"
msgstr "" msgstr ""
#: apps/wei/forms/registration.py:58 #: apps/wei/forms/registration.py:60
msgid "" msgid ""
"Leave this field empty if you won't be in a team (staff, bus chief, free " "Leave this field empty if you won't be in a team (staff, bus chief, free "
"electron)" "electron)"
msgstr "" msgstr ""
#: apps/wei/forms/registration.py:64 apps/wei/forms/registration.py:74 #: apps/wei/forms/registration.py:66 apps/wei/forms/registration.py:76
#: apps/wei/models.py:147 #: apps/wei/models.py:149
msgid "WEI Roles" msgid "WEI Roles"
msgstr "" msgstr ""
#: apps/wei/forms/registration.py:65 #: apps/wei/forms/registration.py:67
msgid "Select the roles that you are interested in." msgid "Select the roles that you are interested in."
msgstr "" msgstr ""
#: apps/wei/forms/registration.py:81 #: apps/wei/forms/registration.py:112
msgid "This team doesn't belong to the given bus." msgid "This team doesn't belong to the given bus."
msgstr "" msgstr ""
#: apps/wei/models.py:23 templates/wei/weiclub_info.html:23 #: apps/wei/models.py:25 templates/wei/weiclub_info.html:23
msgid "year" msgid "year"
msgstr "" msgstr ""
#: apps/wei/models.py:27 templates/wei/weiclub_info.html:17 #: apps/wei/models.py:29 templates/wei/weiclub_info.html:17
msgid "date start" msgid "date start"
msgstr "" msgstr ""
#: apps/wei/models.py:31 templates/wei/weiclub_info.html:20 #: apps/wei/models.py:33 templates/wei/weiclub_info.html:20
msgid "date end" msgid "date end"
msgstr "" msgstr ""
#: apps/wei/models.py:76 #: apps/wei/models.py:78
msgid "survey information" msgid "survey information"
msgstr "" msgstr ""
#: apps/wei/models.py:77 #: apps/wei/models.py:79
msgid "Information about the survey for new members, encoded in JSON" msgid "Information about the survey for new members, encoded in JSON"
msgstr "" msgstr ""
#: apps/wei/models.py:99 #: apps/wei/models.py:101
msgid "Bus" msgid "Bus"
msgstr "" msgstr ""
#: apps/wei/models.py:100 templates/wei/weiclub_tables.html:32 #: apps/wei/models.py:102 templates/wei/weiclub_tables.html:32
msgid "Buses" msgid "Buses"
msgstr "" msgstr ""
#: apps/wei/models.py:121 #: apps/wei/models.py:123
msgid "color" msgid "color"
msgstr "" msgstr ""
#: apps/wei/models.py:122 #: apps/wei/models.py:124
msgid "The color of the T-Shirt, stored with its number equivalent" msgid "The color of the T-Shirt, stored with its number equivalent"
msgstr "" msgstr ""
#: apps/wei/models.py:136 #: apps/wei/models.py:138
msgid "Bus team" msgid "Bus team"
msgstr "" msgstr ""
#: apps/wei/models.py:137 #: apps/wei/models.py:139
msgid "Bus teams" msgid "Bus teams"
msgstr "" msgstr ""
#: apps/wei/models.py:146 #: apps/wei/models.py:148
msgid "WEI Role" msgid "WEI Role"
msgstr "" msgstr ""
#: apps/wei/models.py:171 #: apps/wei/models.py:173
msgid "Credit from Société générale" msgid "Credit from Société générale"
msgstr "" msgstr ""
#: apps/wei/models.py:176 #: apps/wei/models.py:178
msgid "Caution check given" msgid "Caution check given"
msgstr "" msgstr ""
#: apps/wei/models.py:180 templates/wei/weimembership_form.html:68 #: apps/wei/models.py:182 templates/wei/weimembership_form.html:68
msgid "birth date" msgid "birth date"
msgstr "" msgstr ""
#: apps/wei/models.py:186 apps/wei/models.py:196 #: apps/wei/models.py:188 apps/wei/models.py:198
msgid "Male" msgid "Male"
msgstr "" msgstr ""
#: apps/wei/models.py:187 apps/wei/models.py:197 #: apps/wei/models.py:189 apps/wei/models.py:199
msgid "Female" msgid "Female"
msgstr "" msgstr ""
#: apps/wei/models.py:188 #: apps/wei/models.py:190
msgid "Non binary" msgid "Non binary"
msgstr "" msgstr ""
#: apps/wei/models.py:190 templates/wei/weimembership_form.html:59 #: apps/wei/models.py:192 templates/wei/weimembership_form.html:59
msgid "gender" msgid "gender"
msgstr "" msgstr ""
#: apps/wei/models.py:199 templates/wei/weimembership_form.html:62 #: apps/wei/models.py:201 templates/wei/weimembership_form.html:62
msgid "clothing cut" msgid "clothing cut"
msgstr "" msgstr ""
#: apps/wei/models.py:212 templates/wei/weimembership_form.html:65 #: apps/wei/models.py:214 templates/wei/weimembership_form.html:65
msgid "clothing size" msgid "clothing size"
msgstr "" msgstr ""
#: apps/wei/models.py:218 templates/wei/weimembership_form.html:71 #: apps/wei/models.py:220 templates/wei/weimembership_form.html:71
msgid "health issues" msgid "health issues"
msgstr "" msgstr ""
#: apps/wei/models.py:223 templates/wei/weimembership_form.html:74 #: apps/wei/models.py:225 templates/wei/weimembership_form.html:74
msgid "emergency contact name" msgid "emergency contact name"
msgstr "" msgstr ""
#: apps/wei/models.py:228 templates/wei/weimembership_form.html:77 #: apps/wei/models.py:230 templates/wei/weimembership_form.html:77
msgid "emergency contact phone" msgid "emergency contact phone"
msgstr "" msgstr ""
#: apps/wei/models.py:233 templates/wei/weimembership_form.html:80 #: apps/wei/models.py:235 templates/wei/weimembership_form.html:80
msgid "" msgid ""
"Register on the mailing list to stay informed of the events of the campus (1 " "Register on the mailing list to stay informed of the events of the campus (1 "
"mail/week)" "mail/week)"
msgstr "" msgstr ""
#: apps/wei/models.py:238 templates/wei/weimembership_form.html:83 #: apps/wei/models.py:240 templates/wei/weimembership_form.html:83
msgid "" msgid ""
"Register on the mailing list to stay informed of the sport events of the " "Register on the mailing list to stay informed of the sport events of the "
"campus (1 mail/week)" "campus (1 mail/week)"
msgstr "" msgstr ""
#: apps/wei/models.py:243 templates/wei/weimembership_form.html:86 #: apps/wei/models.py:245 templates/wei/weimembership_form.html:86
msgid "" msgid ""
"Register on the mailing list to stay informed of the art events of the " "Register on the mailing list to stay informed of the art events of the "
"campus (1 mail/week)" "campus (1 mail/week)"
msgstr "" msgstr ""
#: apps/wei/models.py:248 templates/wei/weimembership_form.html:56 #: apps/wei/models.py:250 templates/wei/weimembership_form.html:56
msgid "first year" msgid "first year"
msgstr "" msgstr ""
#: apps/wei/models.py:249 #: apps/wei/models.py:251
msgid "Tells if the user is new in the school." msgid "Tells if the user is new in the school."
msgstr "" msgstr ""
#: apps/wei/models.py:254 #: apps/wei/models.py:256
msgid "registration information" msgid "registration information"
msgstr "" msgstr ""
#: apps/wei/models.py:255 #: apps/wei/models.py:257
msgid "" msgid ""
"Information about the registration (buses for old members, survey fot the " "Information about the registration (buses for old members, survey fot the "
"new members), encoded in JSON" "new members), encoded in JSON"
msgstr "" msgstr ""
#: apps/wei/models.py:286 #: apps/wei/models.py:288
msgid "WEI User" msgid "WEI User"
msgstr "" msgstr ""
#: apps/wei/models.py:287 #: apps/wei/models.py:289
msgid "WEI Users" msgid "WEI Users"
msgstr "" msgstr ""
#: apps/wei/models.py:307 #: apps/wei/models.py:309
msgid "team" msgid "team"
msgstr "" msgstr ""
#: apps/wei/models.py:317 #: apps/wei/models.py:319
msgid "WEI registration" msgid "WEI registration"
msgstr "" msgstr ""
#: apps/wei/models.py:321 #: apps/wei/models.py:323
msgid "WEI membership" msgid "WEI membership"
msgstr "" msgstr ""
#: apps/wei/models.py:322 #: apps/wei/models.py:324
msgid "WEI memberships" msgid "WEI memberships"
msgstr "" msgstr ""
#: apps/wei/tables.py:53 apps/wei/tables.py:54 #: apps/wei/tables.py:57 apps/wei/tables.py:58 apps/wei/tables.py:95
#: templates/treasury/sogecredit_detail.html:57 #: templates/treasury/sogecredit_detail.html:57
msgid "Validate" msgid "Validate"
msgstr "" msgstr ""
#: apps/wei/tables.py:96 #: apps/wei/tables.py:125
msgid "Year" msgid "Year"
msgstr "" msgstr ""
#: apps/wei/tables.py:134 templates/wei/bus_tables.html:26 #: apps/wei/tables.py:163 templates/wei/bus_tables.html:26
#: templates/wei/busteam_tables.html:43 #: templates/wei/busteam_tables.html:43
msgid "Teams" msgid "Teams"
msgstr "" msgstr ""
#: apps/wei/tables.py:143 apps/wei/tables.py:184 #: apps/wei/tables.py:172 apps/wei/tables.py:213
msgid "Members count" msgid "Members count"
msgstr "" msgstr ""
#: apps/wei/tables.py:150 apps/wei/tables.py:181 #: apps/wei/tables.py:179 apps/wei/tables.py:210
msgid "members" msgid "members"
msgstr "" msgstr ""
#: apps/wei/views.py:56 #: apps/wei/views.py:57
msgid "Search WEI" msgid "Search WEI"
msgstr "" msgstr ""
#: apps/wei/views.py:74 templates/wei/weiclub_list.html:10 #: apps/wei/views.py:75 templates/wei/weiclub_list.html:10
msgid "Create WEI" msgid "Create WEI"
msgstr "" msgstr ""
#: apps/wei/views.py:94 #: apps/wei/views.py:95
msgid "WEI Detail" msgid "WEI Detail"
msgstr "" msgstr ""
#: apps/wei/views.py:189 #: apps/wei/views.py:190
msgid "View members of the WEI" msgid "View members of the WEI"
msgstr "" msgstr ""
#: apps/wei/views.py:217 #: apps/wei/views.py:218
msgid "Find WEI Membership" msgid "Find WEI Membership"
msgstr "" msgstr ""
#: apps/wei/views.py:227 #: apps/wei/views.py:228
msgid "View registrations to the WEI" msgid "View registrations to the WEI"
msgstr "" msgstr ""
#: apps/wei/views.py:251 #: apps/wei/views.py:252
msgid "Find WEI Registration" msgid "Find WEI Registration"
msgstr "" msgstr ""
#: apps/wei/views.py:262 #: apps/wei/views.py:263
msgid "Update the WEI" msgid "Update the WEI"
msgstr "" msgstr ""
#: apps/wei/views.py:283 #: apps/wei/views.py:284
msgid "Create new bus" msgid "Create new bus"
msgstr "" msgstr ""
#: apps/wei/views.py:314 #: apps/wei/views.py:315
msgid "Update bus" msgid "Update bus"
msgstr "" msgstr ""
#: apps/wei/views.py:344 #: apps/wei/views.py:345
msgid "Manage bus" msgid "Manage bus"
msgstr "" msgstr ""
#: apps/wei/views.py:371 #: apps/wei/views.py:372
msgid "Create new team" msgid "Create new team"
msgstr "" msgstr ""
#: apps/wei/views.py:403 #: apps/wei/views.py:404
msgid "Update team" msgid "Update team"
msgstr "" msgstr ""
#: apps/wei/views.py:434 #: apps/wei/views.py:435
msgid "Manage WEI team" msgid "Manage WEI team"
msgstr "" msgstr ""
#: apps/wei/views.py:456 #: apps/wei/views.py:457
msgid "Register first year student to the WEI" msgid "Register first year student to the WEI"
msgstr "" msgstr ""
#: apps/wei/views.py:468 templates/wei/weiclub_info.html:62 #: apps/wei/views.py:469 templates/wei/weiclub_info.html:62
msgid "Register 1A" msgid "Register 1A"
msgstr "" msgstr ""
#: apps/wei/views.py:489 apps/wei/views.py:560 #: apps/wei/views.py:490 apps/wei/views.py:561
msgid "This user is already registered to this WEI." msgid "This user is already registered to this WEI."
msgstr "" msgstr ""
#: apps/wei/views.py:494 #: apps/wei/views.py:495
msgid "" msgid ""
"This user can't be in her/his first year since he/she has already participed " "This user can't be in her/his first year since he/she has already participed "
"to a WEI." "to a WEI."
msgstr "" msgstr ""
#: apps/wei/views.py:511 #: apps/wei/views.py:512
msgid "Register old student to the WEI" msgid "Register old student to the WEI"
msgstr "" msgstr ""
#: apps/wei/views.py:523 templates/wei/weiclub_info.html:65 #: apps/wei/views.py:524 templates/wei/weiclub_info.html:65
msgid "Register 2A+" msgid "Register 2A+"
msgstr "" msgstr ""
#: apps/wei/views.py:542 apps/wei/views.py:627 #: apps/wei/views.py:543 apps/wei/views.py:628
msgid "You already opened an account in the Société générale." msgid "You already opened an account in the Société générale."
msgstr "" msgstr ""
#: apps/wei/views.py:590 #: apps/wei/views.py:591
msgid "Update WEI Registration" msgid "Update WEI Registration"
msgstr "" msgstr ""
#: apps/wei/views.py:677 #: apps/wei/views.py:687
msgid "Delete WEI registration" msgid "Delete WEI registration"
msgstr "" msgstr ""
#: apps/wei/views.py:688 #: apps/wei/views.py:698
msgid "You don't have the right to delete this WEI registration." msgid "You don't have the right to delete this WEI registration."
msgstr "" msgstr ""
#: apps/wei/views.py:707 #: apps/wei/views.py:717
msgid "Validate WEI registration" msgid "Validate WEI registration"
msgstr "" msgstr ""
#: apps/wei/views.py:787 #: apps/wei/views.py:856
msgid "This user didn't give her/his caution check." msgid "This user didn't give her/his caution check."
msgstr "" msgstr ""
#: apps/wei/views.py:830 apps/wei/views.py:883 apps/wei/views.py:893 #: apps/wei/views.py:918 apps/wei/views.py:971 apps/wei/views.py:981
#: templates/wei/survey.html:12 templates/wei/survey_closed.html:12 #: templates/wei/survey.html:12 templates/wei/survey_closed.html:12
#: templates/wei/survey_end.html:12 #: templates/wei/survey_end.html:12
msgid "Survey WEI" msgid "Survey WEI"
msgstr "" msgstr ""
#: note_kfet/settings/base.py:156 #: note_kfet/settings/base.py:157
msgid "German" msgid "German"
msgstr "" msgstr ""
#: note_kfet/settings/base.py:157 #: note_kfet/settings/base.py:158
msgid "English" msgid "English"
msgstr "" msgstr ""
#: note_kfet/settings/base.py:158 #: note_kfet/settings/base.py:159
msgid "French" msgid "French"
msgstr "" msgstr ""
@ -1866,6 +1871,21 @@ msgstr ""
msgid "Field filters" msgid "Field filters"
msgstr "" msgstr ""
#: templates/member/add_members.html:15
#, python-format
msgid ""
"The user is not a member of the club·s %(clubs)s. An additional fee of "
"%(pretty_fee)s will be charged to renew automatically the membership in this/"
"these club·s."
msgstr ""
#: templates/member/add_members.html:20
#, python-format
msgid ""
"This club has parents %(clubs)s. An additional fee of %(pretty_fee)s will be "
"charged to adhere automatically to this/these club·s."
msgstr ""
#: templates/member/alias_update.html:5 #: templates/member/alias_update.html:5
msgid "Add alias" msgid "Add alias"
msgstr "" msgstr ""
@ -2571,20 +2591,21 @@ msgid ""
msgstr "" msgstr ""
#: templates/wei/weimembership_form.html:169 #: templates/wei/weimembership_form.html:169
msgid "The note has enough money, the registration is possible." #, python-format
msgid ""
"The note has enough money (%(pretty_fee)s required), the registration is "
"possible."
msgstr "" msgstr ""
#: templates/wei/weimembership_form.html:176 #: templates/wei/weimembership_form.html:178
msgid "The user didn't give her/his caution check." msgid "The user didn't give her/his caution check."
msgstr "" msgstr ""
#: templates/wei/weimembership_form.html:184 #: templates/wei/weimembership_form.html:186
#, python-format
msgid "" msgid ""
"This user is not a member of the Kfet club for the comming year. Please " "This user is not a member of the Kfet club for the coming year. The "
"adhere <a href=\"%(future_user_detail)s\">here if he/she is in her/his first " "membership will be processed automatically, the WEI registration includes "
"year</a> or <a href=\"%(club_detail)s\">here if he/she was an old member</a> " "the membership fee."
"before you validate the registration of the WEI."
msgstr "" msgstr ""
#: templates/wei/weimembership_list.html:24 #: templates/wei/weimembership_list.html:24

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-08-04 20:03+0200\n" "POT-Creation-Date: 2020-08-05 13:58+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -45,10 +45,10 @@ msgid "You can't invite more than 3 people to this activity."
msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité." msgstr "Vous ne pouvez pas inviter plus de 3 personnes à cette activité."
#: apps/activity/models.py:24 apps/activity/models.py:49 #: apps/activity/models.py:24 apps/activity/models.py:49
#: apps/member/models.py:159 apps/note/models/notes.py:212 #: apps/member/models.py:162 apps/note/models/notes.py:212
#: apps/note/models/transactions.py:25 apps/note/models/transactions.py:45 #: apps/note/models/transactions.py:25 apps/note/models/transactions.py:45
#: apps/note/models/transactions.py:268 apps/permission/models.py:339 #: apps/note/models/transactions.py:268 apps/permission/models.py:339
#: apps/wei/models.py:65 apps/wei/models.py:117 #: apps/wei/models.py:67 apps/wei/models.py:119
#: templates/member/club_info.html:13 templates/member/profile_info.html:14 #: templates/member/club_info.html:13 templates/member/profile_info.html:14
#: templates/registration/future_profile_detail.html:16 #: templates/registration/future_profile_detail.html:16
#: templates/wei/weiclub_info.html:13 templates/wei/weimembership_form.html:18 #: templates/wei/weiclub_info.html:13 templates/wei/weimembership_form.html:18
@ -73,7 +73,7 @@ msgstr "types d'activité"
#: apps/activity/models.py:54 apps/note/models/transactions.py:81 #: apps/activity/models.py:54 apps/note/models/transactions.py:81
#: apps/permission/models.py:120 apps/permission/models.py:199 #: apps/permission/models.py:120 apps/permission/models.py:199
#: apps/wei/models.py:71 apps/wei/models.py:128 #: apps/wei/models.py:73 apps/wei/models.py:130
#: templates/activity/activity_detail.html:16 #: templates/activity/activity_detail.html:16
msgid "description" msgid "description"
msgstr "description" msgstr "description"
@ -84,9 +84,9 @@ msgstr "description"
msgid "type" msgid "type"
msgstr "type" msgstr "type"
#: apps/activity/models.py:67 apps/logs/models.py:22 apps/member/models.py:267 #: apps/activity/models.py:67 apps/logs/models.py:22 apps/member/models.py:270
#: apps/note/models/notes.py:126 apps/treasury/models.py:222 #: apps/note/models/notes.py:126 apps/treasury/models.py:222
#: apps/wei/models.py:159 templates/treasury/sogecredit_detail.html:14 #: apps/wei/models.py:161 templates/treasury/sogecredit_detail.html:14
#: templates/wei/survey.html:16 #: templates/wei/survey.html:16
msgid "user" msgid "user"
msgstr "utilisateur" msgstr "utilisateur"
@ -293,21 +293,21 @@ msgstr "journal de modification"
msgid "changelogs" msgid "changelogs"
msgstr "journaux de modifications" msgstr "journaux de modifications"
#: apps/member/admin.py:52 apps/member/models.py:186 #: apps/member/admin.py:52 apps/member/models.py:189
#: templates/member/club_info.html:41 #: templates/member/club_info.html:41
msgid "membership fee (paid students)" msgid "membership fee (paid students)"
msgstr "cotisation pour adhérer (normalien élève)" msgstr "cotisation pour adhérer (normalien élève)"
#: apps/member/admin.py:53 apps/member/models.py:191 #: apps/member/admin.py:53 apps/member/models.py:194
#: templates/member/club_info.html:44 #: templates/member/club_info.html:44
msgid "membership fee (unpaid students)" msgid "membership fee (unpaid students)"
msgstr "cotisation pour adhérer (normalien étudiant)" msgstr "cotisation pour adhérer (normalien étudiant)"
#: apps/member/admin.py:67 apps/member/models.py:278 #: apps/member/admin.py:67 apps/member/models.py:281
msgid "roles" msgid "roles"
msgstr "rôles" msgstr "rôles"
#: apps/member/admin.py:68 apps/member/models.py:292 #: apps/member/admin.py:68 apps/member/models.py:295
msgid "fee" msgid "fee"
msgstr "cotisation" msgstr "cotisation"
@ -315,7 +315,7 @@ msgstr "cotisation"
msgid "member" msgid "member"
msgstr "adhérent" msgstr "adhérent"
#: apps/member/forms.py:59 apps/member/views.py:82 #: apps/member/forms.py:59 apps/member/views.py:84
#: apps/registration/forms.py:28 #: apps/registration/forms.py:28
msgid "An alias with a similar name already exists." msgid "An alias with a similar name already exists."
msgstr "Un alias avec un nom similaire existe déjà." msgstr "Un alias avec un nom similaire existe déjà."
@ -361,171 +361,171 @@ msgstr "Utilisateur"
msgid "Roles" msgid "Roles"
msgstr "Rôles" msgstr "Rôles"
#: apps/member/models.py:35 #: apps/member/models.py:38
#: templates/registration/future_profile_detail.html:40 #: templates/registration/future_profile_detail.html:40
#: templates/wei/weimembership_form.html:48 #: templates/wei/weimembership_form.html:48
msgid "phone number" msgid "phone number"
msgstr "numéro de téléphone" msgstr "numéro de téléphone"
#: apps/member/models.py:42 templates/member/profile_info.html:29 #: apps/member/models.py:45 templates/member/profile_info.html:29
#: templates/registration/future_profile_detail.html:34 #: templates/registration/future_profile_detail.html:34
#: templates/wei/weimembership_form.html:42 #: templates/wei/weimembership_form.html:42
msgid "section" msgid "section"
msgstr "section" msgstr "section"
#: apps/member/models.py:43 #: apps/member/models.py:46
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\"" msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
msgstr "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\"" msgstr "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
#: apps/member/models.py:51 templates/wei/weimembership_form.html:36 #: apps/member/models.py:54 templates/wei/weimembership_form.html:36
msgid "department" msgid "department"
msgstr "département" msgstr "département"
#: apps/member/models.py:53 #: apps/member/models.py:56
msgid "Informatics (A0)" msgid "Informatics (A0)"
msgstr "Informatique (A0)" msgstr "Informatique (A0)"
#: apps/member/models.py:54 #: apps/member/models.py:57
msgid "Mathematics (A1)" msgid "Mathematics (A1)"
msgstr "Mathématiques (A1)" msgstr "Mathématiques (A1)"
#: apps/member/models.py:55 #: apps/member/models.py:58
msgid "Physics (A2)" msgid "Physics (A2)"
msgstr "Physique (A2)" msgstr "Physique (A2)"
#: apps/member/models.py:56 #: apps/member/models.py:59
msgid "Applied physics (A'2)" msgid "Applied physics (A'2)"
msgstr "Physique appliquée (A'2)" msgstr "Physique appliquée (A'2)"
#: apps/member/models.py:57 #: apps/member/models.py:60
msgid "Chemistry (A''2)" msgid "Chemistry (A''2)"
msgstr "Chimie (A''2)" msgstr "Chimie (A''2)"
#: apps/member/models.py:58 #: apps/member/models.py:61
msgid "Biology (A3)" msgid "Biology (A3)"
msgstr "Biologie (A3)" msgstr "Biologie (A3)"
#: apps/member/models.py:59 #: apps/member/models.py:62
msgid "SAPHIRE (B1234)" msgid "SAPHIRE (B1234)"
msgstr "SAPHIRE (B1234)" msgstr "SAPHIRE (B1234)"
#: apps/member/models.py:60 #: apps/member/models.py:63
msgid "Mechanics (B1)" msgid "Mechanics (B1)"
msgstr "Mécanique (B1)" msgstr "Mécanique (B1)"
#: apps/member/models.py:61 #: apps/member/models.py:64
msgid "Civil engineering (B2)" msgid "Civil engineering (B2)"
msgstr "Génie civil (B2)" msgstr "Génie civil (B2)"
#: apps/member/models.py:62 #: apps/member/models.py:65
msgid "Mechanical engineering (B3)" msgid "Mechanical engineering (B3)"
msgstr "Génie mécanique (B3)" msgstr "Génie mécanique (B3)"
#: apps/member/models.py:63 #: apps/member/models.py:66
msgid "EEA (B4)" msgid "EEA (B4)"
msgstr "EEA (B4)" msgstr "EEA (B4)"
#: apps/member/models.py:64 #: apps/member/models.py:67
msgid "Design (C)" msgid "Design (C)"
msgstr "Design (C)" msgstr "Design (C)"
#: apps/member/models.py:65 #: apps/member/models.py:68
msgid "Economy-management (D2)" msgid "Economy-management (D2)"
msgstr "Économie-gestion (D2)" msgstr "Économie-gestion (D2)"
#: apps/member/models.py:66 #: apps/member/models.py:69
msgid "Social sciences (D3)" msgid "Social sciences (D3)"
msgstr "Sciences sociales (D3)" msgstr "Sciences sociales (D3)"
#: apps/member/models.py:67 #: apps/member/models.py:70
msgid "English (E)" msgid "English (E)"
msgstr "Anglais (E)" msgstr "Anglais (E)"
#: apps/member/models.py:68 #: apps/member/models.py:71
msgid "External (EXT)" msgid "External (EXT)"
msgstr "Externe (EXT)" msgstr "Externe (EXT)"
#: apps/member/models.py:75 #: apps/member/models.py:78
msgid "promotion" msgid "promotion"
msgstr "promotion" msgstr "promotion"
#: apps/member/models.py:76 #: apps/member/models.py:79
msgid "Year of entry to the school (None if not ENS student)" msgid "Year of entry to the school (None if not ENS student)"
msgstr "Année d'entrée dans l'école (None si non-étudiant·e de l'ENS)" msgstr "Année d'entrée dans l'école (None si non-étudiant·e de l'ENS)"
#: apps/member/models.py:80 templates/member/profile_info.html:32 #: apps/member/models.py:83 templates/member/profile_info.html:32
#: templates/registration/future_profile_detail.html:37 #: templates/registration/future_profile_detail.html:37
#: templates/wei/weimembership_form.html:45 #: templates/wei/weimembership_form.html:45
msgid "address" msgid "address"
msgstr "adresse" msgstr "adresse"
#: apps/member/models.py:87 #: apps/member/models.py:90
#: templates/registration/future_profile_detail.html:43 #: templates/registration/future_profile_detail.html:43
#: templates/wei/weimembership_form.html:51 #: templates/wei/weimembership_form.html:51
msgid "paid" msgid "paid"
msgstr "payé" msgstr "payé"
#: apps/member/models.py:88 #: apps/member/models.py:91
msgid "Tells if the user receive a salary." msgid "Tells if the user receive a salary."
msgstr "Indique si l'utilisateur perçoit un salaire." msgstr "Indique si l'utilisateur perçoit un salaire."
#: apps/member/models.py:93 #: apps/member/models.py:96
msgid "email confirmed" msgid "email confirmed"
msgstr "adresse email confirmée" msgstr "adresse email confirmée"
#: apps/member/models.py:98 #: apps/member/models.py:101
msgid "registration valid" msgid "registration valid"
msgstr "inscription valid" msgstr "inscription valid"
#: apps/member/models.py:127 apps/member/models.py:128 #: apps/member/models.py:130 apps/member/models.py:131
msgid "user profile" msgid "user profile"
msgstr "profil utilisateur" msgstr "profil utilisateur"
#: apps/member/models.py:135 #: apps/member/models.py:138
msgid "Activate your Note Kfet account" msgid "Activate your Note Kfet account"
msgstr "Activez votre compte Note Kfet" msgstr "Activez votre compte Note Kfet"
#: apps/member/models.py:164 templates/member/club_info.html:57 #: apps/member/models.py:167 templates/member/club_info.html:57
#: templates/registration/future_profile_detail.html:22 #: templates/registration/future_profile_detail.html:22
#: templates/wei/weiclub_info.html:52 templates/wei/weimembership_form.html:24 #: templates/wei/weiclub_info.html:52 templates/wei/weimembership_form.html:24
msgid "email" msgid "email"
msgstr "courriel" msgstr "courriel"
#: apps/member/models.py:171 #: apps/member/models.py:174
msgid "parent club" msgid "parent club"
msgstr "club parent" msgstr "club parent"
#: apps/member/models.py:180 #: apps/member/models.py:183
msgid "require memberships" msgid "require memberships"
msgstr "nécessite des adhésions" msgstr "nécessite des adhésions"
#: apps/member/models.py:181 #: apps/member/models.py:184
msgid "Uncheck if this club don't require memberships." msgid "Uncheck if this club don't require memberships."
msgstr "Décochez si ce club n'utilise pas d'adhésions." msgstr "Décochez si ce club n'utilise pas d'adhésions."
#: apps/member/models.py:197 templates/member/club_info.html:33 #: apps/member/models.py:200 templates/member/club_info.html:33
msgid "membership duration" msgid "membership duration"
msgstr "durée de l'adhésion" msgstr "durée de l'adhésion"
#: apps/member/models.py:198 #: apps/member/models.py:201
msgid "The longest time (in days) a membership can last (NULL = infinite)." msgid "The longest time (in days) a membership can last (NULL = infinite)."
msgstr "La durée maximale (en jours) d'une adhésion (NULL = infinie)." msgstr "La durée maximale (en jours) d'une adhésion (NULL = infinie)."
#: apps/member/models.py:205 templates/member/club_info.html:23 #: apps/member/models.py:208 templates/member/club_info.html:23
msgid "membership start" msgid "membership start"
msgstr "début de l'adhésion" msgstr "début de l'adhésion"
#: apps/member/models.py:206 #: apps/member/models.py:209
msgid "How long after January 1st the members can renew their membership." msgid "How long after January 1st the members can renew their membership."
msgstr "" msgstr ""
"Combien de temps après le 1er Janvier les adhérents peuvent renouveler leur " "Combien de temps après le 1er Janvier les adhérents peuvent renouveler leur "
"adhésion." "adhésion."
#: apps/member/models.py:213 templates/member/club_info.html:28 #: apps/member/models.py:216 templates/member/club_info.html:28
msgid "membership end" msgid "membership end"
msgstr "fin de l'adhésion" msgstr "fin de l'adhésion"
#: apps/member/models.py:214 #: apps/member/models.py:217
msgid "" msgid ""
"How long the membership can last after January 1st of the next year after " "How long the membership can last after January 1st of the next year after "
"members can renew their membership." "members can renew their membership."
@ -533,46 +533,46 @@ msgstr ""
"Combien de temps l'adhésion peut durer après le 1er Janvier de l'année " "Combien de temps l'adhésion peut durer après le 1er Janvier de l'année "
"suivante avant que les adhérents peuvent renouveler leur adhésion." "suivante avant que les adhérents peuvent renouveler leur adhésion."
#: apps/member/models.py:248 apps/member/models.py:273 #: apps/member/models.py:251 apps/member/models.py:276
#: apps/note/models/notes.py:163 #: apps/note/models/notes.py:163
msgid "club" msgid "club"
msgstr "club" msgstr "club"
#: apps/member/models.py:249 #: apps/member/models.py:252
msgid "clubs" msgid "clubs"
msgstr "clubs" msgstr "clubs"
#: apps/member/models.py:283 #: apps/member/models.py:286
msgid "membership starts on" msgid "membership starts on"
msgstr "l'adhésion commence le" msgstr "l'adhésion commence le"
#: apps/member/models.py:287 #: apps/member/models.py:290
msgid "membership ends on" msgid "membership ends on"
msgstr "l'adhésion finit le" msgstr "l'adhésion finit le"
#: apps/member/models.py:339 #: apps/member/models.py:342
#, python-brace-format #, python-brace-format
msgid "The role {role} does not apply to the club {club}." msgid "The role {role} does not apply to the club {club}."
msgstr "Le rôle {role} ne s'applique pas au club {club}." msgstr "Le rôle {role} ne s'applique pas au club {club}."
#: apps/member/models.py:350 apps/member/views.py:583 #: apps/member/models.py:353 apps/member/views.py:589
msgid "User is already a member of the club" msgid "User is already a member of the club"
msgstr "L'utilisateur est déjà membre du club" msgstr "L'utilisateur est déjà membre du club"
#: apps/member/models.py:386 #: apps/member/models.py:400
msgid "User is not a member of the parent club" msgid "User is not a member of the parent club"
msgstr "L'utilisateur n'est pas membre du club parent" msgstr "L'utilisateur n'est pas membre du club parent"
#: apps/member/models.py:439 #: apps/member/models.py:453
#, python-brace-format #, python-brace-format
msgid "Membership of {user} for the club {club}" msgid "Membership of {user} for the club {club}"
msgstr "Adhésion de {user} pour le club {club}" msgstr "Adhésion de {user} pour le club {club}"
#: apps/member/models.py:442 #: apps/member/models.py:456
msgid "membership" msgid "membership"
msgstr "adhésion" msgstr "adhésion"
#: apps/member/models.py:443 #: apps/member/models.py:457
msgid "memberships" msgid "memberships"
msgstr "adhésions" msgstr "adhésions"
@ -590,47 +590,47 @@ msgstr "Modifier le profil"
msgid "This address must be valid." msgid "This address must be valid."
msgstr "Cette adresse doit être valide." msgstr "Cette adresse doit être valide."
#: apps/member/views.py:128 #: apps/member/views.py:134
msgid "Profile detail" msgid "Profile detail"
msgstr "Détails de l'utilisateur" msgstr "Détails de l'utilisateur"
#: apps/member/views.py:162 #: apps/member/views.py:168
msgid "Search user" msgid "Search user"
msgstr "Chercher un utilisateur" msgstr "Chercher un utilisateur"
#: apps/member/views.py:196 apps/member/views.py:382 #: apps/member/views.py:202 apps/member/views.py:388
msgid "Note aliases" msgid "Note aliases"
msgstr "Alias de la note" msgstr "Alias de la note"
#: apps/member/views.py:210 #: apps/member/views.py:216
msgid "Update note picture" msgid "Update note picture"
msgstr "Modifier la photo de la note" msgstr "Modifier la photo de la note"
#: apps/member/views.py:268 templates/member/profile_info.html:43 #: apps/member/views.py:274 templates/member/profile_info.html:43
msgid "Manage auth token" msgid "Manage auth token"
msgstr "Gérer les jetons d'authentification" msgstr "Gérer les jetons d'authentification"
#: apps/member/views.py:296 #: apps/member/views.py:302
msgid "Create new club" msgid "Create new club"
msgstr "Créer un nouveau club" msgstr "Créer un nouveau club"
#: apps/member/views.py:308 #: apps/member/views.py:314
msgid "Search club" msgid "Search club"
msgstr "Chercher un club" msgstr "Chercher un club"
#: apps/member/views.py:333 #: apps/member/views.py:339
msgid "Club detail" msgid "Club detail"
msgstr "Détails du club" msgstr "Détails du club"
#: apps/member/views.py:399 #: apps/member/views.py:405
msgid "Update club" msgid "Update club"
msgstr "Modifier le club" msgstr "Modifier le club"
#: apps/member/views.py:433 #: apps/member/views.py:439
msgid "Add new member to the club" msgid "Add new member to the club"
msgstr "Ajouter un nouveau membre au club" msgstr "Ajouter un nouveau membre au club"
#: apps/member/views.py:574 apps/wei/views.py:862 #: apps/member/views.py:580 apps/wei/views.py:862
msgid "" msgid ""
"This user don't have enough money to join this club, and can't have a " "This user don't have enough money to join this club, and can't have a "
"negative balance." "negative balance."
@ -638,25 +638,25 @@ msgstr ""
"Cet utilisateur n'a pas assez d'argent pour rejoindre ce club et ne peut pas " "Cet utilisateur n'a pas assez d'argent pour rejoindre ce club et ne peut pas "
"avoir un solde négatif." "avoir un solde négatif."
#: apps/member/views.py:587 #: apps/member/views.py:593
msgid "The membership must start after {:%m-%d-%Y}." msgid "The membership must start after {:%m-%d-%Y}."
msgstr "L'adhésion doit commencer après le {:%d/%m/%Y}." msgstr "L'adhésion doit commencer après le {:%d/%m/%Y}."
#: apps/member/views.py:592 #: apps/member/views.py:598
msgid "The membership must begin before {:%m-%d-%Y}." msgid "The membership must begin before {:%m-%d-%Y}."
msgstr "L'adhésion doit commencer avant le {:%d/%m/%Y}." msgstr "L'adhésion doit commencer avant le {:%d/%m/%Y}."
#: apps/member/views.py:609 apps/member/views.py:611 apps/member/views.py:613 #: apps/member/views.py:615 apps/member/views.py:617 apps/member/views.py:619
#: apps/registration/views.py:290 apps/registration/views.py:292 #: apps/registration/views.py:290 apps/registration/views.py:292
#: apps/registration/views.py:294 apps/wei/views.py:867 apps/wei/views.py:871 #: apps/registration/views.py:294 apps/wei/views.py:867 apps/wei/views.py:871
msgid "This field is required." msgid "This field is required."
msgstr "Ce champ est requis." msgstr "Ce champ est requis."
#: apps/member/views.py:690 #: apps/member/views.py:703
msgid "Manage roles of an user in the club" msgid "Manage roles of an user in the club"
msgstr "Gérer les rôles d'un utilisateur dans le club" msgstr "Gérer les rôles d'un utilisateur dans le club"
#: apps/member/views.py:715 #: apps/member/views.py:728
msgid "Members of the club" msgid "Members of the club"
msgstr "Membres du club" msgstr "Membres du club"
@ -1419,13 +1419,13 @@ msgstr "Liste des crédits de la Société générale"
msgid "Manage credits from the Société générale" msgid "Manage credits from the Société générale"
msgstr "Gérer les crédits de la Société générale" msgstr "Gérer les crédits de la Société générale"
#: apps/wei/apps.py:10 apps/wei/models.py:48 apps/wei/models.py:49 #: apps/wei/apps.py:10 apps/wei/models.py:50 apps/wei/models.py:51
#: apps/wei/models.py:60 apps/wei/models.py:166 templates/base.html:124 #: apps/wei/models.py:62 apps/wei/models.py:168 templates/base.html:124
msgid "WEI" msgid "WEI"
msgstr "WEI" msgstr "WEI"
#: apps/wei/forms/registration.py:50 apps/wei/models.py:112 #: apps/wei/forms/registration.py:50 apps/wei/models.py:114
#: apps/wei/models.py:297 #: apps/wei/models.py:299
msgid "bus" msgid "bus"
msgstr "Bus" msgstr "Bus"
@ -1451,7 +1451,7 @@ msgstr ""
"bus ou électron libre)" "bus ou électron libre)"
#: apps/wei/forms/registration.py:66 apps/wei/forms/registration.py:76 #: apps/wei/forms/registration.py:66 apps/wei/forms/registration.py:76
#: apps/wei/models.py:147 #: apps/wei/models.py:149
msgid "WEI Roles" msgid "WEI Roles"
msgstr "Rôles au WEI" msgstr "Rôles au WEI"
@ -1463,105 +1463,105 @@ msgstr "Sélectionnez les rôles qui vous intéressent."
msgid "This team doesn't belong to the given bus." msgid "This team doesn't belong to the given bus."
msgstr "Cette équipe n'appartient pas à ce bus." msgstr "Cette équipe n'appartient pas à ce bus."
#: apps/wei/models.py:23 templates/wei/weiclub_info.html:23 #: apps/wei/models.py:25 templates/wei/weiclub_info.html:23
msgid "year" msgid "year"
msgstr "année" msgstr "année"
#: apps/wei/models.py:27 templates/wei/weiclub_info.html:17 #: apps/wei/models.py:29 templates/wei/weiclub_info.html:17
msgid "date start" msgid "date start"
msgstr "début" msgstr "début"
#: apps/wei/models.py:31 templates/wei/weiclub_info.html:20 #: apps/wei/models.py:33 templates/wei/weiclub_info.html:20
msgid "date end" msgid "date end"
msgstr "fin" msgstr "fin"
#: apps/wei/models.py:76 #: apps/wei/models.py:78
msgid "survey information" msgid "survey information"
msgstr "informations sur le questionnaire" msgstr "informations sur le questionnaire"
#: apps/wei/models.py:77 #: apps/wei/models.py:79
msgid "Information about the survey for new members, encoded in JSON" msgid "Information about the survey for new members, encoded in JSON"
msgstr "" msgstr ""
"Informations sur le sondage pour les nouveaux membres, encodées en JSON" "Informations sur le sondage pour les nouveaux membres, encodées en JSON"
#: apps/wei/models.py:99 #: apps/wei/models.py:101
msgid "Bus" msgid "Bus"
msgstr "Bus" msgstr "Bus"
#: apps/wei/models.py:100 templates/wei/weiclub_tables.html:32 #: apps/wei/models.py:102 templates/wei/weiclub_tables.html:32
msgid "Buses" msgid "Buses"
msgstr "Bus" msgstr "Bus"
#: apps/wei/models.py:121 #: apps/wei/models.py:123
msgid "color" msgid "color"
msgstr "couleur" msgstr "couleur"
#: apps/wei/models.py:122 #: apps/wei/models.py:124
msgid "The color of the T-Shirt, stored with its number equivalent" msgid "The color of the T-Shirt, stored with its number equivalent"
msgstr "" msgstr ""
"La couleur du T-Shirt, stocké sous la forme de son équivalent numérique" "La couleur du T-Shirt, stocké sous la forme de son équivalent numérique"
#: apps/wei/models.py:136 #: apps/wei/models.py:138
msgid "Bus team" msgid "Bus team"
msgstr "Équipe de bus" msgstr "Équipe de bus"
#: apps/wei/models.py:137 #: apps/wei/models.py:139
msgid "Bus teams" msgid "Bus teams"
msgstr "Équipes de bus" msgstr "Équipes de bus"
#: apps/wei/models.py:146 #: apps/wei/models.py:148
msgid "WEI Role" msgid "WEI Role"
msgstr "Rôle au WEI" msgstr "Rôle au WEI"
#: apps/wei/models.py:171 #: apps/wei/models.py:173
msgid "Credit from Société générale" msgid "Credit from Société générale"
msgstr "Crédit de la Société générale" msgstr "Crédit de la Société générale"
#: apps/wei/models.py:176 #: apps/wei/models.py:178
msgid "Caution check given" msgid "Caution check given"
msgstr "Chèque de caution donné" msgstr "Chèque de caution donné"
#: apps/wei/models.py:180 templates/wei/weimembership_form.html:68 #: apps/wei/models.py:182 templates/wei/weimembership_form.html:68
msgid "birth date" msgid "birth date"
msgstr "date de naissance" msgstr "date de naissance"
#: apps/wei/models.py:186 apps/wei/models.py:196 #: apps/wei/models.py:188 apps/wei/models.py:198
msgid "Male" msgid "Male"
msgstr "Homme" msgstr "Homme"
#: apps/wei/models.py:187 apps/wei/models.py:197 #: apps/wei/models.py:189 apps/wei/models.py:199
msgid "Female" msgid "Female"
msgstr "Femme" msgstr "Femme"
#: apps/wei/models.py:188 #: apps/wei/models.py:190
msgid "Non binary" msgid "Non binary"
msgstr "Non-binaire" msgstr "Non-binaire"
#: apps/wei/models.py:190 templates/wei/weimembership_form.html:59 #: apps/wei/models.py:192 templates/wei/weimembership_form.html:59
msgid "gender" msgid "gender"
msgstr "genre" msgstr "genre"
#: apps/wei/models.py:199 templates/wei/weimembership_form.html:62 #: apps/wei/models.py:201 templates/wei/weimembership_form.html:62
msgid "clothing cut" msgid "clothing cut"
msgstr "coupe de vêtement" msgstr "coupe de vêtement"
#: apps/wei/models.py:212 templates/wei/weimembership_form.html:65 #: apps/wei/models.py:214 templates/wei/weimembership_form.html:65
msgid "clothing size" msgid "clothing size"
msgstr "taille de vêtement" msgstr "taille de vêtement"
#: apps/wei/models.py:218 templates/wei/weimembership_form.html:71 #: apps/wei/models.py:220 templates/wei/weimembership_form.html:71
msgid "health issues" msgid "health issues"
msgstr "problèmes de santé" msgstr "problèmes de santé"
#: apps/wei/models.py:223 templates/wei/weimembership_form.html:74 #: apps/wei/models.py:225 templates/wei/weimembership_form.html:74
msgid "emergency contact name" msgid "emergency contact name"
msgstr "Nom du contact en cas d'urgence" msgstr "Nom du contact en cas d'urgence"
#: apps/wei/models.py:228 templates/wei/weimembership_form.html:77 #: apps/wei/models.py:230 templates/wei/weimembership_form.html:77
msgid "emergency contact phone" msgid "emergency contact phone"
msgstr "Téléphone du contact en cas d'urgence" msgstr "Téléphone du contact en cas d'urgence"
#: apps/wei/models.py:233 templates/wei/weimembership_form.html:80 #: apps/wei/models.py:235 templates/wei/weimembership_form.html:80
msgid "" msgid ""
"Register on the mailing list to stay informed of the events of the campus (1 " "Register on the mailing list to stay informed of the events of the campus (1 "
"mail/week)" "mail/week)"
@ -1569,7 +1569,7 @@ msgstr ""
"S'inscrire sur la liste de diffusion pour rester informé des événements sur " "S'inscrire sur la liste de diffusion pour rester informé des événements sur "
"le campus (1 mail par semaine)" "le campus (1 mail par semaine)"
#: apps/wei/models.py:238 templates/wei/weimembership_form.html:83 #: apps/wei/models.py:240 templates/wei/weimembership_form.html:83
msgid "" msgid ""
"Register on the mailing list to stay informed of the sport events of the " "Register on the mailing list to stay informed of the sport events of the "
"campus (1 mail/week)" "campus (1 mail/week)"
@ -1577,7 +1577,7 @@ msgstr ""
"S'inscrire sur la liste de diffusion pour rester informé des actualités " "S'inscrire sur la liste de diffusion pour rester informé des actualités "
"sportives sur le campus (1 mail par semaine)" "sportives sur le campus (1 mail par semaine)"
#: apps/wei/models.py:243 templates/wei/weimembership_form.html:86 #: apps/wei/models.py:245 templates/wei/weimembership_form.html:86
msgid "" msgid ""
"Register on the mailing list to stay informed of the art events of the " "Register on the mailing list to stay informed of the art events of the "
"campus (1 mail/week)" "campus (1 mail/week)"
@ -1585,19 +1585,19 @@ msgstr ""
"S'inscrire sur la liste de diffusion pour rester informé des actualités " "S'inscrire sur la liste de diffusion pour rester informé des actualités "
"artistiques sur le campus (1 mail par semaine)" "artistiques sur le campus (1 mail par semaine)"
#: apps/wei/models.py:248 templates/wei/weimembership_form.html:56 #: apps/wei/models.py:250 templates/wei/weimembership_form.html:56
msgid "first year" msgid "first year"
msgstr "première année" msgstr "première année"
#: apps/wei/models.py:249 #: apps/wei/models.py:251
msgid "Tells if the user is new in the school." msgid "Tells if the user is new in the school."
msgstr "Indique si l'utilisateur est nouveau dans l'école." msgstr "Indique si l'utilisateur est nouveau dans l'école."
#: apps/wei/models.py:254 #: apps/wei/models.py:256
msgid "registration information" msgid "registration information"
msgstr "informations sur l'inscription" msgstr "informations sur l'inscription"
#: apps/wei/models.py:255 #: apps/wei/models.py:257
msgid "" msgid ""
"Information about the registration (buses for old members, survey fot the " "Information about the registration (buses for old members, survey fot the "
"new members), encoded in JSON" "new members), encoded in JSON"
@ -1605,27 +1605,27 @@ msgstr ""
"Informations sur l'inscription (bus pour les 2A+, questionnaire pour les " "Informations sur l'inscription (bus pour les 2A+, questionnaire pour les "
"1A), encodées en JSON" "1A), encodées en JSON"
#: apps/wei/models.py:286 #: apps/wei/models.py:288
msgid "WEI User" msgid "WEI User"
msgstr "Participant au WEI" msgstr "Participant au WEI"
#: apps/wei/models.py:287 #: apps/wei/models.py:289
msgid "WEI Users" msgid "WEI Users"
msgstr "Participants au WEI" msgstr "Participants au WEI"
#: apps/wei/models.py:307 #: apps/wei/models.py:309
msgid "team" msgid "team"
msgstr "équipe" msgstr "équipe"
#: apps/wei/models.py:317 #: apps/wei/models.py:319
msgid "WEI registration" msgid "WEI registration"
msgstr "inscription au WEI" msgstr "inscription au WEI"
#: apps/wei/models.py:321 #: apps/wei/models.py:323
msgid "WEI membership" msgid "WEI membership"
msgstr "adhésion au WEI" msgstr "adhésion au WEI"
#: apps/wei/models.py:322 #: apps/wei/models.py:324
msgid "WEI memberships" msgid "WEI memberships"
msgstr "adhésions au WEI" msgstr "adhésions au WEI"
@ -1765,15 +1765,15 @@ msgstr "Cet utilisateur n'a pas donné son chèque de caution."
msgid "Survey WEI" msgid "Survey WEI"
msgstr "Questionnaire WEI" msgstr "Questionnaire WEI"
#: note_kfet/settings/base.py:156 #: note_kfet/settings/base.py:157
msgid "German" msgid "German"
msgstr "Allemand" msgstr "Allemand"
#: note_kfet/settings/base.py:157 #: note_kfet/settings/base.py:158
msgid "English" msgid "English"
msgstr "Anglais" msgstr "Anglais"
#: note_kfet/settings/base.py:158 #: note_kfet/settings/base.py:159
msgid "French" msgid "French"
msgstr "Français" msgstr "Français"
@ -2712,29 +2712,25 @@ msgstr ""
"L'inscription va échouer." "L'inscription va échouer."
#: templates/wei/weimembership_form.html:169 #: templates/wei/weimembership_form.html:169
#, fuzzy, python-format #, python-format
#| msgid "The note has enough money, the registration is possible."
msgid "" msgid ""
"The note has enough money (%(pretty_fee)s required), the registration is " "The note has enough money (%(pretty_fee)s required), the registration is "
"possible." "possible."
msgstr "La note a assez d'argent, l'inscription est possible." msgstr ""
"La note a assez d'argent (%(pretty_fee) requis), l'inscription est possible."
#: templates/wei/weimembership_form.html:178 #: templates/wei/weimembership_form.html:178
msgid "The user didn't give her/his caution check." msgid "The user didn't give her/his caution check."
msgstr "L'utilisateur n'a pas donné son chèque de caution." msgstr "L'utilisateur n'a pas donné son chèque de caution."
#: templates/wei/weimembership_form.html:186 #: templates/wei/weimembership_form.html:186
#, fuzzy
#| msgid ""
#| "You must also go to the Kfet to pay your membership. The WEI registration "
#| "includes the BDE membership."
msgid "" msgid ""
"This user is not a member of the Kfet club for the coming year. The " "This user is not a member of the Kfet club for the coming year. The "
"membership will be processed automatically, the WEI registration includes " "membership will be processed automatically, the WEI registration includes "
"the membership fee." "the membership fee."
msgstr "" msgstr ""
"Vous devrez également vous rendre à la Kfet pour payer votre adhésion. " "Vous devrez également vous rendre à la Kfet pour payer votre adhésion pour "
"L'inscription au WEI inclut l'adhésion au BDE." "l'année à venir. L'inscription au WEI inclut l'adhésion au BDE."
#: templates/wei/weimembership_list.html:24 #: templates/wei/weimembership_list.html:24
msgid "View unvalidated registrations..." msgid "View unvalidated registrations..."
@ -2760,16 +2756,3 @@ msgstr "Il n'y a pas de pré-inscription en attente avec cette entrée."
#: templates/wei/weiregistration_list.html:24 #: templates/wei/weiregistration_list.html:24
msgid "View validated memberships..." msgid "View validated memberships..."
msgstr "Voir les adhésions validées ..." msgstr "Voir les adhésions validées ..."
#~ msgid ""
#~ "This user is not a member of the Kfet club for the comming year. Please "
#~ "adhere <a href=\"%(future_user_detail)s\">here if he/she is in her/his "
#~ "first year</a> or <a href=\"%(club_detail)s\">here if he/she was an old "
#~ "member</a> before you validate the registration of the WEI."
#~ msgstr ""
#~ "Cet utilisateur n'est pas membre du club Kfet pour l'année à venir. Merci "
#~ "de le faire adhérer\n"
#~ "<a href=\"%(future_user_detail)s\">ici s'iel est en première année</a>\n"
#~ "ou <a href=\"%(club_detail)s\">ici s'iel est un ancien membre</a> avant "
#~ "de valider\n"
#~ "l'inscription au WEI."

View File

@ -37,6 +37,7 @@ INSTALLED_APPS = [
# External apps # External apps
'mailer', 'mailer',
'phonenumber_field',
'polymorphic', 'polymorphic',
'crispy_forms', 'crispy_forms',
'django_tables2', 'django_tables2',
@ -195,3 +196,7 @@ MEDIA_URL = '/media/'
# Profile Picture Settings # Profile Picture Settings
PIC_WIDTH = 200 PIC_WIDTH = 200
PIC_RATIO = 1 PIC_RATIO = 1
PHONENUMBER_DB_FORMAT = 'NATIONAL'
PHONENUMBER_DEFAULT_REGION = 'FR'

View File

@ -7,11 +7,13 @@ django-crispy-forms==1.7.2
django-extensions==2.1.9 django-extensions==2.1.9
django-filter==2.2.0 django-filter==2.2.0
django-mailer==2.0.1 django-mailer==2.0.1
django-phonenumber-field==4.0.0
django-polymorphic==2.0.3 django-polymorphic==2.0.3
django-tables2==2.1.0 django-tables2==2.1.0
docutils==0.14 docutils==0.14
idna==2.8 idna==2.8
oauthlib==3.1.0 oauthlib==3.1.0
phonenumbers==8.12.7
Pillow==7.1.2 Pillow==7.1.2
python3-openid==3.1.0 python3-openid==3.1.0
pytz==2019.1 pytz==2019.1