diff options
Diffstat (limited to 'django/forms')
| -rw-r--r-- | django/forms/fields.py | 82 | ||||
| -rw-r--r-- | django/forms/formsets.py | 2 | ||||
| -rw-r--r-- | django/forms/models.py | 29 | ||||
| -rw-r--r-- | django/forms/utils.py | 2 | ||||
| -rw-r--r-- | django/forms/widgets.py | 48 |
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: |
