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)