1
0
mirror of https://github.com/django/django.git synced 2025-03-12 10:22:37 +00:00

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.
This commit is contained in:
Mariusz Felisiak 2025-01-14 22:48:58 +01:00 committed by nessita
parent b3c5830769
commit 0cabed9efa

View File

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