mirror of
https://github.com/encode/django-rest-framework.git
synced 2024-11-22 01:26:53 +03:00
Fix use of ip_address_validators for Django 5.1+ (#9180)
* Fix use of ip_address_validators for Django 5.0+ * Change affected django version to 5.1
This commit is contained in:
parent
047bec1288
commit
21bb21b65b
|
@ -169,6 +169,21 @@ else:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if django.VERSION >= (5, 1):
|
||||||
|
# Django 5.1+: use the stock ip_address_validators function
|
||||||
|
# Note: Before Django 5.1, ip_address_validators returns a tuple containing
|
||||||
|
# 1) the list of validators and 2) the error message. Starting from
|
||||||
|
# Django 5.1 ip_address_validators only returns the list of validators
|
||||||
|
from django.core.validators import ip_address_validators
|
||||||
|
else:
|
||||||
|
# Django <= 5.1: create a compatibility shim for ip_address_validators
|
||||||
|
from django.core.validators import \
|
||||||
|
ip_address_validators as _ip_address_validators
|
||||||
|
|
||||||
|
def ip_address_validators(protocol, unpack_ipv4):
|
||||||
|
return _ip_address_validators(protocol, unpack_ipv4)[0]
|
||||||
|
|
||||||
|
|
||||||
# `separators` argument to `json.dumps()` differs between 2.x and 3.x
|
# `separators` argument to `json.dumps()` differs between 2.x and 3.x
|
||||||
# See: https://bugs.python.org/issue22767
|
# See: https://bugs.python.org/issue22767
|
||||||
SHORT_SEPARATORS = (',', ':')
|
SHORT_SEPARATORS = (',', ':')
|
||||||
|
|
|
@ -16,7 +16,7 @@ from django.core.exceptions import ValidationError as DjangoValidationError
|
||||||
from django.core.validators import (
|
from django.core.validators import (
|
||||||
EmailValidator, MaxLengthValidator, MaxValueValidator, MinLengthValidator,
|
EmailValidator, MaxLengthValidator, MaxValueValidator, MinLengthValidator,
|
||||||
MinValueValidator, ProhibitNullCharactersValidator, RegexValidator,
|
MinValueValidator, ProhibitNullCharactersValidator, RegexValidator,
|
||||||
URLValidator, ip_address_validators
|
URLValidator
|
||||||
)
|
)
|
||||||
from django.forms import FilePathField as DjangoFilePathField
|
from django.forms import FilePathField as DjangoFilePathField
|
||||||
from django.forms import ImageField as DjangoImageField
|
from django.forms import ImageField as DjangoImageField
|
||||||
|
@ -36,6 +36,7 @@ except ImportError:
|
||||||
pytz = None
|
pytz = None
|
||||||
|
|
||||||
from rest_framework import ISO_8601
|
from rest_framework import ISO_8601
|
||||||
|
from rest_framework.compat import ip_address_validators
|
||||||
from rest_framework.exceptions import ErrorDetail, ValidationError
|
from rest_framework.exceptions import ErrorDetail, ValidationError
|
||||||
from rest_framework.settings import api_settings
|
from rest_framework.settings import api_settings
|
||||||
from rest_framework.utils import html, humanize_datetime, json, representation
|
from rest_framework.utils import html, humanize_datetime, json, representation
|
||||||
|
@ -866,7 +867,7 @@ class IPAddressField(CharField):
|
||||||
self.protocol = protocol.lower()
|
self.protocol = protocol.lower()
|
||||||
self.unpack_ipv4 = (self.protocol == 'both')
|
self.unpack_ipv4 = (self.protocol == 'both')
|
||||||
super().__init__(**kwargs)
|
super().__init__(**kwargs)
|
||||||
validators, error_message = ip_address_validators(protocol, self.unpack_ipv4)
|
validators = ip_address_validators(protocol, self.unpack_ipv4)
|
||||||
self.validators.extend(validators)
|
self.validators.extend(validators)
|
||||||
|
|
||||||
def to_internal_value(self, data):
|
def to_internal_value(self, data):
|
||||||
|
|
Loading…
Reference in New Issue
Block a user