Merge branch 'update_translations' into 'master'

Update translations and Bootstrap

See merge request bde/nk20!14
This commit is contained in:
erdnaxe 2020-02-21 13:59:48 +01:00
commit 12d7ddfa30
8 changed files with 387 additions and 320 deletions

View File

@ -10,11 +10,10 @@ from .models import Club
class ClubTable(tables.Table):
class Meta:
attrs = {
'class':
'table table-bordered table-condensed table-striped table-hover'
'class': 'table table-condensed table-striped table-hover'
}
model = Club
template_name = 'django_tables2/bootstrap.html'
template_name = 'django_tables2/bootstrap4.html'
fields = ('id', 'name', 'email')
row_attrs = {
'class': 'table-row',
@ -28,9 +27,8 @@ class UserTable(tables.Table):
class Meta:
attrs = {
'class':
'table table-bordered table-condensed table-striped table-hover'
'class': 'table table-condensed table-striped table-hover'
}
template_name = 'django_tables2/bootstrap.html'
template_name = 'django_tables2/bootstrap4.html'
fields = ('last_name', 'first_name', 'username', 'email')
model = User

View File

@ -60,6 +60,7 @@ class UserUpdateView(LoginRequiredMixin, UpdateView):
context['user'] = self.request.user
context["profile_form"] = self.second_form(
instance=context['user_modified'].profile)
context['title'] = _("Update Profile")
return context
@ -111,7 +112,7 @@ class UserUpdateView(LoginRequiredMixin, UpdateView):
class UserDetailView(LoginRequiredMixin, DetailView):
"""
Affiche les informations sur un utilisateur, sa note, ses clubs ...
Affiche les informations sur un utilisateur, sa note, ses clubs...
"""
model = Profile
context_object_name = "profile"
@ -125,6 +126,10 @@ class UserDetailView(LoginRequiredMixin, DetailView):
club_list = \
Membership.objects.all().filter(user=user).only("club")
context['club_list'] = ClubTable(club_list)
context['title'] = _("Account #%(id)s: %(username)s") % {
'id': user.pk,
'username': user.username,
}
return context

View File

@ -11,10 +11,10 @@ class HistoryTable(tables.Table):
class Meta:
attrs = {
'class':
'table table-bordered table-condensed table-striped table-hover'
'table table-condensed table-striped table-hover'
}
model = Transaction
template_name = 'django_tables2/bootstrap.html'
template_name = 'django_tables2/bootstrap4.html'
sequence = ('...', 'total', 'valid')
total = tables.Column() # will use Transaction.total() !!

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-06 21:37+0100\n"
"POT-Creation-Date: 2020-02-21 13:50+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -18,338 +18,359 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: apps/activity/apps.py:11 apps/activity/models.py:77
#: apps/activity/apps.py:10 apps/activity/models.py:76
msgid "activity"
msgstr ""
#: apps/activity/models.py:20 apps/activity/models.py:45
#: apps/member/models.py:61 apps/member/models.py:112
#: apps/note/models/notes.py:178 apps/note/models/transactions.py:24
#: templates/member/profile_detail.html:10
#: apps/activity/models.py:19 apps/activity/models.py:44
#: apps/member/models.py:60 apps/member/models.py:111
#: apps/note/models/notes.py:176 apps/note/models/transactions.py:23
#: apps/note/models/transactions.py:43 templates/member/profile_detail.html:11
msgid "name"
msgstr ""
#: apps/activity/models.py:24
#: apps/activity/models.py:23
msgid "can invite"
msgstr ""
#: apps/activity/models.py:27
#: apps/activity/models.py:26
msgid "guest entry fee"
msgstr ""
#: apps/activity/models.py:31
#: apps/activity/models.py:30
msgid "activity type"
msgstr ""
#: apps/activity/models.py:32
#: apps/activity/models.py:31
msgid "activity types"
msgstr ""
#: apps/activity/models.py:49
#: apps/activity/models.py:48
msgid "description"
msgstr ""
#: apps/activity/models.py:55 apps/note/models/notes.py:154
#: apps/note/models/transactions.py:39 apps/note/models/transactions.py:85
#: apps/activity/models.py:54 apps/note/models/notes.py:152
#: apps/note/models/transactions.py:60 apps/note/models/transactions.py:104
msgid "type"
msgstr ""
#: apps/activity/models.py:61
#: apps/activity/models.py:60
msgid "organizer"
msgstr ""
#: apps/activity/models.py:67
#: apps/activity/models.py:66
msgid "attendees club"
msgstr ""
#: apps/activity/models.py:70
#: apps/activity/models.py:69
msgid "start date"
msgstr ""
#: apps/activity/models.py:73
#: apps/activity/models.py:72
msgid "end date"
msgstr ""
#: apps/activity/models.py:78
#: apps/activity/models.py:77
msgid "activities"
msgstr ""
#: apps/activity/models.py:109
#: apps/activity/models.py:108
msgid "guest"
msgstr ""
#: apps/activity/models.py:110
#: apps/activity/models.py:109
msgid "guests"
msgstr ""
#: apps/member/apps.py:11
#: apps/member/apps.py:10
msgid "member"
msgstr ""
#: apps/member/models.py:25
#: apps/member/models.py:23
msgid "phone number"
msgstr ""
#: apps/member/models.py:31 templates/member/profile_detail.html:18
#: apps/member/models.py:29 templates/member/profile_detail.html:24
msgid "section"
msgstr ""
#: apps/member/models.py:32
#: apps/member/models.py:30
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
msgstr ""
#: apps/member/models.py:38 templates/member/profile_detail.html:20
#: apps/member/models.py:36 templates/member/profile_detail.html:27
msgid "address"
msgstr ""
#: apps/member/models.py:44
#: apps/member/models.py:42
msgid "paid"
msgstr ""
#: apps/member/models.py:49 apps/member/models.py:50
#: apps/member/models.py:47 apps/member/models.py:48
msgid "user profile"
msgstr ""
#: apps/member/models.py:66
#: apps/member/models.py:65
msgid "email"
msgstr ""
#: apps/member/models.py:71
#: apps/member/models.py:70
msgid "membership fee"
msgstr ""
#: apps/member/models.py:75
#: apps/member/models.py:74
msgid "membership duration"
msgstr ""
#: apps/member/models.py:76
#: apps/member/models.py:75
msgid "The longest time a membership can last (NULL = infinite)."
msgstr ""
#: apps/member/models.py:81
#: apps/member/models.py:80
msgid "membership start"
msgstr ""
#: apps/member/models.py:82
#: apps/member/models.py:81
msgid "How long after January 1st the members can renew their membership."
msgstr ""
#: apps/member/models.py:87
#: apps/member/models.py:86
msgid "membership end"
msgstr ""
#: apps/member/models.py:88
#: apps/member/models.py:87
msgid ""
"How long the membership can last after January 1st of the next year after "
"members can renew their membership."
msgstr ""
#: apps/member/models.py:94 apps/note/models/notes.py:129
#: apps/member/models.py:93 apps/note/models/notes.py:127
msgid "club"
msgstr ""
#: apps/member/models.py:95
#: apps/member/models.py:94
msgid "clubs"
msgstr ""
#: apps/member/models.py:118
#: apps/member/models.py:117
msgid "role"
msgstr ""
#: apps/member/models.py:119
#: apps/member/models.py:118
msgid "roles"
msgstr ""
#: apps/member/models.py:140
#: apps/member/models.py:142
msgid "membership starts on"
msgstr ""
#: apps/member/models.py:143
#: apps/member/models.py:145
msgid "membership ends on"
msgstr ""
#: apps/member/models.py:147
#: apps/member/models.py:149
msgid "fee"
msgstr ""
#: apps/member/models.py:151
#: apps/member/models.py:153
msgid "membership"
msgstr ""
#: apps/member/models.py:152
#: apps/member/models.py:154
msgid "memberships"
msgstr ""
#: apps/note/admin.py:112 apps/note/models/transactions.py:65
#: apps/member/views.py:63 templates/member/profile_detail.html:42
msgid "Update Profile"
msgstr ""
#: apps/member/views.py:79 apps/note/models/notes.py:229
msgid "An alias with a similar name already exists."
msgstr ""
#: apps/member/views.py:129
#, python-format
msgid "Account #%(id)s: %(username)s"
msgstr ""
#: apps/note/admin.py:118 apps/note/models/transactions.py:86
msgid "source"
msgstr ""
#: apps/note/admin.py:120 apps/note/admin.py:148
#: apps/note/models/transactions.py:32 apps/note/models/transactions.py:71
#: apps/note/admin.py:126 apps/note/admin.py:154
#: apps/note/models/transactions.py:51 apps/note/models/transactions.py:92
msgid "destination"
msgstr ""
#: apps/note/apps.py:15 apps/note/models/notes.py:51
#: apps/note/apps.py:14 apps/note/models/notes.py:48
msgid "note"
msgstr ""
#: apps/note/models/notes.py:28
#: apps/note/models/notes.py:26
msgid "account balance"
msgstr ""
#: apps/note/models/notes.py:29
#: apps/note/models/notes.py:27
msgid "in centimes, money credited for this instance"
msgstr ""
#: apps/note/models/notes.py:33
#: apps/note/models/notes.py:31
msgid "active"
msgstr ""
#: apps/note/models/notes.py:36
#: apps/note/models/notes.py:34
msgid ""
"Designates whether this note should be treated as active. Unselect this "
"instead of deleting notes."
msgstr ""
#: apps/note/models/notes.py:41
#: apps/note/models/notes.py:38
msgid "display image"
msgstr ""
#: apps/note/models/notes.py:46 apps/note/models/transactions.py:74
#: apps/note/models/notes.py:43 apps/note/models/transactions.py:95
msgid "created at"
msgstr ""
#: apps/note/models/notes.py:52
#: apps/note/models/notes.py:49
msgid "notes"
msgstr ""
#: apps/note/models/notes.py:60
#: apps/note/models/notes.py:57
msgid "Note"
msgstr ""
#: apps/note/models/notes.py:70 apps/note/models/notes.py:92
#: apps/note/models/notes.py:67 apps/note/models/notes.py:90
msgid "This alias is already taken."
msgstr ""
#: apps/note/models/notes.py:107
#: apps/note/models/notes.py:105
msgid "user"
msgstr ""
#: apps/note/models/notes.py:111
#: apps/note/models/notes.py:109
msgid "one's note"
msgstr ""
#: apps/note/models/notes.py:112
#: apps/note/models/notes.py:110
msgid "users note"
msgstr ""
#: apps/note/models/notes.py:118
#: apps/note/models/notes.py:116
#, python-format
msgid "%(user)s's note"
msgstr ""
#: apps/note/models/notes.py:133
#: apps/note/models/notes.py:131
msgid "club note"
msgstr ""
#: apps/note/models/notes.py:134
#: apps/note/models/notes.py:132
msgid "clubs notes"
msgstr ""
#: apps/note/models/notes.py:140
#: apps/note/models/notes.py:138
#, python-format
msgid "Note of %(club)s club"
msgstr ""
#: apps/note/models/notes.py:160
#: apps/note/models/notes.py:158
msgid "special note"
msgstr ""
#: apps/note/models/notes.py:161
#: apps/note/models/notes.py:159
msgid "special notes"
msgstr ""
#: apps/note/models/notes.py:184
#: apps/note/models/notes.py:182
msgid "Invalid alias"
msgstr ""
#: apps/note/models/notes.py:200
#: apps/note/models/notes.py:198
msgid "alias"
msgstr ""
#: apps/note/models/notes.py:201
#: apps/note/models/notes.py:199 templates/member/profile_detail.html:33
msgid "aliases"
msgstr ""
#: apps/note/models/notes.py:229
#: apps/note/models/notes.py:225
msgid "Alias too long."
msgstr ""
#: apps/note/models/notes.py:232
msgid "An alias with a similar name already exists."
#: apps/note/models/notes.py:236
msgid "You can't delete your main alias."
msgstr ""
#: apps/note/models/transactions.py:35 apps/note/models/transactions.py:82
#: apps/note/models/transactions.py:29
msgid "transaction category"
msgstr ""
#: apps/note/models/transactions.py:30
msgid "transaction categories"
msgstr ""
#: apps/note/models/transactions.py:54 apps/note/models/transactions.py:102
msgid "amount"
msgstr ""
#: apps/note/models/transactions.py:36
#: apps/note/models/transactions.py:55
msgid "in centimes"
msgstr ""
#: apps/note/models/transactions.py:44
#: apps/note/models/transactions.py:65
msgid "transaction template"
msgstr ""
#: apps/note/models/transactions.py:45
#: apps/note/models/transactions.py:66
msgid "transaction templates"
msgstr ""
#: apps/note/models/transactions.py:78
#: apps/note/models/transactions.py:99
msgid "quantity"
msgstr ""
#: apps/note/models/transactions.py:89
#: apps/note/models/transactions.py:108
msgid "reason"
msgstr ""
#: apps/note/models/transactions.py:93
#: apps/note/models/transactions.py:112
msgid "valid"
msgstr ""
#: apps/note/models/transactions.py:98
#: apps/note/models/transactions.py:117
msgid "transaction"
msgstr ""
#: apps/note/models/transactions.py:99
#: apps/note/models/transactions.py:118
msgid "transactions"
msgstr ""
#: apps/note/models/transactions.py:141
#: apps/note/models/transactions.py:160
msgid "membership transaction"
msgstr ""
#: apps/note/models/transactions.py:142
#: apps/note/models/transactions.py:161
msgid "membership transactions"
msgstr ""
#: apps/note/views.py:26
#: apps/note/views.py:29
msgid "Transfer money from your account to one or others"
msgstr ""
#: note_kfet/settings/base.py:130
#: note_kfet/settings/base.py:148
msgid "German"
msgstr ""
#: note_kfet/settings/base.py:131
#: note_kfet/settings/base.py:149
msgid "English"
msgstr ""
#: note_kfet/settings/base.py:132
#: note_kfet/settings/base.py:150
msgid "French"
msgstr ""
#: templates/base.html:14
#: templates/base.html:13
msgid "The ENS Paris-Saclay BDE note."
msgstr ""
@ -365,11 +386,23 @@ msgstr ""
msgid "Membership duration"
msgstr ""
#: templates/member/club_detail.html:18 templates/member/profile_detail.html:22
#: templates/member/club_detail.html:18 templates/member/profile_detail.html:30
msgid "balance"
msgstr ""
#: templates/member/profile_detail.html:12
#: templates/member/manage_auth_tokens.html:16
msgid "Token"
msgstr ""
#: templates/member/manage_auth_tokens.html:23
msgid "Created"
msgstr ""
#: templates/member/manage_auth_tokens.html:31
msgid "Regenerate token"
msgstr ""
#: templates/member/profile_detail.html:11
msgid "first name"
msgstr ""
@ -377,15 +410,19 @@ msgstr ""
msgid "username"
msgstr ""
#: templates/member/profile_detail.html:26
msgid "Update Profile"
#: templates/member/profile_detail.html:17
msgid "password"
msgstr ""
#: templates/member/profile_detail.html:27
#: templates/member/profile_detail.html:20
msgid "Change password"
msgstr ""
#: templates/member/profile_detail.html:35
#: templates/member/profile_detail.html:38
msgid "Manage auth token"
msgstr ""
#: templates/member/profile_detail.html:54
msgid "View my memberships"
msgstr ""

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-06 21:37+0100\n"
"POT-Creation-Date: 2020-02-21 13:50+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -13,396 +13,424 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: apps/activity/apps.py:11 apps/activity/models.py:77
#: apps/activity/apps.py:10 apps/activity/models.py:76
msgid "activity"
msgstr "activité"
#: apps/activity/models.py:20 apps/activity/models.py:45
#: apps/member/models.py:61 apps/member/models.py:112
#: apps/note/models/notes.py:178 apps/note/models/transactions.py:24
#: templates/member/profile_detail.html:10
#: apps/activity/models.py:19 apps/activity/models.py:44
#: apps/member/models.py:60 apps/member/models.py:111
#: apps/note/models/notes.py:176 apps/note/models/transactions.py:23
#: apps/note/models/transactions.py:43 templates/member/profile_detail.html:11
msgid "name"
msgstr "nom"
#: apps/activity/models.py:24
#: apps/activity/models.py:23
msgid "can invite"
msgstr "peut inviter"
#: apps/activity/models.py:27
#: apps/activity/models.py:26
msgid "guest entry fee"
msgstr "cotisation de l'entrée invité"
#: apps/activity/models.py:31
#: apps/activity/models.py:30
msgid "activity type"
msgstr "type d'activité"
#: apps/activity/models.py:32
#: apps/activity/models.py:31
msgid "activity types"
msgstr "types d'activité"
#: apps/activity/models.py:49
#: apps/activity/models.py:48
msgid "description"
msgstr "description"
#: apps/activity/models.py:55 apps/note/models/notes.py:154
#: apps/note/models/transactions.py:39 apps/note/models/transactions.py:85
#: apps/activity/models.py:54 apps/note/models/notes.py:152
#: apps/note/models/transactions.py:60 apps/note/models/transactions.py:104
msgid "type"
msgstr "type"
#: apps/activity/models.py:61
#: apps/activity/models.py:60
msgid "organizer"
msgstr "organisateur"
#: apps/activity/models.py:67
#: apps/activity/models.py:66
msgid "attendees club"
msgstr ""
#: apps/activity/models.py:70
#: apps/activity/models.py:69
msgid "start date"
msgstr "date de début"
#: apps/activity/models.py:73
#: apps/activity/models.py:72
msgid "end date"
msgstr "date de fin"
#: apps/activity/models.py:78
#: apps/activity/models.py:77
msgid "activities"
msgstr "activités"
#: apps/activity/models.py:109
#: apps/activity/models.py:108
msgid "guest"
msgstr "invité"
#: apps/activity/models.py:110
#: apps/activity/models.py:109
msgid "guests"
msgstr "invités"
#: apps/member/apps.py:11
#: apps/member/apps.py:10
msgid "member"
msgstr "adhérent"
#: apps/member/models.py:25
#: apps/member/models.py:23
msgid "phone number"
msgstr "numéro de téléphone"
#: apps/member/models.py:31 templates/member/profile_detail.html:18
#: apps/member/models.py:29 templates/member/profile_detail.html:24
msgid "section"
msgstr "section"
#: apps/member/models.py:32
#: apps/member/models.py:30
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
msgstr "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
#: apps/member/models.py:38 templates/member/profile_detail.html:20
#: apps/member/models.py:36 templates/member/profile_detail.html:27
msgid "address"
msgstr "adresse"
#: apps/member/models.py:44
#: apps/member/models.py:42
msgid "paid"
msgstr "payé"
#: apps/member/models.py:49 apps/member/models.py:50
#: apps/member/models.py:47 apps/member/models.py:48
msgid "user profile"
msgstr "profil utilisateur"
#: apps/member/models.py:66
#: apps/member/models.py:65
msgid "email"
msgstr "courriel"
#: apps/member/models.py:71
#: apps/member/models.py:70
msgid "membership fee"
msgstr "cotisation pour adhérer"
#: apps/member/models.py:75
#: apps/member/models.py:74
msgid "membership duration"
msgstr "durée de l'adhésion"
#: apps/member/models.py:76
#: apps/member/models.py:75
msgid "The longest time a membership can last (NULL = infinite)."
msgstr "La durée maximale d'une adhésion (NULL = infinie)."
#: apps/member/models.py:81
#: apps/member/models.py:80
msgid "membership start"
msgstr "début de l'adhésion"
#: apps/member/models.py:82
#: apps/member/models.py:81
msgid "How long after January 1st the members can renew their membership."
msgstr ""
"Combien de temps après le 1er Janvier les adhérents peuvent renouveler leur "
"adhésion."
#: apps/member/models.py:87
#: apps/member/models.py:86
msgid "membership end"
msgstr "fin de l'adhésion"
#: apps/member/models.py:88
#: apps/member/models.py:87
msgid ""
"How long the membership can last after January 1st of the next year after "
"members can renew their membership."
msgstr ""
"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."
#: apps/member/models.py:94 apps/note/models/notes.py:129
#: apps/member/models.py:93 apps/note/models/notes.py:127
msgid "club"
msgstr "club"
#: apps/member/models.py:95
#: apps/member/models.py:94
msgid "clubs"
msgstr "clubs"
#: apps/member/models.py:118
#: apps/member/models.py:117
msgid "role"
msgstr "rôle"
#: apps/member/models.py:119
#: apps/member/models.py:118
msgid "roles"
msgstr "rôles"
#: apps/member/models.py:140
#: apps/member/models.py:142
msgid "membership starts on"
msgstr "l'adhésion commence le"
#: apps/member/models.py:143
#: apps/member/models.py:145
msgid "membership ends on"
msgstr "l'adhésion finie le"
#: apps/member/models.py:147
#: apps/member/models.py:149
msgid "fee"
msgstr "cotisation"
#: apps/member/models.py:151
#: apps/member/models.py:153
msgid "membership"
msgstr "adhésion"
#: apps/member/models.py:152
#: apps/member/models.py:154
msgid "memberships"
msgstr "adhésions"
#: apps/note/admin.py:112 apps/note/models/transactions.py:65
#: apps/member/views.py:63 templates/member/profile_detail.html:42
msgid "Update Profile"
msgstr "Modifier le profil"
#: apps/member/views.py:79 apps/note/models/notes.py:229
msgid "An alias with a similar name already exists."
msgstr "Un alias avec un nom similaire existe déjà."
#: apps/member/views.py:129
#, python-format
msgid "Account #%(id)s: %(username)s"
msgstr "Compte n°%(id)s : %(username)s"
#: apps/note/admin.py:118 apps/note/models/transactions.py:86
msgid "source"
msgstr "source"
#: apps/note/admin.py:120 apps/note/admin.py:148
#: apps/note/models/transactions.py:32 apps/note/models/transactions.py:71
#: apps/note/admin.py:126 apps/note/admin.py:154
#: apps/note/models/transactions.py:51 apps/note/models/transactions.py:92
msgid "destination"
msgstr "destination"
#: apps/note/apps.py:15 apps/note/models/notes.py:51
#: apps/note/apps.py:14 apps/note/models/notes.py:48
msgid "note"
msgstr "note"
#: apps/note/models/notes.py:28
#: apps/note/models/notes.py:26
msgid "account balance"
msgstr "solde du compte"
#: apps/note/models/notes.py:29
#: apps/note/models/notes.py:27
msgid "in centimes, money credited for this instance"
msgstr "en centimes, argent crédité pour cette instance"
#: apps/note/models/notes.py:33
#: apps/note/models/notes.py:31
msgid "active"
msgstr "actif"
#: apps/note/models/notes.py:36
#: apps/note/models/notes.py:34
msgid ""
"Designates whether this note should be treated as active. Unselect this "
"instead of deleting notes."
msgstr ""
"Indique si la note est active. Désactiver cela plutôt que supprimer la note."
#: apps/note/models/notes.py:41
#: apps/note/models/notes.py:38
msgid "display image"
msgstr "image affichée"
#: apps/note/models/notes.py:46 apps/note/models/transactions.py:74
#: apps/note/models/notes.py:43 apps/note/models/transactions.py:95
msgid "created at"
msgstr "créée le"
#: apps/note/models/notes.py:52
#: apps/note/models/notes.py:49
msgid "notes"
msgstr "notes"
#: apps/note/models/notes.py:60
#: apps/note/models/notes.py:57
msgid "Note"
msgstr "Note"
#: apps/note/models/notes.py:70 apps/note/models/notes.py:92
#: apps/note/models/notes.py:67 apps/note/models/notes.py:90
msgid "This alias is already taken."
msgstr "Cet alias est déjà pris."
#: apps/note/models/notes.py:107
#: apps/note/models/notes.py:105
msgid "user"
msgstr "utilisateur"
#: apps/note/models/notes.py:111
#: apps/note/models/notes.py:109
msgid "one's note"
msgstr "note d'un utilisateur"
#: apps/note/models/notes.py:112
#: apps/note/models/notes.py:110
msgid "users note"
msgstr "notes des utilisateurs"
#: apps/note/models/notes.py:118
#: apps/note/models/notes.py:116
#, python-format
msgid "%(user)s's note"
msgstr "Note de %(user)s"
#: apps/note/models/notes.py:133
#: apps/note/models/notes.py:131
msgid "club note"
msgstr "note d'un club"
#: apps/note/models/notes.py:134
#: apps/note/models/notes.py:132
msgid "clubs notes"
msgstr "notes des clubs"
#: apps/note/models/notes.py:140
#, fuzzy, python-format
#| msgid "Note for %(club)s club"
#: apps/note/models/notes.py:138
#, python-format
msgid "Note of %(club)s club"
msgstr "Note du club %(club)s"
#: apps/note/models/notes.py:160
#: apps/note/models/notes.py:158
msgid "special note"
msgstr "note spéciale"
#: apps/note/models/notes.py:161
#: apps/note/models/notes.py:159
msgid "special notes"
msgstr "notes spéciales"
#: apps/note/models/notes.py:184
#: apps/note/models/notes.py:182
msgid "Invalid alias"
msgstr "Alias invalide"
#: apps/note/models/notes.py:200
#: apps/note/models/notes.py:198
msgid "alias"
msgstr "alias"
#: apps/note/models/notes.py:201
#: apps/note/models/notes.py:199 templates/member/profile_detail.html:33
msgid "aliases"
msgstr "alias"
#: apps/note/models/notes.py:229
#: apps/note/models/notes.py:225
msgid "Alias too long."
msgstr "L'alias est trop long."
#: apps/note/models/notes.py:232
msgid "An alias with a similar name already exists."
msgstr "Un alias avec un nom similaire existe déjà."
#: apps/note/models/notes.py:236
msgid "You can't delete your main alias."
msgstr "Vous ne pouvez pas supprimer votre alias principal."
#: apps/note/models/transactions.py:35 apps/note/models/transactions.py:82
#: apps/note/models/transactions.py:29
msgid "transaction category"
msgstr "catégorie de transaction"
#: apps/note/models/transactions.py:30
msgid "transaction categories"
msgstr "catégories de transaction"
#: apps/note/models/transactions.py:54 apps/note/models/transactions.py:102
msgid "amount"
msgstr "montant"
#: apps/note/models/transactions.py:36
#: apps/note/models/transactions.py:55
msgid "in centimes"
msgstr "en centimes"
#: apps/note/models/transactions.py:44
#: apps/note/models/transactions.py:65
msgid "transaction template"
msgstr "modèle de transaction"
#: apps/note/models/transactions.py:45
#: apps/note/models/transactions.py:66
msgid "transaction templates"
msgstr "modèles de transaction"
#: apps/note/models/transactions.py:78
#: apps/note/models/transactions.py:99
msgid "quantity"
msgstr "quantité"
#: apps/note/models/transactions.py:89
#: apps/note/models/transactions.py:108
msgid "reason"
msgstr "raison"
#: apps/note/models/transactions.py:93
#: apps/note/models/transactions.py:112
msgid "valid"
msgstr "valide"
#: apps/note/models/transactions.py:98
#: apps/note/models/transactions.py:117
msgid "transaction"
msgstr "transaction"
#: apps/note/models/transactions.py:99
#: apps/note/models/transactions.py:118
msgid "transactions"
msgstr "transactions"
#: apps/note/models/transactions.py:141
#: apps/note/models/transactions.py:160
msgid "membership transaction"
msgstr "transaction d'adhésion"
#: apps/note/models/transactions.py:142
#: apps/note/models/transactions.py:161
msgid "membership transactions"
msgstr "transactions d'adhésion"
#: apps/note/views.py:26
#: apps/note/views.py:29
msgid "Transfer money from your account to one or others"
msgstr "Transfert d'argent de ton compte vers un ou plusieurs autres"
#: note_kfet/settings/base.py:130
#: note_kfet/settings/base.py:148
msgid "German"
msgstr ""
#: note_kfet/settings/base.py:131
#: note_kfet/settings/base.py:149
msgid "English"
msgstr ""
#: note_kfet/settings/base.py:132
#: note_kfet/settings/base.py:150
msgid "French"
msgstr ""
#: templates/base.html:14
#: templates/base.html:13
msgid "The ENS Paris-Saclay BDE note."
msgstr ""
msgstr "La note du BDE de l'ENS Paris-Saclay."
#: templates/member/club_detail.html:10
#, fuzzy
#| msgid "membership starts on"
msgid "Membership starts on"
msgstr "l'adhésion commence le"
msgstr "L'adhésion commence le"
#: templates/member/club_detail.html:12
#, fuzzy
#| msgid "membership ends on"
msgid "Membership ends on"
msgstr "l'adhésion finie le"
msgstr "L'adhésion finie le"
#: templates/member/club_detail.html:14
#, fuzzy
#| msgid "membership duration"
msgid "Membership duration"
msgstr "durée de l'adhésion"
msgstr "Durée de l'adhésion"
#: templates/member/club_detail.html:18 templates/member/profile_detail.html:22
#, fuzzy
#| msgid "account balance"
#: templates/member/club_detail.html:18 templates/member/profile_detail.html:30
msgid "balance"
msgstr "solde du compte"
#: templates/member/profile_detail.html:12
#: templates/member/manage_auth_tokens.html:16
msgid "Token"
msgstr "Jeton"
#: templates/member/manage_auth_tokens.html:23
msgid "Created"
msgstr "Créé le"
#: templates/member/manage_auth_tokens.html:31
msgid "Regenerate token"
msgstr "Regénérer le jeton"
#: templates/member/profile_detail.html:11
msgid "first name"
msgstr ""
#: templates/member/profile_detail.html:14
#, fuzzy
#| msgid "name"
msgid "username"
msgstr "nom"
msgstr "nom d'utilisateur"
#: templates/member/profile_detail.html:26
#: templates/member/profile_detail.html:17
#, fuzzy
#| msgid "user profile"
msgid "Update Profile"
msgstr "profil utilisateur"
#| msgid "Change password"
msgid "password"
msgstr "Changer le mot de passe"
#: templates/member/profile_detail.html:27
#: templates/member/profile_detail.html:20
msgid "Change password"
msgstr ""
msgstr "Changer le mot de passe"
#: templates/member/profile_detail.html:35
#, fuzzy
#| msgid "memberships"
#: templates/member/profile_detail.html:38
msgid "Manage auth token"
msgstr "Gérer les jetons d'authentification"
#: templates/member/profile_detail.html:54
msgid "View my memberships"
msgstr "adhésions"
msgstr "Voir mes adhésions"
#: templates/member/profile_update.html:13
msgid "Save Changes"
msgstr ""
msgstr "Sauvegarder les changements"
#: templates/member/signup.html:14
msgid "Sign Up"

View File

@ -6,8 +6,7 @@ SPDX-License-Identifier: GPL-3.0-or-later
<html lang="en" class="position-relative h-100">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>
{% block title %}{{ title }}{% endblock title %} - {{ request.site.name }}
</title>
@ -26,8 +25,8 @@ SPDX-License-Identifier: GPL-3.0-or-later
{# Bootstrap CSS #}
<link rel="stylesheet"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"
integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh"
crossorigin="anonymous">
<link rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
@ -39,9 +38,9 @@ SPDX-License-Identifier: GPL-3.0-or-later
{% block extracss %}{% endblock %}
</head>
<body>
<main>
<nav class="navbar navbar-expand-md navbar-light bg-light fixed-navbar">
<body class="d-flex w-100 h-100 flex-column">
<main class="mb-auto">
<nav class="navbar navbar-expand-md navbar-light bg-light fixed-navbar shadow-sm">
<a class="navbar-brand" href="/">{{ request.site.name }}</a>
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarNavAltMarkup"
@ -95,31 +94,23 @@ SPDX-License-Identifier: GPL-3.0-or-later
</ul>
</div>
</nav>
<div class="container-fluid mb-5 mt-2">
<div class="row">
<div class="col-md-1">
{% block sidebar %}
{% endblock %}
</div>
<div class="col-md-10 text-justify">
{% block contenttitle %}<h1>{{ title }}</h1>{% endblock %}
{% block content %}
<p>Default content...</p>
{% endblock content %}
</div>
</div>
<div class="container-fluid my-3" style="max-width: 1600px;">
{% block contenttitle %}<h1>{{ title }}</h1>{% endblock %}
{% block content %}
<p>Default content...</p>
{% endblock content %}
</div>
</main>
<footer class="bg-light fixed-bottom py-2">
<footer class="bg-light mt-auto py-2">
<div class="container-fluid">
<div class="row">
<div class="col-sm">
<form action="{% url 'set_language' %}" method="post"
class="form-inline">
<span class="text-muted mr-1">
NoteKfet2020 -
NoteKfet2020 &mdash;
<a href="mailto:tresorie.bde@lists.crans.org"
class="text-muted">Nous contacter</a> -
class="text-muted">Nous contacter</a> &mdash;
</span>
{% csrf_token %}
<select title="language" name="language"
@ -149,14 +140,14 @@ SPDX-License-Identifier: GPL-3.0-or-later
</footer>
{# Bootstrap JavaScript #}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"
integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"
integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js"
integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"
integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6"
crossorigin="anonymous"></script>
{% block extrajavascript %}
{% endblock extrajavascript %}

View File

@ -2,67 +2,76 @@
{% load i18n static pretty_money django_tables2 %}
{% block content %}
<h3>Compte n° {{ object.pk }}</h3>
<div class="row mt-4">
<div class="col-md-3 mb-4">
<div class="card bg-light shadow">
<img src="{{ object.note.display_image.url }}" class="card-img-top" alt="">
<div class="card-body">
<dl class="row">
<dt class="col-xl-6">{% trans 'name'|capfirst %}, {% trans 'first name' %}</dt>
<dd class="col-xl-6">{{ object.user.last_name }} {{ object.user.first_name }}</dd>
<img src="{{ object.note.display_image.url }}" alt=""/>
<dt class="col-xl-6">{% trans 'username'|capfirst %}</dt>
<dd class="col-xl-6">{{ object.user.username }}</dd>
<dl class="row">
<dt class="col-6 col-md-3">{% trans 'name'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.user.last_name }}</dd>
<dt class="col-6 col-md-3">{% trans 'first name'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.user.first_name }}</dd>
<dt class="col-6 col-md-3">{% trans 'username'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.user.username }}</dd>
<dt class="col-6 col-md-3">Aliases</dt>
<dd class="col-6 col-md-3">{{ object.user.note.alias_set.all }}</dd>
<dt class="col-6 col-md-3">{% trans 'section'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.section }}</dd>
<dt class="col-6 col-md-3">{% trans 'address'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.address }}</dd>
<dt class="col-6 col-md-3">{% trans 'balance'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.user.note.balance | pretty_money }}</dd>
</dl>
<center>
{% if object.user.pk == user.pk %}
<a class="btn btn-primary" href="{% url 'member:auth_token' %}">{% trans 'Manage auth token' %}</a>
{% endif %}
<a class="btn btn-primary" href="{% url 'member:user_update_profile' object.pk %}">{% trans 'Update Profile' %}</a>
<a class="btn btn-primary" href="{% url 'password_change' %}">{% trans 'Change password' %}</a>
</center>
<dt class="col-xl-6">{% trans 'password'|capfirst %}</dt>
<dd class="col-xl-6">
<a class="small" href="{% url 'password_change' %}">
{% trans 'Change password' %}
</a>
</dd>
<div class="accordion" id="accordionProfile">
<div class="card">
<div class="card-header" id="headingOne">
<h5 class="mb-0">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
<i class="fa fa-users"></i> {% trans "View my memberships" %}
</button>
</h5>
<dt class="col-xl-6">{% trans 'section'|capfirst %}</dt>
<dd class="col-xl-6">{{ object.section }}</dd>
<dt class="col-xl-6">{% trans 'address'|capfirst %}</dt>
<dd class="col-xl-6">{{ object.address }}</dd>
<dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt>
<dd class="col-xl-6">{{ object.user.note.balance | pretty_money }}</dd>
<dt class="col-xl-6">{% trans 'aliases'|capfirst %}</dt>
<dd class="col-xl-6">{{ object.user.note.alias_set.all|join:", " }}</dd>
</dl>
{% if object.user.pk == user.pk %}
<a class="small" href="{% url 'member:auth_token' %}">{% trans 'Manage auth token' %}</a>
{% endif %}
</div>
<div class="card-footer">
<a class="btn btn-primary btn-sm" href="{% url 'member:user_update_profile' object.pk %}">{% trans 'Update Profile' %}</a>
</div>
</div>
</div>
<div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionProfile">
<div class="card-body">
{% render_table club_list %}
</div>
<div class="col-md-9">
<div class="accordion shadow" id="accordionProfile">
<div class="card">
<div class="card-header position-relative" id="clubListHeading">
<a class="btn btn-link stretched-link font-weight-bold"
data-toggle="collapse" data-target="#clubListCollapse"
aria-expanded="true" aria-controls="clubListCollapse">
<i class="fa fa-users"></i> {% trans "View my memberships" %}
</a>
</div>
<div id="clubListCollapse" class="collapse overflow-auto show" aria-labelledby="clubListHeading" data-parent="#accordionProfile">
{% render_table club_list %}
</div>
</div>
<div class="card">
<div class="card-header position-relative" id="historyListHeading">
<a class="btn btn-link stretched-link collapsed font-weight-bold"
data-toggle="collapse" data-target="#historyListCollapse"
aria-expanded="false" aria-controls="historyListCollapse">
<i class="fa fa-euro"></i> Historique des transactions
</a>
</div>
<div id="historyListCollapse" class="collapse overflow-auto" aria-labelledby="historyListHeading" data-parent="#accordionProfile">
{% render_table history_list %}
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingTwo">
<h5 class="mb-0">
<button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
<i class="fa fa-euro"></i> Historique des transactions
</button>
</h5>
</div>
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionProfile">
<div class="card-body">
{% render_table history_list %}
</div>
</div>
</div>
</div>
{% endblock %}
{% endblock %}

View File

@ -1,17 +1,16 @@
<!doctype html>
{% extends "base.html" %}
{% load crispy_forms_tags %}
{% load i18n static pretty_money django_tables2 %}
{% load i18n crispy_forms_tags %}
{% comment %}
SPDX-License-Identifier: GPL-3.0-or-later
{% endcomment %}
{% block content %}
<form method="post">
{% csrf_token %}
{{ form|crispy }}
{{ profile_form|crispy }}
<button class="btn btn-link" type="submit">
{% trans "Save Changes" %}
</button>
</form>
{% csrf_token %}
{{ form|crispy }}
{{ profile_form|crispy }}
<button class="btn btn-primary" type="submit">
{% trans "Save Changes" %}
</button>
</form>
{% endblock %}