From 5896ca0197efbdd5421fce0a5d8f0d5fab3b83b5 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Tue, 19 Nov 2024 16:14:56 +0100 Subject: [PATCH] Event creation: Prevent accidentally creating events without tax rate (#4623) * Event creation: Prevent accidentally creating events without tax rate * Update src/pretix/control/forms/event.py Co-authored-by: Richard Schreiber * Fix tests --------- Co-authored-by: Richard Schreiber --- src/pretix/control/forms/event.py | 10 ++++++++++ .../templates/pretixcontrol/events/create_basics.html | 5 ++++- src/tests/control/test_events.py | 8 ++++++++ 3 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index 7a63c7bc09..bc46448426 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -136,6 +136,11 @@ class EventWizardBasicsForm(I18nModelForm): choices=settings.LANGUAGES, label=_("Default language"), ) + no_taxes = forms.BooleanField( + label=_("I don't want to specify taxes now"), + help_text=_("You can always configure tax rates later."), + required=False, + ) tax_rate = forms.DecimalField( label=_("Sales tax rate"), help_text=_("Do you need to pay sales tax on your tickets? In this case, please enter the applicable tax rate " @@ -223,6 +228,11 @@ class EventWizardBasicsForm(I18nModelForm): raise ValidationError({ 'timezone': _('Your default locale must be specified.') }) + if not data.get("no_taxes") and not data.get("tax_rate"): + raise ValidationError({ + 'tax_rate': _('You have not specified a tax rate. If you do not want us to compute sales taxes, please ' + 'check "Do not use taxes" above.') + }) # change timezone zone = ZoneInfo(data.get('timezone')) diff --git a/src/pretix/control/templates/pretixcontrol/events/create_basics.html b/src/pretix/control/templates/pretixcontrol/events/create_basics.html index efbeabf76d..faa8c00996 100644 --- a/src/pretix/control/templates/pretixcontrol/events/create_basics.html +++ b/src/pretix/control/templates/pretixcontrol/events/create_basics.html @@ -41,7 +41,10 @@ {% endif %} {% include "pretixcontrol/event/fragment_geodata.html" %} {% bootstrap_field form.currency layout="control" %} - {% bootstrap_field form.tax_rate addon_after="%" layout="control" %} + {% bootstrap_field form.no_taxes layout="control" %} +
+ {% bootstrap_field form.tax_rate addon_after="%" layout="control" %} +
{% trans "Display settings" %} diff --git a/src/tests/control/test_events.py b/src/tests/control/test_events.py index ada6a90d0f..93bc872720 100644 --- a/src/tests/control/test_events.py +++ b/src/tests/control/test_events.py @@ -763,6 +763,7 @@ class EventsTest(SoupTest): 'basics-location_1': 'Hamburg', 'basics-currency': 'EUR', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'Europe/Berlin', 'basics-presale_start': '2016-11-01 10:00:00', @@ -792,6 +793,7 @@ class EventsTest(SoupTest): 'basics-location_1': 'Hamburg', 'basics-currency': 'EUR', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'Europe/Berlin', 'basics-presale_start_0': '2016-11-01', @@ -888,6 +890,7 @@ class EventsTest(SoupTest): 'basics-location_1': 'Hamburg', 'basics-currency': 'EUR', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'Europe/Berlin', 'basics-presale_start_0': '2016-11-01', @@ -1073,6 +1076,7 @@ class EventsTest(SoupTest): 'basics-location_0': 'Hamburg', 'basics-currency': 'EUR', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'UTC', 'basics-presale_start_0': '', @@ -1121,6 +1125,7 @@ class EventsTest(SoupTest): 'basics-location_0': 'Hamburg', 'basics-currency': 'EUR', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'UTC', 'basics-presale_start_0': '', @@ -1171,6 +1176,7 @@ class EventsTest(SoupTest): 'basics-location_0': 'Hamburg', 'basics-currency': 'EUR', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'Europe/Berlin', 'basics-presale_start_0': '2016-11-01', @@ -1200,6 +1206,7 @@ class EventsTest(SoupTest): 'basics-location_0': 'Hamburg', 'basics-currency': '$', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'Europe/Berlin', 'basics-presale_start_0': '2016-11-01', @@ -1229,6 +1236,7 @@ class EventsTest(SoupTest): 'basics-location_0': 'Hamburg', 'basics-currency': 'ASD', 'basics-tax_rate': '', + 'basics-no_taxes': 'on', 'basics-locale': 'en', 'basics-timezone': 'Europe/Berlin', 'basics-presale_start_0': '2016-11-01',