mirror of
https://github.com/django/django.git
synced 2025-03-14 03:10:45 +00:00
[5.1.x] Simplified GeoIP2._query() when passing IPv4Address()/IPv6Address() instances.
There is no need to call validate_ipv46_address() for ipaddress.IPv4Address()/ipaddress.IPv6Address() instances since this relies on trying to create these kind objects from strings, so they will always be valid. Backport of 0cabed9efa2c7abd1693860069f20ec5db41fcd8 from main.
This commit is contained in:
parent
c81669cb54
commit
1c29ab24df
@ -153,11 +153,12 @@ class GeoIP2:
|
||||
if require_city and not self.is_city:
|
||||
raise GeoIP2Exception(f"Invalid GeoIP city data file: {self._path}")
|
||||
|
||||
try:
|
||||
validate_ipv46_address(query)
|
||||
except ValidationError:
|
||||
# GeoIP2 only takes IP addresses, so try to resolve a hostname.
|
||||
query = socket.gethostbyname(query)
|
||||
if isinstance(query, str):
|
||||
try:
|
||||
validate_ipv46_address(query)
|
||||
except ValidationError:
|
||||
# GeoIP2 only takes IP addresses, so try to resolve a hostname.
|
||||
query = socket.gethostbyname(query)
|
||||
|
||||
function = self._reader.city if self.is_city else self._reader.country
|
||||
return function(query)
|
||||
|
Loading…
x
Reference in New Issue
Block a user