From b8aa0547e908a79f40b44ce00ff0fe5cc1539988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81bastiaan=20Versteeg?= Date: Fri, 21 Jul 2017 23:23:29 +0200 Subject: [PATCH 1/2] Add test to check if cancel deadline is before start event --- website/events/tests/test_models.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/website/events/tests/test_models.py b/website/events/tests/test_models.py index 81f563c0..733338f7 100644 --- a/website/events/tests/test_models.py +++ b/website/events/tests/test_models.py @@ -99,6 +99,15 @@ class EventTest(TestCase): self.event.registration_end, self.event.registration_start self.event.clean() + def test_cancel_deadline_before_registration_start(self): + self.event.cancel_deadline = (self.event.start + + datetime.timedelta(hours=1)) + with self.assertRaises(ValidationError): + self.event.clean() + + self.event.cancel_deadline = self.event.start + self.event.clean() + def test_status_registration_not_needed(self): self.assertEqual(self.event.status, Event.REGISTRATION_NOT_NEEDED) -- GitLab From 8ce882406f1a6d57d0db90b4058487e4bbfda24d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=CC=81bastiaan=20Versteeg?= Date: Fri, 21 Jul 2017 23:26:31 +0200 Subject: [PATCH 2/2] Add check for cancel deadline before start of event --- .../events/locale/nl/LC_MESSAGES/django.mo | Bin 10263 -> 10403 bytes .../events/locale/nl/LC_MESSAGES/django.po | 68 +++++++++--------- website/events/models.py | 5 ++ website/events/tests/test_models.py | 3 + 4 files changed, 44 insertions(+), 32 deletions(-) diff --git a/website/events/locale/nl/LC_MESSAGES/django.mo b/website/events/locale/nl/LC_MESSAGES/django.mo index 2bc65d2be50d88c0431764e52dea68ccefec4a21..3b807bc9e950d5680a43e5fb3b7716f06c80c036 100644 GIT binary patch delta 2848 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\n" "Language-Team: \n" "Language: nl\n" @@ -16,7 +16,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -"X-Generator: Poedit 1.5.4\n" +"X-Generator: Poedit 2.0.2\n" #: admin.py:89 msgid "Event Date" @@ -74,7 +74,7 @@ msgstr "Workshop" msgid "Other" msgstr "Overig" -#: models.py:33 templates/events/event.html:142 +#: models.py:33 templates/events/event.html:143 msgid "No registration required" msgstr "Geen aanmelding vereist" @@ -82,7 +82,7 @@ msgstr "Geen aanmelding vereist" msgid "title" msgstr "titel" -#: models.py:43 models.py:264 +#: models.py:43 models.py:269 msgid "description" msgstr "beschrijving" @@ -198,63 +198,67 @@ msgstr "" "Als aanmelden vereist is, dan heb je een eindtijd voor de aanmeldperiode " "nodig" -#: models.py:215 +#: models.py:216 +msgid "The cancel deadline should be before the start of the event." +msgstr "De afmelddeadline moet voor de start van het evenement liggen." + +#: models.py:220 msgid "Registration start should be before registration end" msgstr "De starttijd voor de aanmeldperiode moet voor de eindtijd liggen" -#: models.py:244 +#: models.py:249 msgid "Checkbox" msgstr "Checkbox" -#: models.py:245 +#: models.py:250 msgid "Text" msgstr "Text\t" -#: models.py:246 +#: models.py:251 msgid "Integer" msgstr "Integer" -#: models.py:251 +#: models.py:256 msgid "field type" msgstr "veldtype" -#: models.py:258 +#: models.py:263 msgid "field name" msgstr "veldnaam" -#: models.py:270 +#: models.py:275 msgid "required" msgstr "verplicht" -#: models.py:331 templates/events/admin/registrations_table.html:6 +#: models.py:336 templates/events/admin/registrations_table.html:6 msgid "name" msgstr "naam" -#: models.py:333 +#: models.py:338 msgid "Use this for non-members" msgstr "Gebruikt dit voor niet-leden" -#: models.py:338 +#: models.py:343 msgid "registration date" msgstr "aanmelddatum" -#: models.py:340 +#: models.py:345 msgid "cancellation date" msgstr "afmelddatum" -#: models.py:345 templates/events/admin/registrations_table.html:11 +#: models.py:350 templates/events/admin/registrations_table.html:11 msgid "present" msgstr "aanwezig" -#: models.py:349 templates/events/admin/registrations_table.html:12 +#: models.py:354 templates/events/admin/registrations_table.html:12 msgid "paid" msgstr "betaald" -#: models.py:400 models.py:401 +#: models.py:405 models.py:406 msgid "Either specify a member or a name" msgstr "Geef een lid of een naam op" -#: models.py:423 +#: models.py:428 msgid "last changed" msgstr "laatst aangepast" @@ -489,16 +493,16 @@ msgstr "Login" msgid "You have to log in before you can register for this event." msgstr "Je moet inloggen voordat je jezelf kunt aanmelden." -#: templates/events/event.html:135 +#: templates/events/event.html:136 #, python-format msgid "Registration will open %(datetime)s" msgstr "Aanmelden opent %(datetime)s" -#: templates/events/event.html:137 +#: templates/events/event.html:138 msgid "Registration is not possible anymore." msgstr "Aanmelden is niet meer mogelijk." -#: templates/events/event.html:147 +#: templates/events/event.html:148 #, python-format msgid "" "Cancellation isn't possible anymore without having to pay the full costs of €" @@ -507,16 +511,16 @@ msgstr "" "Afmelden is niet meer mogelijk zonder de volledige kosten van €%(costs)s te " "betalen. Let op: je kunt je hierna niet meer aanmelden." -#: templates/events/event.html:161 +#: templates/events/event.html:163 msgctxt "pizzas" msgid "Order" msgstr "Bestellen" -#: templates/events/event.html:179 +#: templates/events/event.html:181 msgid "Registrations" msgstr "Aanmeldingen" -#: templates/events/event.html:213 +#: templates/events/event.html:215 msgid "cohort" msgstr "cohort" @@ -580,28 +584,28 @@ msgstr "Ja" msgid "[THALIA] Notification about your registration for '{}'" msgstr "[THALIA] Bericht over je aanmelding voor ‘{}’" -#: views.py:260 views.py:271 views.py:282 +#: views.py:262 views.py:273 views.py:286 msgid "Registration successful." msgstr "Je aanmelding was succesvol." -#: views.py:266 +#: views.py:268 msgid "" "You cannot re-register anymore since you've cancelled after the deadline." msgstr "" "Je kunt je niet opnieuw aanmelden omdat je je hebt afgemeld na de deadline." -#: views.py:277 +#: views.py:281 msgid "You may not register" msgstr "Je mag niet je aanmelden" -#: views.py:285 +#: views.py:289 msgid "You were already registered." msgstr "Je bent al aangemeld." -#: views.py:294 views.py:302 +#: views.py:298 views.py:306 msgid "You are not registered for this event." msgstr "Je bent niet aangemeld voor dit evenement." -#: views.py:313 +#: views.py:318 msgid "Registration successfully cancelled." msgstr "Je afmelding was succesvol." diff --git a/website/events/models.py b/website/events/models.py index f98a2cb0..abc083b2 100644 --- a/website/events/models.py +++ b/website/events/models.py @@ -210,6 +210,11 @@ class Event(models.Model, metaclass=ModelTranslateMeta): {'cancel_deadline': _( "If registration is required, you need a deadline for " "the cancellation")}) + elif self.cancel_deadline > self.start: + errors.update( + {'cancel_deadline': _( + "The cancel deadline should be" + " before the start of the event.")}) if self.registration_start and self.registration_end and ( self.registration_start >= self.registration_end): message = _('Registration start should be before ' diff --git a/website/events/tests/test_models.py b/website/events/tests/test_models.py index 733338f7..0323b706 100644 --- a/website/events/tests/test_models.py +++ b/website/events/tests/test_models.py @@ -100,6 +100,9 @@ class EventTest(TestCase): self.event.clean() def test_cancel_deadline_before_registration_start(self): + self.event.registration_start = timezone.now() + self.event.registration_end = (timezone.now() + + datetime.timedelta(hours=1)) self.event.cancel_deadline = (self.event.start + datetime.timedelta(hours=1)) with self.assertRaises(ValidationError): -- GitLab