Allow to store strucutred SEPA bank transfer details

This commit is contained in:
Raphael Michel
2018-10-24 00:13:49 +02:00
parent 3a0ef3760c
commit e60ff6b777
12 changed files with 220 additions and 47 deletions

View File

@@ -489,6 +489,7 @@ class ProviderForm(SettingsForm):
def __init__(self, *args, **kwargs):
self.settingspref = kwargs.pop('settingspref')
self.provider = kwargs.pop('provider', None)
super().__init__(*args, **kwargs)
def prepare_fields(self):
@@ -515,6 +516,9 @@ class ProviderForm(SettingsForm):
val = cleaned_data.get(k)
if v._required and not val:
self.add_error(k, _('This field is required.'))
if self.provider:
cleaned_data = self.provider.settings_form_clean(cleaned_data)
return cleaned_data
class InvoiceSettingsForm(SettingsForm):
@@ -1189,7 +1193,13 @@ class QuickSetupForm(I18nForm):
"bank statements to process the payments within pretix, or mark them as paid manually."),
required=False
)
payment_banktransfer_bank_details = BankTransfer.form_field(required=False)
btf = BankTransfer.form_fields()
payment_banktransfer_bank_details_type = btf['bank_details_type']
payment_banktransfer_bank_details_sepa_name = btf['bank_details_sepa_name']
payment_banktransfer_bank_details_sepa_iban = btf['bank_details_sepa_iban']
payment_banktransfer_bank_details_sepa_bic = btf['bank_details_sepa_bic']
payment_banktransfer_bank_details_sepa_bank = btf['bank_details_sepa_bank']
payment_banktransfer_bank_details = btf['bank_details']
def __init__(self, *args, **kwargs):
self.obj = kwargs.pop('event', None)
@@ -1199,6 +1209,16 @@ class QuickSetupForm(I18nForm):
if not self.obj.settings.payment_stripe_connect_client_id:
del self.fields['payment_stripe__enabled']
self.fields['payment_banktransfer_bank_details'].required = False
for f in self.fields.values():
if 'data-required-if' in f.widget.attrs:
del f.widget.attrs['data-required-if']
def clean(self):
cleaned_data = super().clean()
if cleaned_data.get('payment_banktransfer__enabled'):
provider = BankTransfer(self.obj)
cleaned_data = provider.settings_form_clean(cleaned_data)
return cleaned_data
class QuickSetupProductForm(I18nForm):

View File

@@ -4,25 +4,27 @@
{% load formset_tags %}
{% block title %}{{ request.event.name }}{% endblock %}
{% block content %}
<div class="quick-setup-step">
<div class="quick-icon">
<span class="fa fa-fw fa-check-circle text-success"></span>
</div>
<div class="quick-content">
{% if request.method == "GET" %}
<div class="quick-setup-step">
<div class="quick-icon">
<span class="fa fa-fw fa-check-circle text-success"></span>
</div>
<div class="quick-content">
<h2>{% trans "Congratulations!" %}</h2>
<p>
<strong>{% trans "You just created an event!" %}</strong>
</p>
<p>
{% blocktrans trimmed %}
You can scroll down and create your first ticket products quickly, or you can use the navigation
on the left to modify the settings of your event in much more detail.
{% endblocktrans %}
</p>
<div class="clearfix"></div>
<h2>{% trans "Congratulations!" %}</h2>
<p>
<strong>{% trans "You just created an event!" %}</strong>
</p>
<p>
{% blocktrans trimmed %}
You can scroll down and create your first ticket products quickly, or you can use the navigation
on the left to modify the settings of your event in much more detail.
{% endblocktrans %}
</p>
<div class="clearfix"></div>
</div>
</div>
</div>
{% endif %}
<form action="" method="post" class="form-horizontal">
{% csrf_token %}
@@ -157,6 +159,11 @@
</p>
{% bootstrap_field form.payment_banktransfer__enabled layout="control" label_class="sr-only" field_class="col-md-12" %}
<div data-display-dependency="#id_payment_banktransfer__enabled">
{% bootstrap_field form.payment_banktransfer_bank_details_type layout="control" %}
{% bootstrap_field form.payment_banktransfer_bank_details_sepa_name layout="control" %}
{% bootstrap_field form.payment_banktransfer_bank_details_sepa_iban layout="control" %}
{% bootstrap_field form.payment_banktransfer_bank_details_sepa_bic layout="control" %}
{% bootstrap_field form.payment_banktransfer_bank_details_sepa_bank layout="control" %}
{% bootstrap_field form.payment_banktransfer_bank_details layout="control" %}
</div>
{% if form.payment_stripe__enabled %}

View File

@@ -270,7 +270,8 @@ class PaymentProviderSettings(EventSettingsViewMixin, EventPermissionRequiredMix
form = ProviderForm(
obj=self.request.event,
settingspref=self.provider.settings.get_prefix(),
data=(self.request.POST if self.request.method == 'POST' else None)
data=(self.request.POST if self.request.method == 'POST' else None),
provider=self.provider
)
form.fields = OrderedDict(
[
@@ -1193,6 +1194,7 @@ class QuickSetupView(FormView):
if form.is_valid() and self.formset.is_valid():
return self.form_valid(form)
else:
messages.error(self.request, _('We could not save your changes. See below for details.'))
return self.form_invalid(form)
@transaction.atomic
@@ -1224,8 +1226,12 @@ class QuickSetupView(FormView):
data={'plugin': 'pretix.plugins.banktransfer'})
plugins_active.append('pretix.plugins.banktransfer')
self.request.event.settings.payment_banktransfer__enabled = True
self.request.event.settings.payment_banktransfer_bank_details = form.cleaned_data[
'payment_banktransfer_bank_details']
for f in ('bank_details', 'bank_details_type', 'bank_details_sepa_name', 'bank_details_sepa_iban',
'bank_details_sepa_bic', 'bank_details_sepa_bank'):
self.request.event.settings.set(
'payment_banktransfer_%s' % f,
form.cleaned_data['payment_banktransfer_%s' % f]
)
if form.cleaned_data.get('payment_stripe__enabled', None):
if 'pretix.plugins.stripe' not in plugins_active: