diff --git a/apps/member/forms.py b/apps/member/forms.py
index ab24ded6..527816cb 100644
--- a/apps/member/forms.py
+++ b/apps/member/forms.py
@@ -47,6 +47,13 @@ class ProfileForm(forms.ModelForm):
last_report = forms.DateTimeField(required=False, disabled=True, label=_("Last report date"))
+ VSS_charter_read = forms.BooleanField(
+ required=True,
+ label=_("Anti-VSS (Violences Sexistes et Sexuelles) charter read and approved"),
+ help_text=_("Tick after having read and accepted the anti-VSS charter \
+ available here in pdf")
+ )
+
def clean_promotion(self):
promotion = self.cleaned_data["promotion"]
if promotion > timezone.now().year:
diff --git a/apps/member/migrations/0011_profile_vss_charter_read.py b/apps/member/migrations/0011_profile_vss_charter_read.py
new file mode 100644
index 00000000..502cc6e0
--- /dev/null
+++ b/apps/member/migrations/0011_profile_vss_charter_read.py
@@ -0,0 +1,18 @@
+# Generated by Django 2.2.28 on 2023-08-31 09:50
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('member', '0010_new_default_year'),
+ ]
+
+ operations = [
+ migrations.AddField(
+ model_name='profile',
+ name='VSS_charter_read',
+ field=models.BooleanField(default=False, verbose_name='VSS charter read'),
+ ),
+ ]
diff --git a/apps/member/models.py b/apps/member/models.py
index 3706e47f..5e0da5bc 100644
--- a/apps/member/models.py
+++ b/apps/member/models.py
@@ -134,6 +134,11 @@ class Profile(models.Model):
default=False,
)
+ VSS_charter_read = models.BooleanField(
+ verbose_name=_("VSS charter read"),
+ default=False
+ )
+
@property
def ens_year(self):
"""
diff --git a/apps/member/tests/test_memberships.py b/apps/member/tests/test_memberships.py
index b2647551..de9f3d3d 100644
--- a/apps/member/tests/test_memberships.py
+++ b/apps/member/tests/test_memberships.py
@@ -335,6 +335,7 @@ class TestMemberships(TestCase):
ml_sports_registration=True,
ml_art_registration=True,
report_frequency=7,
+ VSS_charter_read=True
))
self.assertRedirects(response, self.user.profile.get_absolute_url(), 302, 200)
self.assertTrue(User.objects.filter(username="toto changed").exists())
diff --git a/apps/permission/fixtures/initial.json b/apps/permission/fixtures/initial.json
index 49f1fe91..5776abab 100644
--- a/apps/permission/fixtures/initial.json
+++ b/apps/permission/fixtures/initial.json
@@ -3259,6 +3259,8 @@
136,
137,
150,
+ 163,
+ 164,
166,
167,
168,
@@ -3578,6 +3580,20 @@
]
}
},
+ {
+ "model": "permission.role",
+ "pk": 21,
+ "fields": {
+ "for_club": 1,
+ "name": "GC anti-VSS",
+ "permissions": [
+ 150,
+ 163,
+ 164,
+ 182
+ ]
+ }
+ },
{
"model": "wei.weirole",
"pk": 12,
diff --git a/apps/registration/tests/test_registration.py b/apps/registration/tests/test_registration.py
index 0b28efcb..69ab52d5 100644
--- a/apps/registration/tests/test_registration.py
+++ b/apps/registration/tests/test_registration.py
@@ -48,6 +48,7 @@ class TestSignup(TestCase):
ml_events_registration="en",
ml_sport_registration=True,
ml_art_registration=True,
+ VSS_charter_read=True
))
self.assertRedirects(response, reverse("registration:email_validation_sent"), 302, 200)
self.assertTrue(User.objects.filter(username="toto").exists())
@@ -105,6 +106,7 @@ class TestSignup(TestCase):
ml_events_registration="en",
ml_sport_registration=True,
ml_art_registration=True,
+ VSS_charter_read=True
))
self.assertTrue(response.status_code, 200)
@@ -124,6 +126,7 @@ class TestSignup(TestCase):
ml_events_registration="en",
ml_sport_registration=True,
ml_art_registration=True,
+ VSS_charter_read=True
))
self.assertTrue(response.status_code, 200)
@@ -143,6 +146,27 @@ class TestSignup(TestCase):
ml_events_registration="en",
ml_sport_registration=True,
ml_art_registration=True,
+ VSS_charter_read=True
+ ))
+ self.assertTrue(response.status_code, 200)
+
+ # The VSS charter is not read
+ response = self.client.post(reverse("registration:signup"), dict(
+ first_name="Toto",
+ last_name="TOTO",
+ username="Ihaveanotherusername",
+ email="othertoto@example.com",
+ password1="toto1234",
+ password2="toto1234",
+ phone_number="+33123456789",
+ department="EXT",
+ promotion=Club.objects.get(name="BDE").membership_start.year,
+ address="Earth",
+ paid=False,
+ ml_events_registration="en",
+ ml_sport_registration=True,
+ ml_art_registration=True,
+ VSS_charter_read=False
))
self.assertTrue(response.status_code, 200)
diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po
index 0900b1b4..c9e084a5 100644
--- a/locale/de/LC_MESSAGES/django.po
+++ b/locale/de/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-07-09 14:46+0200\n"
+"POT-Creation-Date: 2023-08-31 13:25+0200\n"
"PO-Revision-Date: 2020-11-16 20:02+0000\n"
"Last-Translator: bleizi \n"
"Language-Team: German \n"
@@ -53,7 +53,7 @@ msgid "You can't invite more than 3 people to this activity."
msgstr "Sie dürfen höchstens 3 Leute zu dieser Veranstaltung einladen."
#: apps/activity/models.py:28 apps/activity/models.py:63
-#: apps/member/models.py:199
+#: apps/member/models.py:204
#: apps/member/templates/member/includes/club_info.html:4
#: apps/member/templates/member/includes/profile_info.html:4
#: apps/note/models/notes.py:263 apps/note/models/transactions.py:26
@@ -114,7 +114,7 @@ msgstr "Wo findet die Veranstaltung statt ? (z.B Kfet)."
msgid "type"
msgstr "Type"
-#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
+#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:312
#: apps/note/models/notes.py:148 apps/treasury/models.py:287
#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
#: apps/wei/templates/wei/survey.html:15
@@ -262,15 +262,15 @@ msgstr "entfernen"
msgid "Type"
msgstr "Type"
-#: apps/activity/tables.py:84 apps/member/forms.py:186
-#: apps/registration/forms.py:92 apps/treasury/forms.py:131
+#: apps/activity/tables.py:84 apps/member/forms.py:193
+#: apps/registration/forms.py:93 apps/treasury/forms.py:131
#: apps/wei/forms/registration.py:104
msgid "Last name"
msgstr "Nachname"
-#: apps/activity/tables.py:86 apps/member/forms.py:191
+#: apps/activity/tables.py:86 apps/member/forms.py:198
#: apps/note/templates/note/transaction_form.html:138
-#: apps/registration/forms.py:97 apps/treasury/forms.py:133
+#: apps/registration/forms.py:98 apps/treasury/forms.py:133
#: apps/wei/forms/registration.py:109
msgid "First name"
msgstr "Vorname"
@@ -498,21 +498,21 @@ msgstr "Changelogs"
msgid "Changelog of type \"{action}\" for model {model} at {timestamp}"
msgstr "Changelog \"{action}\" für Model {model} an {timestamp}"
-#: apps/member/admin.py:50 apps/member/models.py:226
+#: apps/member/admin.py:50 apps/member/models.py:231
#: apps/member/templates/member/includes/club_info.html:34
msgid "membership fee (paid students)"
msgstr "Mitgliedschaftpreis (bezahlte Studenten)"
-#: apps/member/admin.py:51 apps/member/models.py:231
+#: apps/member/admin.py:51 apps/member/models.py:236
#: apps/member/templates/member/includes/club_info.html:37
msgid "membership fee (unpaid students)"
msgstr "Mitgliedschaftpreis (unbezahlte Studenten)"
-#: apps/member/admin.py:65 apps/member/models.py:319
+#: apps/member/admin.py:65 apps/member/models.py:324
msgid "roles"
msgstr "Rollen"
-#: apps/member/admin.py:66 apps/member/models.py:333
+#: apps/member/admin.py:66 apps/member/models.py:338
msgid "fee"
msgstr "Preis"
@@ -532,65 +532,81 @@ msgstr "Bericht Frequenz"
msgid "Last report date"
msgstr "Letzen Bericht Datum"
+#: apps/member/forms.py:52
+msgid ""
+"Anti-VSS (Violences Sexistes et Sexuelles) charter read and approved"
+msgstr ""
+"Anti-VSS (Violences Sexistes et Sexuelles) Charta gelesen und angenommen"
+
#: apps/member/forms.py:53
+msgid ""
+"Tick after having read and accepted the anti-VSS charter "
+"available here in pdf"
+msgstr ""
+"Kreuzen Sie an, nachdem Sie die Anti-VSS-Charta gelesen und akzeptiert haben, "
+"die hier als pdf-Datei verfügbar ist"
+
+#: apps/member/forms.py:60
msgid "You can't register to the note if you come from the future."
msgstr "Sie dürfen nicht einloggen wenn sie aus der Zukunft kommen."
-#: apps/member/forms.py:79
+#: apps/member/forms.py:86
msgid "select an image"
msgstr "Wählen sie ein Bild aus"
-#: apps/member/forms.py:80
+#: apps/member/forms.py:87
msgid "Maximal size: 2MB"
msgstr "Maximal Größe: 2MB"
-#: apps/member/forms.py:105
+#: apps/member/forms.py:112
msgid "This image cannot be loaded."
msgstr "Dieses Bild kann nicht geladen werden."
-#: apps/member/forms.py:141 apps/member/views.py:103
-#: apps/registration/forms.py:34 apps/registration/views.py:266
+#: apps/member/forms.py:148 apps/member/views.py:103
+#: apps/registration/forms.py:35 apps/registration/views.py:266
msgid "An alias with a similar name already exists."
msgstr "Ein ähnliches Alias ist schon benutzt."
-#: apps/member/forms.py:165
+#: apps/member/forms.py:172
msgid "Inscription paid by Société Générale"
msgstr "Mitgliedschaft von der Société Générale bezahlt"
-#: apps/member/forms.py:167
+#: apps/member/forms.py:174
msgid "Check this case if the Société Générale paid the inscription."
msgstr "Die Société Générale die Mitgliedschaft bezahlt."
-#: apps/member/forms.py:172 apps/registration/forms.py:79
+#: apps/member/forms.py:179 apps/registration/forms.py:80
#: apps/wei/forms/registration.py:91
msgid "Credit type"
msgstr "Kredittype"
-#: apps/member/forms.py:173 apps/registration/forms.py:80
+#: apps/member/forms.py:180 apps/registration/forms.py:81
#: apps/wei/forms/registration.py:92
msgid "No credit"
msgstr "Kein Kredit"
-#: apps/member/forms.py:175
+#: apps/member/forms.py:182
msgid "You can credit the note of the user."
msgstr "Sie dûrfen diese Note kreditieren."
-#: apps/member/forms.py:179 apps/registration/forms.py:85
+#: apps/member/forms.py:186 apps/registration/forms.py:86
#: apps/wei/forms/registration.py:97
msgid "Credit amount"
msgstr "Kreditanzahl"
-#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:144
-#: apps/registration/forms.py:102 apps/treasury/forms.py:135
+#: apps/member/forms.py:203 apps/note/templates/note/transaction_form.html:144
+#: apps/registration/forms.py:103 apps/treasury/forms.py:135
#: apps/wei/forms/registration.py:114
msgid "Bank"
msgstr "Bank"
-#: apps/member/forms.py:223
+#: apps/member/forms.py:230
msgid "User"
msgstr "User"
-#: apps/member/forms.py:237
+#: apps/member/forms.py:244
msgid "Roles"
msgstr "Rollen"
@@ -777,15 +793,19 @@ msgstr "email bestätigt"
msgid "registration valid"
msgstr "Anmeldung gültig"
-#: apps/member/models.py:162 apps/member/models.py:163
+#: apps/member/models.py:138
+msgid "VSS charter read"
+msgstr "VSS-Charta gelesen"
+
+#: apps/member/models.py:167 apps/member/models.py:168
msgid "user profile"
msgstr "Userprofile"
-#: apps/member/models.py:173
+#: apps/member/models.py:178
msgid "Activate your Note Kfet account"
msgstr "Ihre Note Kfet Konto bestätigen"
-#: apps/member/models.py:204
+#: apps/member/models.py:209
#: apps/member/templates/member/includes/club_info.html:55
#: apps/member/templates/member/includes/profile_info.html:40
#: apps/registration/templates/registration/future_profile_detail.html:22
@@ -794,88 +814,88 @@ msgstr "Ihre Note Kfet Konto bestätigen"
msgid "email"
msgstr "Email"
-#: apps/member/models.py:211
+#: apps/member/models.py:216
msgid "parent club"
msgstr "Urclub"
-#: apps/member/models.py:220
+#: apps/member/models.py:225
msgid "require memberships"
msgstr "erfordern Mitgliedschaft"
-#: apps/member/models.py:221
+#: apps/member/models.py:226
msgid "Uncheck if this club don't require memberships."
msgstr ""
"Deaktivieren Sie diese Option, wenn für diesen Club keine Mitgliedschaft "
"erforderlich ist."
-#: apps/member/models.py:237
+#: apps/member/models.py:242
#: apps/member/templates/member/includes/club_info.html:26
msgid "membership duration"
msgstr "Mitgliedscahftzeit"
-#: apps/member/models.py:238
+#: apps/member/models.py:243
msgid "The longest time (in days) a membership can last (NULL = infinite)."
msgstr "Wie lang am höchsten eine Mitgliedschaft dauern kann."
-#: apps/member/models.py:245
+#: apps/member/models.py:250
#: apps/member/templates/member/includes/club_info.html:16
msgid "membership start"
msgstr "Mitgliedschaftanfangsdatum"
-#: apps/member/models.py:246
+#: apps/member/models.py:251
msgid "Date from which the members can renew their membership."
msgstr "Ab wann kann man sein Mitgliedschaft erneuern."
-#: apps/member/models.py:252
+#: apps/member/models.py:257
#: apps/member/templates/member/includes/club_info.html:21
msgid "membership end"
msgstr "Mitgliedschaftenddatum"
-#: apps/member/models.py:253
+#: apps/member/models.py:258
msgid "Maximal date of a membership, after which members must renew it."
msgstr ""
"Maximales Datum einer Mitgliedschaft, nach dem Mitglieder es erneuern müssen."
-#: apps/member/models.py:288 apps/member/models.py:313
+#: apps/member/models.py:293 apps/member/models.py:318
#: apps/note/models/notes.py:176
msgid "club"
msgstr "Club"
-#: apps/member/models.py:289
+#: apps/member/models.py:294
msgid "clubs"
msgstr "Clubs"
-#: apps/member/models.py:324
+#: apps/member/models.py:329
msgid "membership starts on"
msgstr "Mitgliedschaft fängt an"
-#: apps/member/models.py:328
+#: apps/member/models.py:333
msgid "membership ends on"
msgstr "Mitgliedschaft endet am"
-#: apps/member/models.py:430
+#: apps/member/models.py:435
#, python-brace-format
msgid "The role {role} does not apply to the club {club}."
msgstr "Die Rolle {role} ist nicht erlaubt für das Club {club}."
-#: apps/member/models.py:439 apps/member/views.py:712
+#: apps/member/models.py:444 apps/member/views.py:712
msgid "User is already a member of the club"
msgstr "User ist schon ein Mitglied dieser club"
-#: apps/member/models.py:451 apps/member/views.py:721
+#: apps/member/models.py:456 apps/member/views.py:721
msgid "User is not a member of the parent club"
msgstr "User ist noch nicht Mitglied des Urclubs"
-#: apps/member/models.py:504
+#: apps/member/models.py:509
#, python-brace-format
msgid "Membership of {user} for the club {club}"
msgstr "Mitgliedschaft von {user} für das Club {club}"
-#: apps/member/models.py:507 apps/note/models/transactions.py:389
+#: apps/member/models.py:512 apps/note/models/transactions.py:389
msgid "membership"
msgstr "Mitgliedschaft"
-#: apps/member/models.py:508
+#: apps/member/models.py:513
msgid "memberships"
msgstr "Mitgliedschaften"
@@ -1860,7 +1880,7 @@ msgstr "Angabefeld gilt nur zum Anzeigen und Ändern von Berechtigungstypen."
msgid "for club"
msgstr "Für Club"
-#: apps/permission/models.py:350 apps/permission/models.py:351
+#: apps/permission/models.py:351 apps/permission/models.py:352
msgid "role permissions"
msgstr "Berechtigung Rollen"
@@ -1982,15 +2002,15 @@ msgstr "Alle Rechten"
msgid "registration"
msgstr "Anmeldung"
-#: apps/registration/forms.py:40
+#: apps/registration/forms.py:41
msgid "This email address is already used."
msgstr "Diese email adresse ist schon benutzt."
-#: apps/registration/forms.py:60
+#: apps/registration/forms.py:61
msgid "Register to the WEI"
msgstr "Zu WEI anmelden"
-#: apps/registration/forms.py:62
+#: apps/registration/forms.py:63
msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you "
"will be able to register later, after validating your account in the Kfet."
@@ -1999,15 +2019,15 @@ msgstr ""
"falls Zweifel, können Sie sich später nach Bestätigung Ihres Kontos im Kfet "
"registrieren."
-#: apps/registration/forms.py:107
+#: apps/registration/forms.py:108
msgid "Join BDE Club"
msgstr "BDE Mitglieder werden"
-#: apps/registration/forms.py:114
+#: apps/registration/forms.py:115
msgid "Join Kfet Club"
msgstr "Kfet Mitglieder werden"
-#: apps/registration/forms.py:123
+#: apps/registration/forms.py:124
msgid "Join BDA Club"
msgstr "BDA Mitglieder werden"
@@ -2631,6 +2651,7 @@ msgid "This team doesn't belong to the given bus."
msgstr "Dieses Team gehört nicht zum angegebenen Bus."
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38
+#: apps/wei/forms/surveys/wei2023.py:38
msgid "Choose a word:"
msgstr "Wählen Sie ein Wort:"
diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po
index 78a6aae1..5d2aaa9e 100644
--- a/locale/es/LC_MESSAGES/django.po
+++ b/locale/es/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-07-09 14:46+0200\n"
+"POT-Creation-Date: 2023-08-31 13:25+0200\n"
"PO-Revision-Date: 2022-04-11 23:12+0200\n"
"Last-Translator: bleizi \n"
"Language-Team: \n"
@@ -52,7 +52,7 @@ msgid "You can't invite more than 3 people to this activity."
msgstr "Usted no puede invitar más de 3 persona a esta actividad."
#: apps/activity/models.py:28 apps/activity/models.py:63
-#: apps/member/models.py:199
+#: apps/member/models.py:204
#: apps/member/templates/member/includes/club_info.html:4
#: apps/member/templates/member/includes/profile_info.html:4
#: apps/note/models/notes.py:263 apps/note/models/transactions.py:26
@@ -113,7 +113,7 @@ msgstr "Lugar donde se organiza la actividad, por ejemplo la Kfet."
msgid "type"
msgstr "tipo"
-#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
+#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:312
#: apps/note/models/notes.py:148 apps/treasury/models.py:287
#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
#: apps/wei/templates/wei/survey.html:15
@@ -261,15 +261,15 @@ msgstr "quitar"
msgid "Type"
msgstr "Tipo"
-#: apps/activity/tables.py:84 apps/member/forms.py:186
-#: apps/registration/forms.py:92 apps/treasury/forms.py:131
+#: apps/activity/tables.py:84 apps/member/forms.py:193
+#: apps/registration/forms.py:93 apps/treasury/forms.py:131
#: apps/wei/forms/registration.py:104
msgid "Last name"
msgstr "Apellido"
-#: apps/activity/tables.py:86 apps/member/forms.py:191
+#: apps/activity/tables.py:86 apps/member/forms.py:198
#: apps/note/templates/note/transaction_form.html:138
-#: apps/registration/forms.py:97 apps/treasury/forms.py:133
+#: apps/registration/forms.py:98 apps/treasury/forms.py:133
#: apps/wei/forms/registration.py:109
msgid "First name"
msgstr "Nombre"
@@ -495,21 +495,21 @@ msgstr "diario de cambios"
msgid "Changelog of type \"{action}\" for model {model} at {timestamp}"
msgstr ""
-#: apps/member/admin.py:50 apps/member/models.py:226
+#: apps/member/admin.py:50 apps/member/models.py:231
#: apps/member/templates/member/includes/club_info.html:34
msgid "membership fee (paid students)"
msgstr "pago de afiliación (estudiantes pagados)"
-#: apps/member/admin.py:51 apps/member/models.py:231
+#: apps/member/admin.py:51 apps/member/models.py:236
#: apps/member/templates/member/includes/club_info.html:37
msgid "membership fee (unpaid students)"
msgstr "pago de afiliación (estudiantes no pagados)"
-#: apps/member/admin.py:65 apps/member/models.py:319
+#: apps/member/admin.py:65 apps/member/models.py:324
msgid "roles"
msgstr "papel"
-#: apps/member/admin.py:66 apps/member/models.py:333
+#: apps/member/admin.py:66 apps/member/models.py:338
msgid "fee"
msgstr "pago"
@@ -529,65 +529,81 @@ msgstr "Frecuencia de los informes (en días)"
msgid "Last report date"
msgstr "Fecha del último informe"
+#: apps/member/forms.py:52
+msgid ""
+"Anti-VSS (Violences Sexistes et Sexuelles) charter read and approved"
+msgstr ""
+"Carta Anti-VSS (Violences Sexistes et Sexuelles) leída y aprobada"
+
#: apps/member/forms.py:53
+msgid ""
+"Tick after having read and accepted the anti-VSS charter "
+"available here in pdf"
+msgstr ""
+"Marque después de leer y aceptar la carta anti-VVS "
+"disponible en pdf aquí"
+
+#: apps/member/forms.py:60
msgid "You can't register to the note if you come from the future."
msgstr "Usted no puede registrar si viene del futuro."
-#: apps/member/forms.py:79
+#: apps/member/forms.py:86
msgid "select an image"
msgstr "elegir una imagen"
-#: apps/member/forms.py:80
+#: apps/member/forms.py:87
msgid "Maximal size: 2MB"
msgstr "Tamaño máximo : 2Mo"
-#: apps/member/forms.py:105
+#: apps/member/forms.py:112
msgid "This image cannot be loaded."
msgstr "Esta imagen no puede ser cargada."
-#: apps/member/forms.py:141 apps/member/views.py:103
-#: apps/registration/forms.py:34 apps/registration/views.py:266
+#: apps/member/forms.py:148 apps/member/views.py:103
+#: apps/registration/forms.py:35 apps/registration/views.py:266
msgid "An alias with a similar name already exists."
msgstr "Un alias similar ya existe."
-#: apps/member/forms.py:165
+#: apps/member/forms.py:172
msgid "Inscription paid by Société Générale"
msgstr "Registración pagadas por Société Générale"
-#: apps/member/forms.py:167
+#: apps/member/forms.py:174
msgid "Check this case if the Société Générale paid the inscription."
msgstr "Marcar esta casilla si Société Générale pagó la registración."
-#: apps/member/forms.py:172 apps/registration/forms.py:79
+#: apps/member/forms.py:179 apps/registration/forms.py:80
#: apps/wei/forms/registration.py:91
msgid "Credit type"
msgstr "Tipo de crédito"
-#: apps/member/forms.py:173 apps/registration/forms.py:80
+#: apps/member/forms.py:180 apps/registration/forms.py:81
#: apps/wei/forms/registration.py:92
msgid "No credit"
msgstr "No crédito"
-#: apps/member/forms.py:175
+#: apps/member/forms.py:182
msgid "You can credit the note of the user."
msgstr "Usted puede acreditar la note del usuario."
-#: apps/member/forms.py:179 apps/registration/forms.py:85
+#: apps/member/forms.py:186 apps/registration/forms.py:86
#: apps/wei/forms/registration.py:97
msgid "Credit amount"
msgstr "Valor del crédito"
-#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:144
-#: apps/registration/forms.py:102 apps/treasury/forms.py:135
+#: apps/member/forms.py:203 apps/note/templates/note/transaction_form.html:144
+#: apps/registration/forms.py:103 apps/treasury/forms.py:135
#: apps/wei/forms/registration.py:114
msgid "Bank"
msgstr "Banco"
-#: apps/member/forms.py:223
+#: apps/member/forms.py:230
msgid "User"
msgstr "Usuario"
-#: apps/member/forms.py:237
+#: apps/member/forms.py:244
msgid "Roles"
msgstr "Papeles"
@@ -772,15 +788,19 @@ msgstr "correo electrónico confirmado"
msgid "registration valid"
msgstr "registración valida"
-#: apps/member/models.py:162 apps/member/models.py:163
+#: apps/member/models.py:138
+msgid "VSS charter read"
+msgstr "Carta VSS leída"
+
+#: apps/member/models.py:167 apps/member/models.py:168
msgid "user profile"
msgstr "perfil usuario"
-#: apps/member/models.py:173
+#: apps/member/models.py:178
msgid "Activate your Note Kfet account"
msgstr "Active su cuenta Note Kfet"
-#: apps/member/models.py:204
+#: apps/member/models.py:209
#: apps/member/templates/member/includes/club_info.html:55
#: apps/member/templates/member/includes/profile_info.html:40
#: apps/registration/templates/registration/future_profile_detail.html:22
@@ -789,87 +809,87 @@ msgstr "Active su cuenta Note Kfet"
msgid "email"
msgstr "correo electrónico"
-#: apps/member/models.py:211
+#: apps/member/models.py:216
msgid "parent club"
msgstr "club pariente"
-#: apps/member/models.py:220
+#: apps/member/models.py:225
msgid "require memberships"
msgstr "necesita afiliaciones"
-#: apps/member/models.py:221
+#: apps/member/models.py:226
msgid "Uncheck if this club don't require memberships."
msgstr "Desmarcar si este club no usa afiliaciones."
-#: apps/member/models.py:237
+#: apps/member/models.py:242
#: apps/member/templates/member/includes/club_info.html:26
msgid "membership duration"
msgstr "duración de la afiliación"
-#: apps/member/models.py:238
+#: apps/member/models.py:243
msgid "The longest time (in days) a membership can last (NULL = infinite)."
msgstr "La duración máxima (en días) de una afiliación (NULL = infinito)."
-#: apps/member/models.py:245
+#: apps/member/models.py:250
#: apps/member/templates/member/includes/club_info.html:16
msgid "membership start"
msgstr "inicio de la afiliación"
-#: apps/member/models.py:246
+#: apps/member/models.py:251
msgid "Date from which the members can renew their membership."
msgstr "Fecha a partir de la cual los miembros pueden prorrogar su afiliación."
-#: apps/member/models.py:252
+#: apps/member/models.py:257
#: apps/member/templates/member/includes/club_info.html:21
msgid "membership end"
msgstr "fin de la afiliación"
-#: apps/member/models.py:253
+#: apps/member/models.py:258
msgid "Maximal date of a membership, after which members must renew it."
msgstr ""
"Ultima fecha de una afiliación, después de la cual los miembros tienen que "
"prorrogarla."
-#: apps/member/models.py:288 apps/member/models.py:313
+#: apps/member/models.py:293 apps/member/models.py:318
#: apps/note/models/notes.py:176
msgid "club"
msgstr "club"
-#: apps/member/models.py:289
+#: apps/member/models.py:294
msgid "clubs"
msgstr "clubs"
-#: apps/member/models.py:324
+#: apps/member/models.py:329
msgid "membership starts on"
msgstr "afiliación empezá el"
-#: apps/member/models.py:328
+#: apps/member/models.py:333
msgid "membership ends on"
msgstr "afiliación termina el"
-#: apps/member/models.py:430
+#: apps/member/models.py:435
#, python-brace-format
msgid "The role {role} does not apply to the club {club}."
msgstr "El papel {role} no se encuentra en el club {club}."
-#: apps/member/models.py:439 apps/member/views.py:712
+#: apps/member/models.py:444 apps/member/views.py:712
msgid "User is already a member of the club"
msgstr "Usuario ya esta un miembro del club"
-#: apps/member/models.py:451 apps/member/views.py:721
+#: apps/member/models.py:456 apps/member/views.py:721
msgid "User is not a member of the parent club"
msgstr "Usuario no es un miembro del club pariente"
-#: apps/member/models.py:504
+#: apps/member/models.py:509
#, python-brace-format
msgid "Membership of {user} for the club {club}"
msgstr "Afiliación of {user} for the club {club}"
-#: apps/member/models.py:507 apps/note/models/transactions.py:389
+#: apps/member/models.py:512 apps/note/models/transactions.py:389
msgid "membership"
msgstr "afiliación"
-#: apps/member/models.py:508
+#: apps/member/models.py:513
msgid "memberships"
msgstr "afiliaciones"
@@ -1845,7 +1865,7 @@ msgstr ""
msgid "for club"
msgstr "interesa el club"
-#: apps/permission/models.py:350 apps/permission/models.py:351
+#: apps/permission/models.py:351 apps/permission/models.py:352
msgid "role permissions"
msgstr "permisos por papeles"
@@ -1963,15 +1983,15 @@ msgstr "Todos los permisos"
msgid "registration"
msgstr "afiliación"
-#: apps/registration/forms.py:40
+#: apps/registration/forms.py:41
msgid "This email address is already used."
msgstr "Este correo electrónico ya esta utilizado."
-#: apps/registration/forms.py:60
+#: apps/registration/forms.py:61
msgid "Register to the WEI"
msgstr "Registrarse en el WEI"
-#: apps/registration/forms.py:62
+#: apps/registration/forms.py:63
msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you "
"will be able to register later, after validating your account in the Kfet."
@@ -1979,15 +1999,15 @@ msgstr ""
"Marcar esta casilla si usted quiere registrarse en el WEI. Si duda, podrá "
"registrarse más tarde, después de validar su cuenta Note Kfet."
-#: apps/registration/forms.py:107
+#: apps/registration/forms.py:108
msgid "Join BDE Club"
msgstr "Afiliarse al club BDE"
-#: apps/registration/forms.py:114
+#: apps/registration/forms.py:115
msgid "Join Kfet Club"
msgstr "Afiliarse al club Kfet"
-#: apps/registration/forms.py:123
+#: apps/registration/forms.py:124
msgid "Join BDA Club"
msgstr "Afiliarse al club BDA"
@@ -2601,6 +2621,7 @@ msgid "This team doesn't belong to the given bus."
msgstr "Este equipo no pertenece al bus dado."
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38
+#: apps/wei/forms/surveys/wei2023.py:38
msgid "Choose a word:"
msgstr "Elegir una palabra :"
diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po
index eabfc3fb..0f26bca0 100644
--- a/locale/fr/LC_MESSAGES/django.po
+++ b/locale/fr/LC_MESSAGES/django.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-07-09 14:46+0200\n"
+"POT-Creation-Date: 2023-08-31 13:25+0200\n"
"PO-Revision-Date: 2022-04-11 22:05+0200\n"
"Last-Translator: bleizi \n"
"Language-Team: French \n"
@@ -53,7 +53,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é."
#: apps/activity/models.py:28 apps/activity/models.py:63
-#: apps/member/models.py:199
+#: apps/member/models.py:204
#: apps/member/templates/member/includes/club_info.html:4
#: apps/member/templates/member/includes/profile_info.html:4
#: apps/note/models/notes.py:263 apps/note/models/transactions.py:26
@@ -114,7 +114,7 @@ msgstr "Lieu où l'activité est organisée, par exemple la Kfet."
msgid "type"
msgstr "type"
-#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:307
+#: apps/activity/models.py:89 apps/logs/models.py:22 apps/member/models.py:312
#: apps/note/models/notes.py:148 apps/treasury/models.py:287
#: apps/wei/models.py:173 apps/wei/templates/wei/attribute_bus_1A.html:13
#: apps/wei/templates/wei/survey.html:15
@@ -262,15 +262,15 @@ msgstr "supprimer"
msgid "Type"
msgstr "Type"
-#: apps/activity/tables.py:84 apps/member/forms.py:186
-#: apps/registration/forms.py:92 apps/treasury/forms.py:131
+#: apps/activity/tables.py:84 apps/member/forms.py:193
+#: apps/registration/forms.py:93 apps/treasury/forms.py:131
#: apps/wei/forms/registration.py:104
msgid "Last name"
msgstr "Nom de famille"
-#: apps/activity/tables.py:86 apps/member/forms.py:191
+#: apps/activity/tables.py:86 apps/member/forms.py:198
#: apps/note/templates/note/transaction_form.html:138
-#: apps/registration/forms.py:97 apps/treasury/forms.py:133
+#: apps/registration/forms.py:98 apps/treasury/forms.py:133
#: apps/wei/forms/registration.py:109
msgid "First name"
msgstr "Prénom"
@@ -497,21 +497,21 @@ msgstr "journaux de modifications"
msgid "Changelog of type \"{action}\" for model {model} at {timestamp}"
msgstr "Changelog de type « {action} » pour le modèle {model} à {timestamp}"
-#: apps/member/admin.py:50 apps/member/models.py:226
+#: apps/member/admin.py:50 apps/member/models.py:231
#: apps/member/templates/member/includes/club_info.html:34
msgid "membership fee (paid students)"
msgstr "cotisation pour adhérer (normalien élève)"
-#: apps/member/admin.py:51 apps/member/models.py:231
+#: apps/member/admin.py:51 apps/member/models.py:236
#: apps/member/templates/member/includes/club_info.html:37
msgid "membership fee (unpaid students)"
msgstr "cotisation pour adhérer (normalien étudiant)"
-#: apps/member/admin.py:65 apps/member/models.py:319
+#: apps/member/admin.py:65 apps/member/models.py:324
msgid "roles"
msgstr "rôles"
-#: apps/member/admin.py:66 apps/member/models.py:333
+#: apps/member/admin.py:66 apps/member/models.py:338
msgid "fee"
msgstr "cotisation"
@@ -531,65 +531,81 @@ msgstr "Fréquence des rapports (en jours)"
msgid "Last report date"
msgstr "Date de dernier rapport"
+#: apps/member/forms.py:52
+msgid ""
+"Anti-VSS (Violences Sexistes et Sexuelles) charter read and approved"
+msgstr ""
+"Charte Anti-VSS (Violences Sexistes et Sexuelles) lue et approuvée"
+
#: apps/member/forms.py:53
+msgid ""
+"Tick after having read and accepted the anti-VSS charter "
+"available here in pdf"
+msgstr ""
+"Cochez après avoir lu la chartre anti-VSS "
+"disponible en pdf ici"
+
+#: apps/member/forms.py:60
msgid "You can't register to the note if you come from the future."
msgstr "Vous ne pouvez pas vous inscrire à la note si vous venez du futur."
-#: apps/member/forms.py:79
+#: apps/member/forms.py:86
msgid "select an image"
msgstr "choisissez une image"
-#: apps/member/forms.py:80
+#: apps/member/forms.py:87
msgid "Maximal size: 2MB"
msgstr "Taille maximale : 2 Mo"
-#: apps/member/forms.py:105
+#: apps/member/forms.py:112
msgid "This image cannot be loaded."
msgstr "Cette image ne peut pas être chargée."
-#: apps/member/forms.py:141 apps/member/views.py:103
-#: apps/registration/forms.py:34 apps/registration/views.py:266
+#: apps/member/forms.py:148 apps/member/views.py:103
+#: apps/registration/forms.py:35 apps/registration/views.py:266
msgid "An alias with a similar name already exists."
msgstr "Un alias avec un nom similaire existe déjà."
-#: apps/member/forms.py:165
+#: apps/member/forms.py:172
msgid "Inscription paid by Société Générale"
msgstr "Inscription payée par la Société générale"
-#: apps/member/forms.py:167
+#: apps/member/forms.py:174
msgid "Check this case if the Société Générale paid the inscription."
msgstr "Cochez cette case si la Société Générale a payé l'inscription."
-#: apps/member/forms.py:172 apps/registration/forms.py:79
+#: apps/member/forms.py:179 apps/registration/forms.py:80
#: apps/wei/forms/registration.py:91
msgid "Credit type"
msgstr "Type de rechargement"
-#: apps/member/forms.py:173 apps/registration/forms.py:80
+#: apps/member/forms.py:180 apps/registration/forms.py:81
#: apps/wei/forms/registration.py:92
msgid "No credit"
msgstr "Pas de rechargement"
-#: apps/member/forms.py:175
+#: apps/member/forms.py:182
msgid "You can credit the note of the user."
msgstr "Vous pouvez créditer la note de l'utilisateur avant l'adhésion."
-#: apps/member/forms.py:179 apps/registration/forms.py:85
+#: apps/member/forms.py:186 apps/registration/forms.py:86
#: apps/wei/forms/registration.py:97
msgid "Credit amount"
msgstr "Montant à créditer"
-#: apps/member/forms.py:196 apps/note/templates/note/transaction_form.html:144
-#: apps/registration/forms.py:102 apps/treasury/forms.py:135
+#: apps/member/forms.py:203 apps/note/templates/note/transaction_form.html:144
+#: apps/registration/forms.py:103 apps/treasury/forms.py:135
#: apps/wei/forms/registration.py:114
msgid "Bank"
msgstr "Banque"
-#: apps/member/forms.py:223
+#: apps/member/forms.py:230
msgid "User"
msgstr "Utilisateur"
-#: apps/member/forms.py:237
+#: apps/member/forms.py:244
msgid "Roles"
msgstr "Rôles"
@@ -774,15 +790,19 @@ msgstr "adresse email confirmée"
msgid "registration valid"
msgstr "inscription valide"
-#: apps/member/models.py:162 apps/member/models.py:163
+#: apps/member/models.py:138
+msgid "VSS charter read"
+msgstr "Charte VSS lue"
+
+#: apps/member/models.py:167 apps/member/models.py:168
msgid "user profile"
msgstr "profil utilisateur"
-#: apps/member/models.py:173
+#: apps/member/models.py:178
msgid "Activate your Note Kfet account"
msgstr "Activez votre compte Note Kfet"
-#: apps/member/models.py:204
+#: apps/member/models.py:209
#: apps/member/templates/member/includes/club_info.html:55
#: apps/member/templates/member/includes/profile_info.html:40
#: apps/registration/templates/registration/future_profile_detail.html:22
@@ -791,88 +811,88 @@ msgstr "Activez votre compte Note Kfet"
msgid "email"
msgstr "courriel"
-#: apps/member/models.py:211
+#: apps/member/models.py:216
msgid "parent club"
msgstr "club parent"
-#: apps/member/models.py:220
+#: apps/member/models.py:225
msgid "require memberships"
msgstr "nécessite des adhésions"
-#: apps/member/models.py:221
+#: apps/member/models.py:226
msgid "Uncheck if this club don't require memberships."
msgstr "Décochez si ce club n'utilise pas d'adhésions."
-#: apps/member/models.py:237
+#: apps/member/models.py:242
#: apps/member/templates/member/includes/club_info.html:26
msgid "membership duration"
msgstr "durée de l'adhésion"
-#: apps/member/models.py:238
+#: apps/member/models.py:243
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)."
-#: apps/member/models.py:245
+#: apps/member/models.py:250
#: apps/member/templates/member/includes/club_info.html:16
msgid "membership start"
msgstr "début de l'adhésion"
-#: apps/member/models.py:246
+#: apps/member/models.py:251
msgid "Date from which the members can renew their membership."
msgstr ""
"Date à partir de laquelle les adhérents peuvent renouveler leur adhésion."
-#: apps/member/models.py:252
+#: apps/member/models.py:257
#: apps/member/templates/member/includes/club_info.html:21
msgid "membership end"
msgstr "fin de l'adhésion"
-#: apps/member/models.py:253
+#: apps/member/models.py:258
msgid "Maximal date of a membership, after which members must renew it."
msgstr ""
"Date maximale d'une fin d'adhésion, après laquelle les adhérents doivent la "
"renouveler."
-#: apps/member/models.py:288 apps/member/models.py:313
+#: apps/member/models.py:293 apps/member/models.py:318
#: apps/note/models/notes.py:176
msgid "club"
msgstr "club"
-#: apps/member/models.py:289
+#: apps/member/models.py:294
msgid "clubs"
msgstr "clubs"
-#: apps/member/models.py:324
+#: apps/member/models.py:329
msgid "membership starts on"
msgstr "l'adhésion commence le"
-#: apps/member/models.py:328
+#: apps/member/models.py:333
msgid "membership ends on"
msgstr "l'adhésion finit le"
-#: apps/member/models.py:430
+#: apps/member/models.py:435
#, python-brace-format
msgid "The role {role} does not apply to the club {club}."
msgstr "Le rôle {role} ne s'applique pas au club {club}."
-#: apps/member/models.py:439 apps/member/views.py:712
+#: apps/member/models.py:444 apps/member/views.py:712
msgid "User is already a member of the club"
msgstr "L'utilisateur est déjà membre du club"
-#: apps/member/models.py:451 apps/member/views.py:721
+#: apps/member/models.py:456 apps/member/views.py:721
msgid "User is not a member of the parent club"
msgstr "L'utilisateur n'est pas membre du club parent"
-#: apps/member/models.py:504
+#: apps/member/models.py:509
#, python-brace-format
msgid "Membership of {user} for the club {club}"
msgstr "Adhésion de {user} pour le club {club}"
-#: apps/member/models.py:507 apps/note/models/transactions.py:389
+#: apps/member/models.py:512 apps/note/models/transactions.py:389
msgid "membership"
msgstr "adhésion"
-#: apps/member/models.py:508
+#: apps/member/models.py:513
msgid "memberships"
msgstr "adhésions"
@@ -1851,7 +1871,7 @@ msgstr ""
msgid "for club"
msgstr "s'applique au club"
-#: apps/permission/models.py:350 apps/permission/models.py:351
+#: apps/permission/models.py:351 apps/permission/models.py:352
msgid "role permissions"
msgstr "permissions par rôles"
@@ -1972,15 +1992,15 @@ msgstr "Tous les droits"
msgid "registration"
msgstr "inscription"
-#: apps/registration/forms.py:40
+#: apps/registration/forms.py:41
msgid "This email address is already used."
msgstr "Cet email est déjà pris."
-#: apps/registration/forms.py:60
+#: apps/registration/forms.py:61
msgid "Register to the WEI"
msgstr "S'inscrire au WEI"
-#: apps/registration/forms.py:62
+#: apps/registration/forms.py:63
msgid ""
"Check this case if you want to register to the WEI. If you hesitate, you "
"will be able to register later, after validating your account in the Kfet."
@@ -1989,15 +2009,15 @@ msgstr ""
"pourrez toujours vous inscrire plus tard, après avoir validé votre compte à "
"la Kfet."
-#: apps/registration/forms.py:107
+#: apps/registration/forms.py:108
msgid "Join BDE Club"
msgstr "Adhérer au club BDE"
-#: apps/registration/forms.py:114
+#: apps/registration/forms.py:115
msgid "Join Kfet Club"
msgstr "Adhérer au club Kfet"
-#: apps/registration/forms.py:123
+#: apps/registration/forms.py:124
msgid "Join BDA Club"
msgstr "Adhérer au club BDA"
@@ -2613,6 +2633,7 @@ msgid "This team doesn't belong to the given bus."
msgstr "Cette équipe n'appartient pas à ce bus."
#: apps/wei/forms/surveys/wei2021.py:35 apps/wei/forms/surveys/wei2022.py:38
+#: apps/wei/forms/surveys/wei2023.py:38
msgid "Choose a word:"
msgstr "Choisissez un mot :"
@@ -2722,7 +2743,9 @@ msgstr "nom du contact en cas d'urgence"
#: apps/wei/models.py:240
msgid "The emergency contact must not be a WEI participant"
-msgstr "Le contact en cas d'urgence ne doit pas être une personne qui participe au WEI"
+msgstr ""
+"Le contact en cas d'urgence ne doit pas être une personne qui participe au "
+"WEI"
#: apps/wei/models.py:245 apps/wei/templates/wei/weimembership_form.html:73
msgid "emergency contact phone"