diff --git a/src/pretix/base/forms/questions.py b/src/pretix/base/forms/questions.py index 057ec1af6b..6af7b1279b 100644 --- a/src/pretix/base/forms/questions.py +++ b/src/pretix/base/forms/questions.py @@ -61,6 +61,7 @@ from django.utils.timezone import get_current_timezone, now from django.utils.translation import gettext_lazy as _, pgettext_lazy from django_countries import countries from django_countries.fields import Country, CountryField +from geoip2.errors import AddressNotFoundError from phonenumber_field.formfields import PhoneNumberField from phonenumber_field.phonenumber import PhoneNumber from phonenumber_field.widgets import PhoneNumberPrefixWidget @@ -356,9 +357,12 @@ class WrappedPhoneNumberPrefixWidget(PhoneNumberPrefixWidget): def guess_country_from_request(request, event): if settings.HAS_GEOIP: g = GeoIP2() - res = g.country(get_client_ip(request)) - if res['country_code'] and len(res['country_code']) == 2: - return Country(res['country_code']) + try: + res = g.country(get_client_ip(request)) + if res['country_code'] and len(res['country_code']) == 2: + return Country(res['country_code']) + except AddressNotFoundError: + pass return guess_country(event) diff --git a/src/pretix/helpers/security.py b/src/pretix/helpers/security.py index de605fbaa3..0bcf54ecd8 100644 --- a/src/pretix/helpers/security.py +++ b/src/pretix/helpers/security.py @@ -25,6 +25,7 @@ import time from django.conf import settings from django.contrib.gis.geoip2 import GeoIP2 from django.core.cache import cache +from geoip2.errors import AddressNotFoundError from pretix.helpers.http import get_client_ip @@ -50,7 +51,10 @@ def _get_country(request): if not _geoip: _geoip = GeoIP2() - res = _geoip.country(get_client_ip(request)) + try: + res = _geoip.country(get_client_ip(request)) + except AddressNotFoundError: + return None return res['country_code']