mirror of
https://github.com/pretix/pretix.git
synced 2026-05-09 15:54:03 +00:00
Refs #1432 -- Proper grouping of autocomplete properties
This commit is contained in:
@@ -96,8 +96,8 @@ class NamePartsWidget(forms.MultiWidget):
|
|||||||
id='%s_%s' % (id_, i),
|
id='%s_%s' % (id_, i),
|
||||||
title=self.scheme['fields'][i][1],
|
title=self.scheme['fields'][i][1],
|
||||||
placeholder=self.scheme['fields'][i][1],
|
placeholder=self.scheme['fields'][i][1],
|
||||||
autocomplete=self.autofill_map.get(self.scheme['fields'][i][0], 'off'),
|
|
||||||
)
|
)
|
||||||
|
final_attrs['autocomplete'] = (self.attrs.get('autocomplete', '') + ' ' + self.autofill_map.get(self.scheme['fields'][i][0], 'off')).strip()
|
||||||
final_attrs['data-size'] = self.scheme['fields'][i][2]
|
final_attrs['data-size'] = self.scheme['fields'][i][2]
|
||||||
output.append(widget.render(name + '_%s' % i, widget_value, final_attrs, renderer=renderer))
|
output.append(widget.render(name + '_%s' % i, widget_value, final_attrs, renderer=renderer))
|
||||||
return mark_safe(self.format_output(output))
|
return mark_safe(self.format_output(output))
|
||||||
@@ -203,7 +203,12 @@ class BaseQuestionsForm(forms.Form):
|
|||||||
self.fields['attendee_email'] = forms.EmailField(
|
self.fields['attendee_email'] = forms.EmailField(
|
||||||
required=event.settings.attendee_emails_required,
|
required=event.settings.attendee_emails_required,
|
||||||
label=_('Attendee email'),
|
label=_('Attendee email'),
|
||||||
initial=(cartpos.attendee_email if cartpos else orderpos.attendee_email)
|
initial=(cartpos.attendee_email if cartpos else orderpos.attendee_email),
|
||||||
|
widget=forms.EmailInput(
|
||||||
|
attrs={
|
||||||
|
'autocomplete': 'email'
|
||||||
|
}
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
for q in questions:
|
for q in questions:
|
||||||
@@ -333,6 +338,10 @@ class BaseQuestionsForm(forms.Form):
|
|||||||
self.fields[key] = value
|
self.fields[key] = value
|
||||||
value.initial = data.get('question_form_data', {}).get(key)
|
value.initial = data.get('question_form_data', {}).get(key)
|
||||||
|
|
||||||
|
for k, v in self.fields.items():
|
||||||
|
if v.widget.attrs.get('autocomplete') or k == 'attendee_name_parts':
|
||||||
|
v.widget.attrs['autocomplete'] = 'section-{} '.format(self.prefix) + v.widget.attrs.get('autocomplete', '')
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
d = super().clean()
|
d = super().clean()
|
||||||
|
|
||||||
@@ -375,9 +384,25 @@ class BaseInvoiceAddressForm(forms.ModelForm):
|
|||||||
'vat_id', 'internal_reference', 'beneficiary')
|
'vat_id', 'internal_reference', 'beneficiary')
|
||||||
widgets = {
|
widgets = {
|
||||||
'is_business': BusinessBooleanRadio,
|
'is_business': BusinessBooleanRadio,
|
||||||
'street': forms.Textarea(attrs={'rows': 2, 'placeholder': _('Street and Number')}),
|
'street': forms.Textarea(attrs={
|
||||||
|
'rows': 2,
|
||||||
|
'placeholder': _('Street and Number'),
|
||||||
|
'autocomplete': 'street-address'
|
||||||
|
}),
|
||||||
'beneficiary': forms.Textarea(attrs={'rows': 3}),
|
'beneficiary': forms.Textarea(attrs={'rows': 3}),
|
||||||
'company': forms.TextInput(attrs={'data-display-dependency': '#id_is_business_1'}),
|
'country': forms.Select(attrs={
|
||||||
|
'autocomplete': 'country',
|
||||||
|
}),
|
||||||
|
'zipcode': forms.TextInput(attrs={
|
||||||
|
'autocomplete': 'postal-code',
|
||||||
|
}),
|
||||||
|
'city': forms.TextInput(attrs={
|
||||||
|
'autocomplete': 'address-level2',
|
||||||
|
}),
|
||||||
|
'company': forms.TextInput(attrs={
|
||||||
|
'data-display-dependency': '#id_is_business_1',
|
||||||
|
'autocomplete': 'organization',
|
||||||
|
}),
|
||||||
'vat_id': forms.TextInput(attrs={'data-display-dependency': '#id_is_business_1'}),
|
'vat_id': forms.TextInput(attrs={'data-display-dependency': '#id_is_business_1'}),
|
||||||
'internal_reference': forms.TextInput,
|
'internal_reference': forms.TextInput,
|
||||||
}
|
}
|
||||||
@@ -435,7 +460,10 @@ class BaseInvoiceAddressForm(forms.ModelForm):
|
|||||||
self.fields['state'] = forms.ChoiceField(
|
self.fields['state'] = forms.ChoiceField(
|
||||||
label=pgettext_lazy('address', 'State'),
|
label=pgettext_lazy('address', 'State'),
|
||||||
required=False,
|
required=False,
|
||||||
choices=c
|
choices=c,
|
||||||
|
widget=forms.Select(attrs={
|
||||||
|
'autocomplete': 'address-level1',
|
||||||
|
}),
|
||||||
)
|
)
|
||||||
self.fields['state'].widget.is_required = True
|
self.fields['state'].widget.is_required = True
|
||||||
|
|
||||||
@@ -472,6 +500,10 @@ class BaseInvoiceAddressForm(forms.ModelForm):
|
|||||||
if not event.settings.invoice_address_beneficiary:
|
if not event.settings.invoice_address_beneficiary:
|
||||||
del self.fields['beneficiary']
|
del self.fields['beneficiary']
|
||||||
|
|
||||||
|
for k, v in self.fields.items():
|
||||||
|
if v.widget.attrs.get('autocomplete') or k == 'name_parts':
|
||||||
|
v.widget.attrs['autocomplete'] = 'section-invoice billing ' + v.widget.attrs.get('autocomplete', '')
|
||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
data = self.cleaned_data
|
data = self.cleaned_data
|
||||||
if not data.get('is_business'):
|
if not data.get('is_business'):
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ class ContactForm(forms.Form):
|
|||||||
help_text=_('Make sure to enter a valid email address. We will send you an order '
|
help_text=_('Make sure to enter a valid email address. We will send you an order '
|
||||||
'confirmation including a link that you need to access your order later.'),
|
'confirmation including a link that you need to access your order later.'),
|
||||||
validators=[EmailBlacklistValidator()],
|
validators=[EmailBlacklistValidator()],
|
||||||
|
widget=forms.EmailInput(attrs={'autocomplete': 'section-contact email'})
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, *args, **kwargs):
|
def __init__(self, *args, **kwargs):
|
||||||
|
|||||||
Reference in New Issue
Block a user