From b3353b563c8dae5165baa3d0753c42434d8e7d79 Mon Sep 17 00:00:00 2001 From: bleizi Date: Thu, 31 Aug 2023 12:21:38 +0200 Subject: [PATCH 1/5] add VSS checkbox on registration --- apps/member/forms.py | 6 +++++ .../0011_profile_vss_charter_read.py | 18 ++++++++++++++ apps/member/models.py | 5 ++++ apps/member/tests/test_memberships.py | 1 + apps/registration/forms.py | 1 + apps/registration/tests/test_registration.py | 24 +++++++++++++++++++ 6 files changed, 55 insertions(+) create mode 100644 apps/member/migrations/0011_profile_vss_charter_read.py diff --git a/apps/member/forms.py b/apps/member/forms.py index ab24ded6..3e976576 100644 --- a/apps/member/forms.py +++ b/apps/member/forms.py @@ -47,6 +47,12 @@ 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 charter read and approved"), + help_text=_("Tick after having read and accepted the anti-VSS charter available 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/registration/forms.py b/apps/registration/forms.py index 6761da43..ef5867a3 100644 --- a/apps/registration/forms.py +++ b/apps/registration/forms.py @@ -22,6 +22,7 @@ class SignUpForm(UserCreationForm): self.fields['last_name'].required = True self.fields['email'].required = True self.fields['email'].help_text = _("This address must be valid.") +# self.fields['VSS_charter_read'].required = True # Give some example self.fields['first_name'].widget.attrs.update({"placeholder": "Sacha"}) 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) From dab45b5fd4136eee97aa9cf4d97c346854930c06 Mon Sep 17 00:00:00 2001 From: bleizi Date: Thu, 31 Aug 2023 13:40:53 +0200 Subject: [PATCH 2/5] translation --- apps/member/forms.py | 5 +- locale/de/LC_MESSAGES/django.po | 131 ++++++++++++++++++------------- locale/es/LC_MESSAGES/django.po | 131 ++++++++++++++++++------------- locale/fr/LC_MESSAGES/django.po | 135 +++++++++++++++++++------------- 4 files changed, 234 insertions(+), 168 deletions(-) diff --git a/apps/member/forms.py b/apps/member/forms.py index 3e976576..527816cb 100644 --- a/apps/member/forms.py +++ b/apps/member/forms.py @@ -49,8 +49,9 @@ class ProfileForm(forms.ModelForm): VSS_charter_read = forms.BooleanField( required=True, - label=_("Anti-VSS charter read and approved"), - help_text=_("Tick after having read and accepted the anti-VSS charter available in pdf") + 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): 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" From aedf0e87ba7963e8a24ae55c060b6dab20a37387 Mon Sep 17 00:00:00 2001 From: bleizi Date: Thu, 31 Aug 2023 13:46:27 +0200 Subject: [PATCH 3/5] prez BDE can block note --- apps/permission/fixtures/initial.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/permission/fixtures/initial.json b/apps/permission/fixtures/initial.json index 49f1fe91..957c72b5 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, From 103e2d063512e14a2e2a51509aebe3a330065da1 Mon Sep 17 00:00:00 2001 From: bleizi Date: Thu, 31 Aug 2023 15:25:44 +0200 Subject: [PATCH 4/5] add GC anti-VSS --- apps/permission/fixtures/initial.json | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/apps/permission/fixtures/initial.json b/apps/permission/fixtures/initial.json index 957c72b5..5776abab 100644 --- a/apps/permission/fixtures/initial.json +++ b/apps/permission/fixtures/initial.json @@ -3580,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, From f545af4977ef757cdec7a7b5db6b818500a57b88 Mon Sep 17 00:00:00 2001 From: bleizi Date: Thu, 31 Aug 2023 15:40:49 +0200 Subject: [PATCH 5/5] typo --- apps/registration/forms.py | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/registration/forms.py b/apps/registration/forms.py index ef5867a3..6761da43 100644 --- a/apps/registration/forms.py +++ b/apps/registration/forms.py @@ -22,7 +22,6 @@ class SignUpForm(UserCreationForm): self.fields['last_name'].required = True self.fields['email'].required = True self.fields['email'].help_text = _("This address must be valid.") -# self.fields['VSS_charter_read'].required = True # Give some example self.fields['first_name'].widget.attrs.update({"placeholder": "Sacha"})