Commit 7b4e806e by Adam

Merge pull request #4233 from edx/alex/geoip-none-ip-fix

Do not look for country if no new ip.
parents 0c202cb1 39f2aabd
......@@ -32,7 +32,10 @@ class CountryMiddleware(object):
new_ip_address = get_real_ip(request)
old_ip_address = request.session.get('ip_address', None)
if new_ip_address != old_ip_address:
if not new_ip_address and old_ip_address:
del request.session['ip_address']
del request.session['country_code']
elif new_ip_address != old_ip_address:
country_code = pygeoip.GeoIP(settings.GEOIP_PATH).country_code_by_addr(new_ip_address)
request.session['country_code'] = country_code
request.session['ip_address'] = new_ip_address
......
......@@ -92,3 +92,17 @@ class CountryMiddlewareTests(TestCase):
# Country code is not changed.
self.assertEqual('CN', request.session.get('country_code'))
self.assertEqual('117.79.83.100', request.session.get('ip_address'))
def test_ip_address_is_none(self):
# IP address is not defined in request.
request = self.request_factory.get('/somewhere')
request.user = self.anonymous_user
# Run process_request to set up the session in the request
# to be able to override it.
self.session_middleware.process_request(request)
request.session['country_code'] = 'CN'
request.session['ip_address'] = '117.79.83.1'
self.country_middleware.process_request(request)
# No country code exists after request processing.
self.assertNotIn('country_code', request.session)
self.assertNotIn('ip_address', request.session)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment