Compare commits

..

No commits in common. "93f7e1d45b7afaf31bf421a0540d6c2a6f57a3f2" and "24ac3ce45f51cc890678f6c855ef61f2baf76784" have entirely different histories.

11 changed files with 200 additions and 287 deletions

View File

@ -11,7 +11,7 @@
git: git:
repo: https://gitlab.crans.org/bde/nk20.git repo: https://gitlab.crans.org/bde/nk20.git
dest: /var/www/note_kfet dest: /var/www/note_kfet
version: beta version: master
force: true force: true
- name: Use default env vars (should be updated!) - name: Use default env vars (should be updated!)
@ -28,16 +28,3 @@
recurse: yes recurse: yes
owner: www-data owner: www-data
group: www-data group: www-data
- name: Setup cron jobs
file:
src: /var/www/note_kfet/note.cron
dest: /etc/cron.d/note
state: link
owner: root
group: root
- name: Restart cron service
systemd:
name: cron
state: restarted

View File

@ -17,7 +17,6 @@ class ProfileInline(admin.StackedInline):
Inline user profile in user admin Inline user profile in user admin
""" """
model = Profile model = Profile
form = ProfileForm
can_delete = False can_delete = False
@ -26,6 +25,7 @@ class CustomUserAdmin(UserAdmin):
inlines = (ProfileInline,) inlines = (ProfileInline,)
list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff') list_display = ('username', 'email', 'first_name', 'last_name', 'is_staff')
list_select_related = ('profile',) list_select_related = ('profile',)
form = ProfileForm
def get_inline_instances(self, request, obj=None): def get_inline_instances(self, request, obj=None):
""" """

View File

