summaryrefslogtreecommitdiff
path: root/django/forms
diff options
context:
space:
mode:
Diffstat (limited to 'django/forms')
-rw-r--r--django/forms/fields.py82
-rw-r--r--django/forms/formsets.py2
-rw-r--r--django/forms/models.py29
-rw-r--r--django/forms/utils.py2
-rw-r--r--django/forms/widgets.py48
5 files changed, 81 insertions, 82 deletions
diff --git a/django/forms/fields.py b/django/forms/fields.py
index a3bdcd1713..e0c4edad52 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -121,7 +121,7 @@ class Field:
self.validators = list(itertools.chain(self.default_validators, validators))
- super(Field, self).__init__()
+ super().__init__()
def prepare_value(self, value):
return value
@@ -222,7 +222,7 @@ class CharField(Field):
self.min_length = min_length
self.strip = strip
self.empty_value = empty_value
- super(CharField, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
if min_length is not None:
self.validators.append(validators.MinLengthValidator(int(min_length)))
if max_length is not None:
@@ -238,7 +238,7 @@ class CharField(Field):
return value
def widget_attrs(self, widget):
- attrs = super(CharField, self).widget_attrs(widget)
+ attrs = super().widget_attrs(widget)
if self.max_length is not None and not widget.is_hidden:
# The HTML attribute is maxlength, not max_length.
attrs['maxlength'] = str(self.max_length)
@@ -259,8 +259,8 @@ class IntegerField(Field):
self.max_value, self.min_value = max_value, min_value
if kwargs.get('localize') and self.widget == NumberInput:
# Localized number input is not well supported on most browsers
- kwargs.setdefault('widget', super(IntegerField, self).widget)
- super(IntegerField, self).__init__(*args, **kwargs)
+ kwargs.setdefault('widget', super().widget)
+ super().__init__(*args, **kwargs)
if max_value is not None:
self.validators.append(validators.MaxValueValidator(max_value))
@@ -272,7 +272,7 @@ class IntegerField(Field):
Validates that int() can be called on the input. Returns the result
of int(). Returns None for empty values.
"""
- value = super(IntegerField, self).to_python(value)
+ value = super().to_python(value)
if value in self.empty_values:
return None
if self.localize:
@@ -285,7 +285,7 @@ class IntegerField(Field):
return value
def widget_attrs(self, widget):
- attrs = super(IntegerField, self).widget_attrs(widget)
+ attrs = super().widget_attrs(widget)
if isinstance(widget, NumberInput):
if self.min_value is not None:
attrs['min'] = self.min_value
@@ -316,7 +316,7 @@ class FloatField(IntegerField):
return value
def validate(self, value):
- super(FloatField, self).validate(value)
+ super().validate(value)
# Check for NaN (which is the only thing not equal to itself) and +/- infinity
if value != value or value in (Decimal('Inf'), Decimal('-Inf')):
@@ -325,7 +325,7 @@ class FloatField(IntegerField):
return value
def widget_attrs(self, widget):
- attrs = super(FloatField, self).widget_attrs(widget)
+ attrs = super().widget_attrs(widget)
if isinstance(widget, NumberInput) and 'step' not in widget.attrs:
attrs.setdefault('step', 'any')
return attrs
@@ -338,7 +338,7 @@ class DecimalField(IntegerField):
def __init__(self, max_value=None, min_value=None, max_digits=None, decimal_places=None, *args, **kwargs):
self.max_digits, self.decimal_places = max_digits, decimal_places
- super(DecimalField, self).__init__(max_value, min_value, *args, **kwargs)
+ super().__init__(max_value, min_value, *args, **kwargs)
self.validators.append(validators.DecimalValidator(max_digits, decimal_places))
def to_python(self, value):
@@ -360,7 +360,7 @@ class DecimalField(IntegerField):
return value
def validate(self, value):
- super(DecimalField, self).validate(value)
+ super().validate(value)
if value in self.empty_values:
return
# Check for NaN, Inf and -Inf values. We can't compare directly for NaN,
@@ -370,7 +370,7 @@ class DecimalField(IntegerField):
raise ValidationError(self.error_messages['invalid'], code='invalid')
def widget_attrs(self, widget):
- attrs = super(DecimalField, self).widget_attrs(widget)
+ attrs = super().widget_attrs(widget)
if isinstance(widget, NumberInput) and 'step' not in widget.attrs:
if self.decimal_places is not None:
# Use exponential notation for small values since they might
@@ -385,7 +385,7 @@ class DecimalField(IntegerField):
class BaseTemporalField(Field):
def __init__(self, input_formats=None, *args, **kwargs):
- super(BaseTemporalField, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
if input_formats is not None:
self.input_formats = input_formats
@@ -425,7 +425,7 @@ class DateField(BaseTemporalField):
return value.date()
if isinstance(value, datetime.date):
return value
- return super(DateField, self).to_python(value)
+ return super().to_python(value)
def strptime(self, value, format):
return datetime.datetime.strptime(value, format).date()
@@ -447,7 +447,7 @@ class TimeField(BaseTemporalField):
return None
if isinstance(value, datetime.time):
return value
- return super(TimeField, self).to_python(value)
+ return super().to_python(value)
def strptime(self, value, format):
return datetime.datetime.strptime(value, format).time()
@@ -477,7 +477,7 @@ class DateTimeField(BaseTemporalField):
if isinstance(value, datetime.date):
result = datetime.datetime(value.year, value.month, value.day)
return from_current_timezone(result)
- result = super(DateTimeField, self).to_python(value)
+ result = super().to_python(value)
return from_current_timezone(result)
def strptime(self, value, format):
@@ -513,7 +513,7 @@ class RegexField(CharField):
'Enter a valid value' is too generic for you.
"""
kwargs.setdefault('strip', False)
- super(RegexField, self).__init__(max_length, min_length, *args, **kwargs)
+ super().__init__(max_length, min_length, *args, **kwargs)
self._set_regex(regex)
def _get_regex(self):
@@ -536,7 +536,7 @@ class EmailField(CharField):
default_validators = [validators.validate_email]
def __init__(self, *args, **kwargs):
- super(EmailField, self).__init__(*args, strip=True, **kwargs)
+ super().__init__(*args, strip=True, **kwargs)
class FileField(Field):
@@ -555,7 +555,7 @@ class FileField(Field):
def __init__(self, *args, **kwargs):
self.max_length = kwargs.pop('max_length', None)
self.allow_empty_file = kwargs.pop('allow_empty_file', False)
- super(FileField, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
def to_python(self, data):
if data in self.empty_values:
@@ -595,7 +595,7 @@ class FileField(Field):
data = None
if not data and initial:
return initial
- return super(FileField, self).clean(data)
+ return super().clean(data)
def bound_data(self, data, initial):
if data in (None, FILE_INPUT_CONTRADICTION):
@@ -621,7 +621,7 @@ class ImageField(FileField):
Checks that the file-upload field data contains a valid image (GIF, JPG,
PNG, possibly others -- whatever the Python Imaging Library supports).
"""
- f = super(ImageField, self).to_python(data)
+ f = super().to_python(data)
if f is None:
return None
@@ -668,7 +668,7 @@ class URLField(CharField):
default_validators = [validators.URLValidator()]
def __init__(self, *args, **kwargs):
- super(URLField, self).__init__(*args, strip=True, **kwargs)
+ super().__init__(*args, strip=True, **kwargs)
def to_python(self, value):
@@ -684,7 +684,7 @@ class URLField(CharField):
# misformatted URLs.
raise ValidationError(self.error_messages['invalid'], code='invalid')
- value = super(URLField, self).to_python(value)
+ value = super().to_python(value)
if value:
url_fields = split_url(value)
if not url_fields[0]:
@@ -715,7 +715,7 @@ class BooleanField(Field):
value = False
else:
value = bool(value)
- return super(BooleanField, self).to_python(value)
+ return super().to_python(value)
def validate(self, value):
if not value and self.required:
@@ -771,14 +771,14 @@ class ChoiceField(Field):
def __init__(self, choices=(), required=True, widget=None, label=None,
initial=None, help_text='', *args, **kwargs):
- super(ChoiceField, self).__init__(
+ super().__init__(
required=required, widget=widget, label=label, initial=initial,
help_text=help_text, *args, **kwargs
)
self.choices = choices
def __deepcopy__(self, memo):
- result = super(ChoiceField, self).__deepcopy__(memo)
+ result = super().__deepcopy__(memo)
result._choices = copy.deepcopy(self._choices, memo)
return result
@@ -808,7 +808,7 @@ class ChoiceField(Field):
"""
Validates that the input is in self.choices.
"""
- super(ChoiceField, self).validate(value)
+ super().validate(value)
if value and not self.valid_value(value):
raise ValidationError(
self.error_messages['invalid_choice'],
@@ -835,7 +835,7 @@ class TypedChoiceField(ChoiceField):
def __init__(self, *args, **kwargs):
self.coerce = kwargs.pop('coerce', lambda val: val)
self.empty_value = kwargs.pop('empty_value', '')
- super(TypedChoiceField, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
def _coerce(self, value):
"""
@@ -854,7 +854,7 @@ class TypedChoiceField(ChoiceField):
return value
def clean(self, value):
- value = super(TypedChoiceField, self).clean(value)
+ value = super().clean(value)
return self._coerce(value)
@@ -904,7 +904,7 @@ class TypedMultipleChoiceField(MultipleChoiceField):
def __init__(self, *args, **kwargs):
self.coerce = kwargs.pop('coerce', lambda val: val)
self.empty_value = kwargs.pop('empty_value', [])
- super(TypedMultipleChoiceField, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
def _coerce(self, value):
"""
@@ -926,12 +926,12 @@ class TypedMultipleChoiceField(MultipleChoiceField):
return new_value
def clean(self, value):
- value = super(TypedMultipleChoiceField, self).clean(value)
+ value = super().clean(value)
return self._coerce(value)
def validate(self, value):
if value != self.empty_value:
- super(TypedMultipleChoiceField, self).validate(value)
+ super().validate(value)
elif self.required:
raise ValidationError(self.error_messages['required'], code='required')
@@ -941,7 +941,7 @@ class ComboField(Field):
A Field whose clean() method calls multiple Field clean() methods.
"""
def __init__(self, fields=(), *args, **kwargs):
- super(ComboField, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
# Set 'required' to False on the individual fields, because the
# required validation will be handled by ComboField, not by those
# individual fields.
@@ -954,7 +954,7 @@ class ComboField(Field):
Validates the given value against all of self.fields, which is a
list of Field instances.
"""
- super(ComboField, self).clean(value)
+ super().clean(value)
for field in self.fields:
value = field.clean(value)
return value
@@ -984,7 +984,7 @@ class MultiValueField(Field):
def __init__(self, fields=(), *args, **kwargs):
self.require_all_fields = kwargs.pop('require_all_fields', True)
- super(MultiValueField, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
for f in fields:
f.error_messages.setdefault('incomplete',
self.error_messages['incomplete'])
@@ -996,7 +996,7 @@ class MultiValueField(Field):
self.fields = fields
def __deepcopy__(self, memo):
- result = super(MultiValueField, self).__deepcopy__(memo)
+ result = super().__deepcopy__(memo)
result.fields = tuple(x.__deepcopy__(memo) for x in self.fields)
return result
@@ -1088,7 +1088,7 @@ class FilePathField(ChoiceField):
initial=None, help_text='', *args, **kwargs):
self.path, self.match, self.recursive = path, match, recursive
self.allow_files, self.allow_folders = allow_files, allow_folders
- super(FilePathField, self).__init__(
+ super().__init__(
choices=(), required=required, widget=widget, label=label,
initial=initial, help_text=help_text, *args, **kwargs
)
@@ -1152,7 +1152,7 @@ class SplitDateTimeField(MultiValueField):
error_messages={'invalid': errors['invalid_time']},
localize=localize),
)
- super(SplitDateTimeField, self).__init__(fields, *args, **kwargs)
+ super().__init__(fields, *args, **kwargs)
def compress(self, data_list):
if data_list:
@@ -1171,7 +1171,7 @@ class GenericIPAddressField(CharField):
def __init__(self, protocol='both', unpack_ipv4=False, *args, **kwargs):
self.unpack_ipv4 = unpack_ipv4
self.default_validators = validators.ip_address_validators(protocol, unpack_ipv4)[0]
- super(GenericIPAddressField, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
def to_python(self, value):
if value in self.empty_values:
@@ -1189,7 +1189,7 @@ class SlugField(CharField):
self.allow_unicode = kwargs.pop('allow_unicode', False)
if self.allow_unicode:
self.default_validators = [validators.validate_unicode_slug]
- super(SlugField, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
class UUIDField(CharField):
@@ -1203,7 +1203,7 @@ class UUIDField(CharField):
return value
def to_python(self, value):
- value = super(UUIDField, self).to_python(value)
+ value = super().to_python(value)
if value in self.empty_values:
return None
if not isinstance(value, uuid.UUID):
diff --git a/django/forms/formsets.py b/django/forms/formsets.py
index 8a830916f9..4d8259c2c5 100644
--- a/django/forms/formsets.py
+++ b/django/forms/formsets.py
@@ -39,7 +39,7 @@ class ManagementForm(Form):
# code. The POST value of them returned from the client is not checked.
self.base_fields[MIN_NUM_FORM_COUNT] = IntegerField(required=False, widget=HiddenInput)
self.base_fields[MAX_NUM_FORM_COUNT] = IntegerField(required=False, widget=HiddenInput)
- super(ManagementForm, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
@html_safe
diff --git a/django/forms/models.py b/django/forms/models.py
index de1fb1e2bd..a95f281b45 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -289,7 +289,7 @@ class BaseModelForm(BaseForm):
# It is False by default so overriding self.clean() and failing to call
# super will stop validate_unique from being called.
self._validate_unique = False
- super(BaseModelForm, self).__init__(
+ super().__init__(
data, files, auto_id, prefix, object_data, error_class,
label_suffix, empty_permitted, use_required_attribute=use_required_attribute,
)
@@ -558,13 +558,13 @@ class BaseModelFormSet(BaseFormSet):
self.initial_extra = kwargs.pop('initial', None)
defaults = {'data': data, 'files': files, 'auto_id': auto_id, 'prefix': prefix}
defaults.update(kwargs)
- super(BaseModelFormSet, self).__init__(**defaults)
+ super().__init__(**defaults)
def initial_form_count(self):
"""Returns the number of forms that are required in this FormSet."""
if not (self.data or self.files):
return len(self.get_queryset())
- return super(BaseModelFormSet, self).initial_form_count()
+ return super().initial_form_count()
def _existing_object(self, pk):
if not hasattr(self, '_object_dict'):
@@ -596,7 +596,7 @@ class BaseModelFormSet(BaseFormSet):
kwargs['initial'] = self.initial_extra[i - self.initial_form_count()]
except IndexError:
pass
- return super(BaseModelFormSet, self)._construct_form(i, **kwargs)
+ return super()._construct_form(i, **kwargs)
def get_queryset(self):
if not hasattr(self, '_queryset'):
@@ -821,7 +821,7 @@ class BaseModelFormSet(BaseFormSet):
else:
widget = HiddenInput
form.fields[self._pk_field.name] = ModelChoiceField(qs, initial=pk_value, required=False, widget=widget)
- super(BaseModelFormSet, self).add_fields(form, index)
+ super().add_fields(form, index)
def modelformset_factory(model, form=ModelForm, formfield_callback=None,
@@ -871,8 +871,7 @@ class BaseInlineFormSet(BaseModelFormSet):
else:
qs = queryset.none()
self.unique_fields = {self.fk.name}
- super(BaseInlineFormSet, self).__init__(data, files, prefix=prefix,
- queryset=qs, **kwargs)
+ super().__init__(data, files, prefix=prefix, queryset=qs, **kwargs)
# Add the generated field to form._meta.fields if it's defined to make
# sure validation isn't skipped on that field.
@@ -884,10 +883,10 @@ class BaseInlineFormSet(BaseModelFormSet):
def initial_form_count(self):
if self.save_as_new:
return 0
- return super(BaseInlineFormSet, self).initial_form_count()
+ return super().initial_form_count()
def _construct_form(self, i, **kwargs):
- form = super(BaseInlineFormSet, self)._construct_form(i, **kwargs)
+ form = super()._construct_form(i, **kwargs)
if self.save_as_new:
# Remove the primary key from the form's data, we are only
# creating new instances
@@ -926,7 +925,7 @@ class BaseInlineFormSet(BaseModelFormSet):
return obj
def add_fields(self, form, index):
- super(BaseInlineFormSet, self).add_fields(form, index)
+ super().add_fields(form, index)
if self._pk_field == self.fk:
name = self._pk_field.name
kwargs = {'pk_field': True}
@@ -954,7 +953,7 @@ class BaseInlineFormSet(BaseModelFormSet):
def get_unique_error_message(self, unique_check):
unique_check = [field for field in unique_check if field != self.fk.name]
- return super(BaseInlineFormSet, self).get_unique_error_message(unique_check)
+ return super().get_unique_error_message(unique_check)
def _get_foreign_key(parent_model, model, fk_name=None, can_fail=False):
@@ -1076,7 +1075,7 @@ class InlineForeignKeyField(Field):
else:
kwargs["initial"] = self.parent_instance.pk
kwargs["required"] = False
- super(InlineForeignKeyField, self).__init__(*args, **kwargs)
+ super().__init__(*args, **kwargs)
def clean(self, value):
if value in self.empty_values:
@@ -1205,7 +1204,7 @@ class ModelChoiceField(ChoiceField):
return value.serializable_value(self.to_field_name)
else:
return value.pk
- return super(ModelChoiceField, self).prepare_value(value)
+ return super().prepare_value(value)
def to_python(self, value):
if value in self.empty_values:
@@ -1239,7 +1238,7 @@ class ModelMultipleChoiceField(ModelChoiceField):
def __init__(self, queryset, required=True, widget=None, label=None,
initial=None, help_text='', *args, **kwargs):
- super(ModelMultipleChoiceField, self).__init__(
+ super().__init__(
queryset, None, required, widget, label, initial, help_text,
*args, **kwargs
)
@@ -1305,7 +1304,7 @@ class ModelMultipleChoiceField(ModelChoiceField):
not isinstance(value, str) and
not hasattr(value, '_meta')):
return [super(ModelMultipleChoiceField, self).prepare_value(v) for v in value]
- return super(ModelMultipleChoiceField, self).prepare_value(value)
+ return super().prepare_value(value)
def has_changed(self, initial, data):
if initial is None:
diff --git a/django/forms/utils.py b/django/forms/utils.py
index b199803ccc..bda4694e4f 100644
--- a/django/forms/utils.py
+++ b/django/forms/utils.py
@@ -80,7 +80,7 @@ class ErrorList(UserList, list):
A collection of errors that knows how to display itself in various formats.
"""
def __init__(self, initlist=None, error_class=None):
- super(ErrorList, self).__init__(initlist)
+ super().__init__(initlist)
if error_class is None:
self.error_class = 'errorlist'
diff --git a/django/forms/widgets.py b/django/forms/widgets.py
index 71169d9618..4317a0fc39 100644
--- a/django/forms/widgets.py
+++ b/django/forms/widgets.py
@@ -255,10 +255,10 @@ class Input(Widget):
if attrs is not None:
attrs = attrs.copy()
self.input_type = attrs.pop('type', self.input_type)
- super(Input, self).__init__(attrs)
+ super().__init__(attrs)
def get_context(self, name, value, attrs=None):
- context = super(Input, self).get_context(name, value, attrs)
+ context = super().get_context(name, value, attrs)
context['widget']['type'] = self.input_type
return context
@@ -288,13 +288,13 @@ class PasswordInput(Input):
template_name = 'django/forms/widgets/password.html'
def __init__(self, attrs=None, render_value=False):
- super(PasswordInput, self).__init__(attrs)
+ super().__init__(attrs)
self.render_value = render_value
def get_context(self, name, value, attrs):
if not self.render_value:
value = None
- return super(PasswordInput, self).get_context(name, value, attrs)
+ return super().get_context(name, value, attrs)
class HiddenInput(Input):
@@ -310,7 +310,7 @@ class MultipleHiddenInput(HiddenInput):
template_name = 'django/forms/widgets/multiple_hidden.html'
def get_context(self, name, value, attrs=None):
- context = super(MultipleHiddenInput, self).get_context(name, value, attrs)
+ context = super().get_context(name, value, attrs)
final_attrs = context['widget']['attrs']
id_ = context['widget']['attrs'].get('id')
@@ -392,7 +392,7 @@ class ClearableFileInput(FileInput):
return value
def get_context(self, name, value, attrs=None):
- context = super(ClearableFileInput, self).get_context(name, value, attrs)
+ context = super().get_context(name, value, attrs)
checkbox_name = self.clear_checkbox_name(name)
checkbox_id = self.clear_checkbox_id(checkbox_name)
context.update({
@@ -406,7 +406,7 @@ class ClearableFileInput(FileInput):
return context
def value_from_datadict(self, data, files, name):
- upload = super(ClearableFileInput, self).value_from_datadict(data, files, name)
+ upload = super().value_from_datadict(data, files, name)
if not self.is_required and CheckboxInput().value_from_datadict(
data, files, self.clear_checkbox_name(name)):
@@ -420,7 +420,7 @@ class ClearableFileInput(FileInput):
return upload
def use_required_attribute(self, initial):
- return super(ClearableFileInput, self).use_required_attribute(initial) and not initial
+ return super().use_required_attribute(initial) and not initial
class Textarea(Widget):
@@ -431,7 +431,7 @@ class Textarea(Widget):
default_attrs = {'cols': '40', 'rows': '10'}
if attrs:
default_attrs.update(attrs)
- super(Textarea, self).__init__(default_attrs)
+ super().__init__(default_attrs)
class DateTimeBaseInput(TextInput):
@@ -439,7 +439,7 @@ class DateTimeBaseInput(TextInput):
supports_microseconds = False
def __init__(self, attrs=None, format=None):
- super(DateTimeBaseInput, self).__init__(attrs)
+ super().__init__(attrs)
self.format = format if format else None
def format_value(self, value):
@@ -471,7 +471,7 @@ class CheckboxInput(Input):
template_name = 'django/forms/widgets/checkbox.html'
def __init__(self, attrs=None, check_test=None):
- super(CheckboxInput, self).__init__(attrs)
+ super().__init__(attrs)
# check_test is a callable that takes a value and returns True
# if the checkbox should be checked for that value.
self.check_test = boolean_check if check_test is None else check_test
@@ -487,7 +487,7 @@ class CheckboxInput(Input):
if attrs is None:
attrs = {}
attrs['checked'] = True
- return super(CheckboxInput, self).get_context(name, value, attrs)
+ return super().get_context(name, value, attrs)
def value_from_datadict(self, data, files, name):
if name not in data:
@@ -517,7 +517,7 @@ class ChoiceWidget(Widget):
option_inherits_attrs = True
def __init__(self, attrs=None, choices=()):
- super(ChoiceWidget, self).__init__(attrs)
+ super().__init__(attrs)
# choices can be any iterable, but we may need to render this widget
# multiple times. Thus, collapse it into a list so it can be consumed
# more than once.
@@ -605,7 +605,7 @@ class ChoiceWidget(Widget):
}
def get_context(self, name, value, attrs=None):
- context = super(ChoiceWidget, self).get_context(name, value, attrs)
+ context = super().get_context(name, value, attrs)
context['widget']['optgroups'] = self.optgroups(name, context['widget']['value'], attrs)
context['wrap_label'] = True
return context
@@ -657,7 +657,7 @@ class Select(ChoiceWidget):
option_inherits_attrs = False
def get_context(self, name, value, attrs=None):
- context = super(Select, self).get_context(name, value, attrs)
+ context = super().get_context(name, value, attrs)
if self.allow_multiple_selected:
context['widget']['attrs']['multiple'] = 'multiple'
return context
@@ -673,7 +673,7 @@ class Select(ChoiceWidget):
Don't render 'required' if the first <option> has a value, as that's
invalid HTML.
"""
- use_required_attribute = super(Select, self).use_required_attribute(initial)
+ use_required_attribute = super().use_required_attribute(initial)
# 'required' is always okay for <select multiple>.
if self.allow_multiple_selected:
return use_required_attribute
@@ -692,7 +692,7 @@ class NullBooleanSelect(Select):
('2', ugettext_lazy('Yes')),
('3', ugettext_lazy('No')),
)
- super(NullBooleanSelect, self).__init__(attrs, choices)
+ super().__init__(attrs, choices)
def format_value(self, value):
try:
@@ -752,7 +752,7 @@ class CheckboxSelectMultiple(ChoiceWidget):
"""
if index is None:
return ''
- return super(CheckboxSelectMultiple, self).id_for_label(id_, index)
+ return super().id_for_label(id_, index)
class MultiWidget(Widget):
@@ -769,14 +769,14 @@ class MultiWidget(Widget):
def __init__(self, widgets, attrs=None):
self.widgets = [w() if isinstance(w, type) else w for w in widgets]
- super(MultiWidget, self).__init__(attrs)
+ super().__init__(attrs)
@property
def is_hidden(self):
return all(w.is_hidden for w in self.widgets)
def get_context(self, name, value, attrs=None):
- context = super(MultiWidget, self).get_context(name, value, attrs)
+ context = super().get_context(name, value, attrs)
if self.is_localized:
for widget in self.widgets:
widget.is_localized = self.is_localized
@@ -837,7 +837,7 @@ class MultiWidget(Widget):
media = property(_get_media)
def __deepcopy__(self, memo):
- obj = super(MultiWidget, self).__deepcopy__(memo)
+ obj = super().__deepcopy__(memo)
obj.widgets = copy.deepcopy(self.widgets)
return obj
@@ -858,7 +858,7 @@ class SplitDateTimeWidget(MultiWidget):
DateInput(attrs=attrs, format=date_format),
TimeInput(attrs=attrs, format=time_format),
)
- super(SplitDateTimeWidget, self).__init__(widgets, attrs)
+ super().__init__(widgets, attrs)
def decompress(self, value):
if value:
@@ -874,7 +874,7 @@ class SplitHiddenDateTimeWidget(SplitDateTimeWidget):
template_name = 'django/forms/widgets/splithiddendatetime.html'
def __init__(self, attrs=None, date_format=None, time_format=None):
- super(SplitHiddenDateTimeWidget, self).__init__(attrs, date_format, time_format)
+ super().__init__(attrs, date_format, time_format)
for widget in self.widgets:
widget.input_type = 'hidden'
@@ -928,7 +928,7 @@ class SelectDateWidget(Widget):
self.day_none_value = self.none_value
def get_context(self, name, value, attrs=None):
- context = super(SelectDateWidget, self).get_context(name, value, attrs)
+ context = super().get_context(name, value, attrs)
date_context = {}
year_choices = [(i, i) for i in self.years]
if self.is_required is False: