Refs #1432 -- Proper grouping of autocomplete properties

This commit is contained in:
Raphael Michel
2019-10-09 12:39:44 +02:00
parent 3b4d39ec27
commit 92754136a6
2 changed files with 38 additions and 5 deletions

View File

@@ -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'):

View File

@@ -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):