From 3d5cc98df5685fde30171553fd435bb82a1c7603 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Fri, 10 Aug 2018 16:05:20 +0200 Subject: [PATCH] Add option to require company name --- src/pretix/base/forms/questions.py | 10 ++++++++++ src/pretix/base/forms/widgets.py | 20 ++++++++++++++----- src/pretix/base/settings.py | 4 ++++ src/pretix/control/forms/event.py | 6 ++++++ .../pretixcontrol/event/invoicing.html | 1 + 5 files changed, 36 insertions(+), 5 deletions(-) diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index f2321ae01..c2da7cc60 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -199,6 +199,16 @@ class BaseInvoiceAddressForm(forms.ModelForm): if event.settings.invoice_name_required: self.fields['name'].required = True + elif event.settings.invoice_address_company_required: + self.initial['is_business'] = True + + self.fields['is_business'].widget = BusinessBooleanRadio(require_business=True) + self.fields['company'].required = True + self.fields['company'].widget.is_required = True + self.fields['company'].widget.attrs['required'] = 'required' + del self.fields['company'].widget.attrs['data-display-dependency'] + if 'vat_id' in self.fields: + del self.fields['vat_id'].widget.attrs['data-display-dependency'] else: self.fields['company'].widget.attrs['data-required-if'] = '#id_is_business_1' self.fields['name'].widget.attrs['data-required-if'] = '#id_is_business_0' diff --git a/src/pretix/base/forms/widgets.py b/src/pretix/base/forms/widgets.py index 003c2a5de..4d4a237bc 100644 --- a/src/pretix/base/forms/widgets.py +++ b/src/pretix/base/forms/widgets.py @@ -110,14 +110,22 @@ class SplitDateTimePickerWidget(forms.SplitDateTimeWidget): class BusinessBooleanRadio(forms.RadioSelect): - def __init__(self, attrs=None): - choices = ( - ('individual', _('Individual customer')), - ('business', _('Business customer')), - ) + def __init__(self, require_business=False, attrs=None): + self.require_business = require_business + if self.require_business: + choices = ( + ('business', _('Business customer')), + ) + else: + choices = ( + ('individual', _('Individual customer')), + ('business', _('Business customer')), + ) super().__init__(attrs, choices) def format_value(self, value): + if self.require_business: + return 'business' try: return {True: 'business', False: 'individual'}[value] except KeyError: @@ -125,6 +133,8 @@ class BusinessBooleanRadio(forms.RadioSelect): def value_from_datadict(self, data, files, name): value = data.get(name) + if self.require_business: + return True return { 'business': True, True: True, diff --git a/src/pretix/base/settings.py b/src/pretix/base/settings.py index 53c8a14db..c9ed4e67d 100644 --- a/src/pretix/base/settings.py +++ b/src/pretix/base/settings.py @@ -57,6 +57,10 @@ DEFAULTS = { 'default': 'False', 'type': bool, }, + 'invoice_address_company_required': { + 'default': 'False', + 'type': bool, + }, 'invoice_address_vatid': { 'default': 'False', 'type': bool, diff --git a/src/pretix/control/forms/event.py b/src/pretix/control/forms/event.py index a7555a379..1fe495176 100644 --- a/src/pretix/control/forms/event.py +++ b/src/pretix/control/forms/event.py @@ -518,6 +518,12 @@ class InvoiceSettingsForm(SettingsForm): required=False, widget=forms.CheckboxInput(attrs={'data-checkbox-dependency': '#id_invoice_address_asked'}), ) + invoice_address_company_required = forms.BooleanField( + label=_("Require a business addresses"), + help_text=_('This will require users to enter a company name.'), + required=False, + widget=forms.CheckboxInput(attrs={'data-checkbox-dependency': '#id_invoice_address_required'}), + ) invoice_name_required = forms.BooleanField( label=_("Require customer name"), required=False, diff --git a/src/pretix/control/templates/pretixcontrol/event/invoicing.html b/src/pretix/control/templates/pretixcontrol/event/invoicing.html index 709ffcdf9..a60008b47 100644 --- a/src/pretix/control/templates/pretixcontrol/event/invoicing.html +++ b/src/pretix/control/templates/pretixcontrol/event/invoicing.html @@ -12,6 +12,7 @@ {% bootstrap_field form.invoice_name_required layout="control" %} {% bootstrap_field form.invoice_generate layout="control" %} {% bootstrap_field form.invoice_email_attachment layout="control" %} + {% bootstrap_field form.invoice_address_company_required layout="control" %} {% bootstrap_field form.invoice_address_vatid layout="control" %} {% bootstrap_field form.invoice_numbers_consecutive layout="control" %} {% bootstrap_field form.invoice_numbers_prefix layout="control" %}