@ -37,7 +37,6 @@ class ProfileForm(forms.ModelForm):
""" """
A form for the extras field provided by the :model:`member.Profile` model. A form for the extras field provided by the :model:`member.Profile` model.
""" """
last_report = forms.DateField(required=False, disabled=True, label=_("Last report date"))
def save(self, commit=True): def save(self, commit=True):
if not self.instance.section or (("department" in self.changed_data if not self.instance.section or (("department" in self.changed_data

View File

@ -11,7 +11,6 @@ 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 _
@ -93,16 +92,6 @@ class Profile(models.Model):
default=False, default=False,
) )
report_frequency = models.PositiveSmallIntegerField(
verbose_name=_("report frequency (in days)"),
default=0,
)
last_report = models.DateField(
verbose_name=_("last report date"),
default=timezone.now,
)
email_confirmed = models.BooleanField( email_confirmed = models.BooleanField(
verbose_name=_("email confirmed"), verbose_name=_("email confirmed"),
default=False, default=False,

View File

@ -71,8 +71,6 @@ class UserUpdateView(ProtectQuerysetMixin, LoginRequiredMixin, UpdateView):
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) data=self.request.POST if self.request.POST else None)
if not self.object.profile.report_frequency:
del context['profile_form'].fields["last_report"]
return context return context

View File

@ -41,8 +41,6 @@ class UserCreateView(CreateView):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
context["profile_form"] = self.second_form(self.request.POST if self.request.POST else None) context["profile_form"] = self.second_form(self.request.POST if self.request.POST else None)
del context["profile_form"].fields["section"] del context["profile_form"].fields["section"]
del context["profile_form"].fields["report_frequency"]
del context["profile_form"].fields["last_report"]
return context return context

@ -1 +1 @@
Subproject commit 47dc4dd9e6742c3fd0f0d4ea654b1e9a0a39f4f7 Subproject commit 034d8c43b663ac3a33f6e3d06bcdcbbeea0bc517

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-05 23:17+0200\n" "POT-Creation-Date: 2020-08-05 21:06+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,7 +44,7 @@ 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:173 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:298 apps/permission/models.py:332 #: apps/note/models/transactions.py:298 apps/permission/models.py:332
#: apps/wei/models.py:67 apps/wei/models.py:119 #: apps/wei/models.py:67 apps/wei/models.py:119
@ -83,7 +83,7 @@ msgstr ""
msgid "type" msgid "type"
msgstr "" msgstr ""
#: apps/activity/models.py:67 apps/logs/models.py:22 apps/member/models.py:281 #: 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:161 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
@ -186,13 +186,13 @@ msgstr ""
msgid "Type" msgid "Type"
msgstr "" msgstr ""
#: apps/activity/tables.py:77 apps/member/forms.py:104 #: apps/activity/tables.py:77 apps/member/forms.py:103
#: apps/registration/forms.py:70 apps/treasury/forms.py:130 #: apps/registration/forms.py:70 apps/treasury/forms.py:130
#: apps/wei/forms/registration.py:95 #: apps/wei/forms/registration.py:95
msgid "Last name" msgid "Last name"
msgstr "" msgstr ""
#: apps/activity/tables.py:79 apps/member/forms.py:109 #: apps/activity/tables.py:79 apps/member/forms.py:108
#: apps/registration/forms.py:75 apps/treasury/forms.py:132 #: apps/registration/forms.py:75 apps/treasury/forms.py:132
#: apps/wei/forms/registration.py:100 templates/note/transaction_form.html:129 #: apps/wei/forms/registration.py:100 templates/note/transaction_form.html:129
msgid "First name" msgid "First name"
@ -292,21 +292,21 @@ msgstr ""
msgid "changelogs" msgid "changelogs"
msgstr "" msgstr ""
#: apps/member/admin.py:52 apps/member/models.py:200 #: 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:205 #: 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:292 #: 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:306 #: apps/member/admin.py:68 apps/member/models.py:295
msgid "fee" msgid "fee"
msgstr "" msgstr ""
@ -314,272 +314,260 @@ msgstr ""
msgid "member" msgid "member"
msgstr "" msgstr ""
#: apps/member/forms.py:40 #: apps/member/forms.py:59 apps/member/views.py:84
msgid "Last report date"
msgstr ""
#: apps/member/forms.py:60 apps/member/views.py:86
#: 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 ""
#: apps/member/forms.py:83 apps/registration/forms.py:50 #: apps/member/forms.py:82 apps/registration/forms.py:50
msgid "Inscription paid by Société Générale" msgid "Inscription paid by Société Générale"
msgstr "" msgstr ""
#: apps/member/forms.py:85 apps/registration/forms.py:52 #: apps/member/forms.py:84 apps/registration/forms.py:52
msgid "Check this case is the Société Générale paid the inscription." msgid "Check this case is the Société Générale paid the inscription."
msgstr "" msgstr ""
#: apps/member/forms.py:90 apps/registration/forms.py:57 #: apps/member/forms.py:89 apps/registration/forms.py:57
#: apps/wei/forms/registration.py:82 #: apps/wei/forms/registration.py:82
msgid "Credit type" msgid "Credit type"
msgstr "" msgstr ""
#: apps/member/forms.py:91 apps/registration/forms.py:58 #: apps/member/forms.py:90 apps/registration/forms.py:58
#: apps/wei/forms/registration.py:83 #: apps/wei/forms/registration.py:83
msgid "No credit" msgid "No credit"
msgstr "" msgstr ""
#: apps/member/forms.py:93 #: apps/member/forms.py:92
msgid "You can credit the note of the user." msgid "You can credit the note of the user."
msgstr "" msgstr ""
#: apps/member/forms.py:97 apps/registration/forms.py:63 #: apps/member/forms.py:96 apps/registration/forms.py:63
#: apps/wei/forms/registration.py:88 #: apps/wei/forms/registration.py:88
msgid "Credit amount" msgid "Credit amount"
msgstr "" msgstr ""
#: apps/member/forms.py:114 apps/registration/forms.py:80 #: apps/member/forms.py:113 apps/registration/forms.py:80
#: apps/treasury/forms.py:134 apps/wei/forms/registration.py:105 #: apps/treasury/forms.py:134 apps/wei/forms/registration.py:105
#: templates/note/transaction_form.html:135 #: templates/note/transaction_form.html:135
msgid "Bank" msgid "Bank"
msgstr "" msgstr ""
#: apps/member/forms.py:141 #: apps/member/forms.py:140
msgid "User" msgid "User"
msgstr "" msgstr ""
#: apps/member/forms.py:155 #: apps/member/forms.py:154
msgid "Roles" msgid "Roles"
msgstr "" msgstr ""
#: apps/member/models.py:39 #: 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:46 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:47 #: apps/member/models.py:46
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\"" msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
msgstr "" msgstr ""
#: apps/member/models.py:55 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:57 #: apps/member/models.py:56
msgid "Informatics (A0)" msgid "Informatics (A0)"
msgstr "" msgstr ""
#: apps/member/models.py:58 #: apps/member/models.py:57
msgid "Mathematics (A1)" msgid "Mathematics (A1)"
msgstr "" msgstr ""
#: apps/member/models.py:59 #: apps/member/models.py:58
msgid "Physics (A2)" msgid "Physics (A2)"
msgstr "" msgstr ""
#: apps/member/models.py:60 #: apps/member/models.py:59
msgid "Applied physics (A'2)" msgid "Applied physics (A'2)"
msgstr "" msgstr ""
#: apps/member/models.py:61 #: apps/member/models.py:60
msgid "Chemistry (A''2)" msgid "Chemistry (A''2)"
msgstr "" msgstr ""
#: apps/member/models.py:62 #: apps/member/models.py:61
msgid "Biology (A3)" msgid "Biology (A3)"
msgstr "" msgstr ""
#: apps/member/models.py:63 #: apps/member/models.py:62
msgid "SAPHIRE (B1234)" msgid "SAPHIRE (B1234)"
msgstr "" msgstr ""
#: apps/member/models.py:64 #: apps/member/models.py:63
msgid "Mechanics (B1)" msgid "Mechanics (B1)"
msgstr "" msgstr ""
#: apps/member/models.py:65 #: apps/member/models.py:64
msgid "Civil engineering (B2)" msgid "Civil engineering (B2)"
msgstr "" msgstr ""
#: apps/member/models.py:66 #: apps/member/models.py:65
msgid "Mechanical engineering (B3)" msgid "Mechanical engineering (B3)"
msgstr "" msgstr ""
#: apps/member/models.py:67 #: apps/member/models.py:66
msgid "EEA (B4)" msgid "EEA (B4)"
msgstr "" msgstr ""
#: apps/member/models.py:68 #: apps/member/models.py:67
msgid "Design (C)" msgid "Design (C)"
msgstr "" msgstr ""
#: apps/member/models.py:69 #: apps/member/models.py:68
msgid "Economy-management (D2)" msgid "Economy-management (D2)"
msgstr "" msgstr ""
#: apps/member/models.py:70 #: apps/member/models.py:69
msgid "Social sciences (D3)" msgid "Social sciences (D3)"
msgstr "" msgstr ""
#: apps/member/models.py:71 #: apps/member/models.py:70
msgid "English (E)" msgid "English (E)"
msgstr "" msgstr ""
#: apps/member/models.py:72 #: apps/member/models.py:71
msgid "External (EXT)" msgid "External (EXT)"
msgstr "" msgstr ""
#: apps/member/models.py:79 #: apps/member/models.py:78
msgid "promotion" msgid "promotion"
msgstr "" msgstr ""
#: apps/member/models.py:80 #: 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:84 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:91 #: 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:92 #: 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:97 #: apps/member/models.py:96
msgid "report frequency (in days)"
msgstr ""
#: apps/member/models.py:102
msgid "last report date"
msgstr ""
#: apps/member/models.py:107
msgid "email confirmed" msgid "email confirmed"
msgstr "" msgstr ""
#: apps/member/models.py:112 #: apps/member/models.py:101
msgid "registration valid" msgid "registration valid"
msgstr "" msgstr ""
#: apps/member/models.py:141 apps/member/models.py:142 #: apps/member/models.py:130 apps/member/models.py:131
msgid "user profile" msgid "user profile"
msgstr "" msgstr ""
#: apps/member/models.py:149 #: apps/member/models.py:138
msgid "Activate your Note Kfet account" msgid "Activate your Note Kfet account"
msgstr "" msgstr ""
#: apps/member/models.py:178 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:185 #: apps/member/models.py:174
msgid "parent club" msgid "parent club"
msgstr "" msgstr ""
#: apps/member/models.py:194 #: apps/member/models.py:183
msgid "require memberships" msgid "require memberships"
msgstr "" msgstr ""
#: apps/member/models.py:195 #: 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:211 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:212 #: 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:219 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:220 #: 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:227 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:228 #: 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:262 apps/member/models.py:287 #: 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:263 #: apps/member/models.py:252
msgid "clubs" msgid "clubs"
msgstr "" msgstr ""
#: apps/member/models.py:297 #: apps/member/models.py:286
msgid "membership starts on" msgid "membership starts on"
msgstr "" msgstr ""
#: apps/member/models.py:301 #: apps/member/models.py:290
msgid "membership ends on" msgid "membership ends on"
msgstr "" msgstr ""
#: apps/member/models.py:353 #: 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 "" msgstr ""
#: apps/member/models.py:364 apps/member/views.py:590 #: apps/member/models.py:353 apps/member/views.py:588
msgid "User is already a member of the club" msgid "User is already a member of the club"
msgstr "" msgstr ""
#: apps/member/models.py:411 #: 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 "" msgstr ""
#: apps/member/models.py:464 #: 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:467 #: apps/member/models.py:456
msgid "membership" msgid "membership"
msgstr "" msgstr ""
#: apps/member/models.py:468 #: apps/member/models.py:457
msgid "memberships" msgid "memberships"
msgstr "" msgstr ""
@ -597,71 +585,71 @@ msgstr ""
msgid "This address must be valid." msgid "This address must be valid."
msgstr "" msgstr ""
#: apps/member/views.py:135 #: apps/member/views.py:133
msgid "Profile detail" msgid "Profile detail"
msgstr "" msgstr ""
#: apps/member/views.py:169 #: apps/member/views.py:167
msgid "Search user" msgid "Search user"
msgstr "" msgstr ""
#: apps/member/views.py:203 apps/member/views.py:389 #: apps/member/views.py:201 apps/member/views.py:387
msgid "Note aliases" msgid "Note aliases"
msgstr "" msgstr ""
#: apps/member/views.py:217 #: apps/member/views.py:215
msgid "Update note picture" msgid "Update note picture"
msgstr "" msgstr ""
#: apps/member/views.py:275 templates/member/profile_info.html:43 #: apps/member/views.py:273 templates/member/profile_info.html:43
msgid "Manage auth token" msgid "Manage auth token"
msgstr "" msgstr ""
#: apps/member/views.py:303 #: apps/member/views.py:301
msgid "Create new club" msgid "Create new club"
msgstr "" msgstr ""
#: apps/member/views.py:315 #: apps/member/views.py:313
msgid "Search club" msgid "Search club"
msgstr "" msgstr ""
#: apps/member/views.py:340 #: apps/member/views.py:338
msgid "Club detail" msgid "Club detail"
msgstr "" msgstr ""
#: apps/member/views.py:406 #: apps/member/views.py:404
msgid "Update club" msgid "Update club"
msgstr "" msgstr ""
#: apps/member/views.py:440 #: apps/member/views.py:438
msgid "Add new member to the club" msgid "Add new member to the club"
msgstr "" msgstr ""
#: apps/member/views.py:581 apps/wei/views.py:862 #: apps/member/views.py:579 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:594 #: apps/member/views.py:592
msgid "The membership must start after {:%m-%d-%Y}." msgid "The membership must start after {:%m-%d-%Y}."
msgstr "" msgstr ""
#: apps/member/views.py:599 #: apps/member/views.py:597
msgid "The membership must begin before {:%m-%d-%Y}." msgid "The membership must begin before {:%m-%d-%Y}."
msgstr "" msgstr ""
#: apps/member/views.py:616 apps/member/views.py:618 apps/member/views.py:620 #: apps/member/views.py:614 apps/member/views.py:616 apps/member/views.py:618
#: apps/registration/views.py:292 apps/registration/views.py:294 #: apps/registration/views.py:290 apps/registration/views.py:292
#: apps/registration/views.py:296 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 "" msgstr ""
#: apps/member/views.py:704 #: apps/member/views.py:702
msgid "Manage roles of an user in the club" msgid "Manage roles of an user in the club"
msgstr "" msgstr ""
#: apps/member/views.py:729 #: apps/member/views.py:727
msgid "Members of the club" msgid "Members of the club"
msgstr "" msgstr ""
@ -1128,52 +1116,52 @@ msgstr ""
msgid "Register new user" msgid "Register new user"
msgstr "" msgstr ""
#: apps/registration/views.py:82 #: apps/registration/views.py:80
msgid "Email validation" msgid "Email validation"
msgstr "" msgstr ""
#: apps/registration/views.py:84 #: apps/registration/views.py:82
msgid "Validate email" msgid "Validate email"
msgstr "" msgstr ""
#: apps/registration/views.py:126 #: apps/registration/views.py:124
msgid "Email validation unsuccessful" msgid "Email validation unsuccessful"
msgstr "" msgstr ""
#: apps/registration/views.py:137 #: apps/registration/views.py:135
msgid "Email validation email sent" msgid "Email validation email sent"
msgstr "" msgstr ""
#: apps/registration/views.py:145 #: apps/registration/views.py:143
msgid "Resend email validation link" msgid "Resend email validation link"
msgstr "" msgstr ""
#: apps/registration/views.py:163 #: apps/registration/views.py:161
msgid "Pre-registered users list" msgid "Pre-registered users list"
msgstr "" msgstr ""
#: apps/registration/views.py:190 #: apps/registration/views.py:188
msgid "Unregistered users" msgid "Unregistered users"
msgstr "" msgstr ""
#: apps/registration/views.py:203 #: apps/registration/views.py:201
msgid "Registration detail" msgid "Registration detail"
msgstr "" msgstr ""
#: apps/registration/views.py:258 #: apps/registration/views.py:256
msgid "You must join the BDE." msgid "You must join the BDE."
msgstr "" msgstr ""
#: apps/registration/views.py:280 #: apps/registration/views.py:278
msgid "You must join BDE club before joining Kfet club." msgid "You must join BDE club before joining Kfet club."
msgstr "" msgstr ""
#: apps/registration/views.py:285 #: apps/registration/views.py:283
msgid "" msgid ""
"The entered amount is not enough for the memberships, should be at least {}" "The entered amount is not enough for the memberships, should be at least {}"
msgstr "" msgstr ""
#: apps/registration/views.py:360 #: apps/registration/views.py:358
msgid "Invalidate pre-registration" msgid "Invalidate pre-registration"
msgstr "" msgstr ""

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-05 23:17+0200\n" "POT-Creation-Date: 2020-08-05 21:06+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,7 +45,7 @@ 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:173 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:298 apps/permission/models.py:332 #: apps/note/models/transactions.py:298 apps/permission/models.py:332
#: apps/wei/models.py:67 apps/wei/models.py:119 #: apps/wei/models.py:67 apps/wei/models.py:119
@ -84,7 +84,7 @@ msgstr "description"
msgid "type" msgid "type"
msgstr "type" msgstr "type"
#: apps/activity/models.py:67 apps/logs/models.py:22 apps/member/models.py:281 #: 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:161 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
@ -187,13 +187,13 @@ msgstr "supprimer"
msgid "Type" msgid "Type"
msgstr "Type" msgstr "Type"
#: apps/activity/tables.py:77 apps/member/forms.py:104 #: apps/activity/tables.py:77 apps/member/forms.py:103
#: apps/registration/forms.py:70 apps/treasury/forms.py:130 #: apps/registration/forms.py:70 apps/treasury/forms.py:130
#: apps/wei/forms/registration.py:95 #: apps/wei/forms/registration.py:95
msgid "Last name" msgid "Last name"
msgstr "Nom de famille" msgstr "Nom de famille"
#: apps/activity/tables.py:79 apps/member/forms.py:109 #: apps/activity/tables.py:79 apps/member/forms.py:108
#: apps/registration/forms.py:75 apps/treasury/forms.py:132 #: apps/registration/forms.py:75 apps/treasury/forms.py:132
#: apps/wei/forms/registration.py:100 templates/note/transaction_form.html:129 #: apps/wei/forms/registration.py:100 templates/note/transaction_form.html:129
msgid "First name" msgid "First name"
@ -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:200 #: 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:205 #: 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:292 #: 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:306 #: apps/member/admin.py:68 apps/member/models.py:295
msgid "fee" msgid "fee"
msgstr "cotisation" msgstr "cotisation"
@ -315,229 +315,217 @@ msgstr "cotisation"
msgid "member" msgid "member"
msgstr "adhérent" msgstr "adhérent"
#: apps/member/forms.py:40 #: apps/member/forms.py:59 apps/member/views.py:84
msgid "Last report date"
msgstr "Date de dernier rapport"
#: apps/member/forms.py:60 apps/member/views.py:86
#: 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à."
#: apps/member/forms.py:83 apps/registration/forms.py:50 #: apps/member/forms.py:82 apps/registration/forms.py:50
msgid "Inscription paid by Société Générale" msgid "Inscription paid by Société Générale"
msgstr "Inscription payée par la Société générale" msgstr "Inscription payée par la Société générale"
#: apps/member/forms.py:85 apps/registration/forms.py:52 #: apps/member/forms.py:84 apps/registration/forms.py:52
msgid "Check this case is the Société Générale paid the inscription." msgid "Check this case is the Société Générale paid the inscription."
msgstr "Cochez cette case si la Société Générale a payé l'inscription." msgstr "Cochez cette case si la Société Générale a payé l'inscription."
#: apps/member/forms.py:90 apps/registration/forms.py:57 #: apps/member/forms.py:89 apps/registration/forms.py:57
#: apps/wei/forms/registration.py:82 #: apps/wei/forms/registration.py:82
msgid "Credit type" msgid "Credit type"
msgstr "Type de rechargement" msgstr "Type de rechargement"
#: apps/member/forms.py:91 apps/registration/forms.py:58 #: apps/member/forms.py:90 apps/registration/forms.py:58
#: apps/wei/forms/registration.py:83 #: apps/wei/forms/registration.py:83
msgid "No credit" msgid "No credit"
msgstr "Pas de rechargement" msgstr "Pas de rechargement"
#: apps/member/forms.py:93 #: apps/member/forms.py:92
msgid "You can credit the note of the user." msgid "You can credit the note of the user."
msgstr "Vous pouvez créditer la note de l'utisateur avant l'adhésion." msgstr "Vous pouvez créditer la note de l'utisateur avant l'adhésion."
#: apps/member/forms.py:97 apps/registration/forms.py:63 #: apps/member/forms.py:96 apps/registration/forms.py:63
#: apps/wei/forms/registration.py:88 #: apps/wei/forms/registration.py:88
msgid "Credit amount" msgid "Credit amount"
msgstr "Montant à créditer" msgstr "Montant à créditer"
#: apps/member/forms.py:114 apps/registration/forms.py:80 #: apps/member/forms.py:113 apps/registration/forms.py:80
#: apps/treasury/forms.py:134 apps/wei/forms/registration.py:105 #: apps/treasury/forms.py:134 apps/wei/forms/registration.py:105
#: templates/note/transaction_form.html:135 #: templates/note/transaction_form.html:135
msgid "Bank" msgid "Bank"
msgstr "Banque" msgstr "Banque"
#: apps/member/forms.py:141 #: apps/member/forms.py:140
msgid "User" msgid "User"
msgstr "Utilisateur" msgstr "Utilisateur"
#: apps/member/forms.py:155 #: apps/member/forms.py:154
msgid "Roles" msgid "Roles"
msgstr "Rôles" msgstr "Rôles"
#: apps/member/models.py:39 #: 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:46 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:47 #: 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:55 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:57 #: apps/member/models.py:56
msgid "Informatics (A0)" msgid "Informatics (A0)"
msgstr "Informatique (A0)" msgstr "Informatique (A0)"
#: apps/member/models.py:58 #: apps/member/models.py:57
msgid "Mathematics (A1)" msgid "Mathematics (A1)"
msgstr "Mathématiques (A1)" msgstr "Mathématiques (A1)"
#: apps/member/models.py:59 #: apps/member/models.py:58
msgid "Physics (A2)" msgid "Physics (A2)"
msgstr "Physique (A2)" msgstr "Physique (A2)"
#: apps/member/models.py:60 #: 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:61 #: 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:62 #: apps/member/models.py:61
msgid "Biology (A3)" msgid "Biology (A3)"
msgstr "Biologie (A3)" msgstr "Biologie (A3)"
#: apps/member/models.py:63 #: apps/member/models.py:62
msgid "SAPHIRE (B1234)" msgid "SAPHIRE (B1234)"
msgstr "SAPHIRE (B1234)" msgstr "SAPHIRE (B1234)"
#: apps/member/models.py:64 #: apps/member/models.py:63
msgid "Mechanics (B1)" msgid "Mechanics (B1)"
msgstr "Mécanique (B1)" msgstr "Mécanique (B1)"
#: apps/member/models.py:65 #: 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:66 #: 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:67 #: apps/member/models.py:66
msgid "EEA (B4)" msgid "EEA (B4)"
msgstr "EEA (B4)" msgstr "EEA (B4)"
#: apps/member/models.py:68 #: apps/member/models.py:67
msgid "Design (C)" msgid "Design (C)"
msgstr "Design (C)" msgstr "Design (C)"
#: apps/member/models.py:69 #: 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:70 #: 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:71 #: apps/member/models.py:70
msgid "English (E)" msgid "English (E)"
msgstr "Anglais (E)" msgstr "Anglais (E)"
#: apps/member/models.py:72 #: apps/member/models.py:71
msgid "External (EXT)" msgid "External (EXT)"
msgstr "Externe (EXT)" msgstr "Externe (EXT)"
#: apps/member/models.py:79 #: apps/member/models.py:78
msgid "promotion" msgid "promotion"
msgstr "promotion" msgstr "promotion"
#: apps/member/models.py:80 #: 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:84 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:91 #: 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:92 #: 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:97 #: apps/member/models.py:96
msgid "report frequency (in days)"
msgstr "fréquence des rapports (en jours)"
#: apps/member/models.py:102
msgid "last report date"
msgstr "date de dernier rapport"
#: apps/member/models.py:107
msgid "email confirmed" msgid "email confirmed"
msgstr "adresse email confirmée" msgstr "adresse email confirmée"
#: apps/member/models.py:112 #: apps/member/models.py:101
msgid "registration valid" msgid "registration valid"
msgstr "inscription valid" msgstr "inscription valid"
#: apps/member/models.py:141 apps/member/models.py:142 #: 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:149 #: 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:178 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:185 #: apps/member/models.py:174
msgid "parent club" msgid "parent club"
msgstr "club parent" msgstr "club parent"
#: apps/member/models.py:194 #: 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:195 #: 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:211 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:212 #: 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:219 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:220 #: 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:227 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:228 #: 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."
@ -545,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:262 apps/member/models.py:287 #: 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:263 #: apps/member/models.py:252
msgid "clubs" msgid "clubs"
msgstr "clubs" msgstr "clubs"
#: apps/member/models.py:297 #: 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:301 #: 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:353 #: 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:364 apps/member/views.py:590 #: apps/member/models.py:353 apps/member/views.py:588
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:411 #: 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:464 #: 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:467 #: apps/member/models.py:456
msgid "membership" msgid "membership"
msgstr "adhésion" msgstr "adhésion"
#: apps/member/models.py:468 #: apps/member/models.py:457
msgid "memberships" msgid "memberships"
msgstr "adhésions" msgstr "adhésions"
@ -602,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:135 #: apps/member/views.py:133
msgid "Profile detail" msgid "Profile detail"
msgstr "Détails de l'utilisateur" msgstr "Détails de l'utilisateur"
#: apps/member/views.py:169 #: apps/member/views.py:167
msgid "Search user" msgid "Search user"
msgstr "Chercher un utilisateur" msgstr "Chercher un utilisateur"
#: apps/member/views.py:203 apps/member/views.py:389 #: apps/member/views.py:201 apps/member/views.py:387
msgid "Note aliases" msgid "Note aliases"
msgstr "Alias de la note" msgstr "Alias de la note"
#: apps/member/views.py:217 #: apps/member/views.py:215
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:275 templates/member/profile_info.html:43 #: apps/member/views.py:273 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:303 #: apps/member/views.py:301
msgid "Create new club" msgid "Create new club"
msgstr "Créer un nouveau club" msgstr "Créer un nouveau club"
#: apps/member/views.py:315 #: apps/member/views.py:313
msgid "Search club" msgid "Search club"
msgstr "Chercher un club" msgstr "Chercher un club"
#: apps/member/views.py:340 #: apps/member/views.py:338
msgid "Club detail" msgid "Club detail"
msgstr "Détails du club" msgstr "Détails du club"
#: apps/member/views.py:406 #: apps/member/views.py:404
msgid "Update club" msgid "Update club"
msgstr "Modifier le club" msgstr "Modifier le club"
#: apps/member/views.py:440 #: apps/member/views.py:438
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:581 apps/wei/views.py:862 #: apps/member/views.py:579 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."
@ -650,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:594 #: apps/member/views.py:592
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:599 #: apps/member/views.py:597
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:616 apps/member/views.py:618 apps/member/views.py:620 #: apps/member/views.py:614 apps/member/views.py:616 apps/member/views.py:618
#: apps/registration/views.py:292 apps/registration/views.py:294 #: apps/registration/views.py:290 apps/registration/views.py:292
#: apps/registration/views.py:296 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:704 #: apps/member/views.py:702
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:729 #: apps/member/views.py:727
msgid "Members of the club" msgid "Members of the club"
msgstr "Membres du club" msgstr "Membres du club"
@ -1155,54 +1143,54 @@ msgstr "Adhérer au club Kfet"
msgid "Register new user" msgid "Register new user"
msgstr "Enregistrer un nouvel utilisateur" msgstr "Enregistrer un nouvel utilisateur"
#: apps/registration/views.py:82 #: apps/registration/views.py:80
msgid "Email validation" msgid "Email validation"
msgstr "Validation de l'adresse mail" msgstr "Validation de l'adresse mail"
#: apps/registration/views.py:84 #: apps/registration/views.py:82
msgid "Validate email" msgid "Validate email"
msgstr "Valider l'adresse e-mail" msgstr "Valider l'adresse e-mail"
#: apps/registration/views.py:126 #: apps/registration/views.py:124
msgid "Email validation unsuccessful" msgid "Email validation unsuccessful"
msgstr " La validation de l'adresse mail a échoué" msgstr " La validation de l'adresse mail a échoué"
#: apps/registration/views.py:137 #: apps/registration/views.py:135
msgid "Email validation email sent" msgid "Email validation email sent"
msgstr "L'email de vérification de l'adresse email a bien été envoyé." msgstr "L'email de vérification de l'adresse email a bien été envoyé."
#: apps/registration/views.py:145 #: apps/registration/views.py:143
msgid "Resend email validation link" msgid "Resend email validation link"
msgstr "Renvoyer le lien de validation" msgstr "Renvoyer le lien de validation"
#: apps/registration/views.py:163 #: apps/registration/views.py:161
msgid "Pre-registered users list" msgid "Pre-registered users list"
msgstr "Liste des utilisateurs en attente d'inscription" msgstr "Liste des utilisateurs en attente d'inscription"
#: apps/registration/views.py:190 #: apps/registration/views.py:188
msgid "Unregistered users" msgid "Unregistered users"
msgstr "Utilisateurs en attente d'inscription" msgstr "Utilisateurs en attente d'inscription"
#: apps/registration/views.py:203 #: apps/registration/views.py:201
msgid "Registration detail" msgid "Registration detail"
msgstr "Détails de l'inscription" msgstr "Détails de l'inscription"
#: apps/registration/views.py:258 #: apps/registration/views.py:256
msgid "You must join the BDE." msgid "You must join the BDE."
msgstr "Vous devez adhérer au BDE." msgstr "Vous devez adhérer au BDE."
#: apps/registration/views.py:280 #: apps/registration/views.py:278
msgid "You must join BDE club before joining Kfet club." msgid "You must join BDE club before joining Kfet club."
msgstr "Vous devez adhérer au club BDE avant d'adhérer au club Kfet." msgstr "Vous devez adhérer au club BDE avant d'adhérer au club Kfet."
#: apps/registration/views.py:285 #: apps/registration/views.py:283
msgid "" msgid ""
"The entered amount is not enough for the memberships, should be at least {}" "The entered amount is not enough for the memberships, should be at least {}"
msgstr "" msgstr ""
"Le montant crédité est trop faible pour adhérer, il doit être au minimum de " "Le montant crédité est trop faible pour adhérer, il doit être au minimum de "
"{}" "{}"
#: apps/registration/views.py:360 #: apps/registration/views.py:358
msgid "Invalidate pre-registration" msgid "Invalidate pre-registration"
msgstr "Invalider l'inscription" msgstr "Invalider l'inscription"

View File

@ -1,19 +0,0 @@
# Attention, il faut *copier* ce fichier dans /etc/cron.d, owner root:root et droits 644
# Les cronjobs dont a besoin la Note Kfet
# m h dom mon dow user command
# Envoyer les mails en attente
* * * * * root cd /var/www/note_kfet && env/bin/python manage.py send_mail >> /var/www/note_kfet/cron_mail.log
* * * * * root cd /var/www/note_kfet && env/bin/python manage.py retry_deferred >> /var/www/note_kfet/cron_mail_deferred.log
00 0 * * * root cd /var/www/note_kfet && env/bin/python manage.py purge_mail_log 7 >> /var/www/note_kfet/cron_mail_purge.log
# Vérifier la cohérence de la base et mailer en cas de problème
00 4 * * * root cd /var/www/note_kfet && env/bin/python manage.py check_consistency --sum-all --check-all --mail
# TODO
# Mettre à jour le wiki (modification sans (dé)validation, activités passées)
#30 5 * * * root /home/note/note-kfet-2015-serveur/serveur/Wiki.py --human --raw
# Spammer les gens en négatif
00 5 * * 2 root cd /var/www/note_kfet && env/bin/python manage.py send_mail_to_negative_balances --spam
# Envoyer le rapport mensuel aux trésoriers et respos info
00 8 6 * * root cd /var/www/note_kfet && env/bin/python manage.py send_mail_to_negative_balances --report
# Envoyer les rapports aux gens
55 6 * * * root cd /var/www/note_kfet && env/bin/python manage.py send_reports

View File

@ -16,24 +16,9 @@
crossorigin="anonymous"></script> crossorigin="anonymous"></script>
</head> </head>
<body> <body>
<p>
Bonjour,
</p>
<p>
Vous recevez ce mail car vous avez défini une « Fréquence des rapports » dans la Note.<br>
Le premier rapport récapitule toutes vos consommations depuis la création de votre compte.<br>
Ensuite, un rapport vous est envoyé à la fréquence demandée seulement si vous avez consommé
depuis le dernier rapport.<br>
Pour arrêter de recevoir des rapports, il vous suffit de modifier votre profil Note et de
mettre la fréquence des rapports à 0 ou -1.<br>
Pour toutes suggestions par rapport à ce service, contactez
<a href="mailto:notekfet2020@lists.crans.org">notekfet2020@lists.crans.org</a>.
</p>
<p> <p>
Rapport d'activité de {{ user.first_name }} {{ user.last_name }} (note : {{ user }}) Rapport d'activité de {{ user.first_name }} {{ user.last_name }} (note : {{ user }})
depuis le {{ last_report }} jusqu'au {{ now }}. depuis le {{ last_week }} jusqu'au {{ now }}.
</p> </p>
<p> <p>