-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathmiddleware.py
37 lines (34 loc) · 1.05 KB
/
middleware.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from django.conf import settings
from geo import get_geo_info
from geo import get_ip_address
import defaults
class GeoAwareSessionMiddleware(object):
""" Saves geo info in session if GeoIP is configured for city or country.
geo_info = {
'fqdn_or_ip': '',
'city': '',
'continent_code': '',
'region': '',
'charset': 0,
'area_code': 0,
'longitude': 0.0,
'country_code3': '',
'latitude': 0.0,
'postal_code': None,
'dma_code': 0,
'country_code': '',
'country_name': '',
}
"""
def process_request(self, request):
""" Save or update geo info in session """
fqdn_or_ip = getattr(defaults, 'GEOIP_DEBUG_DOMAIN_OR_IP', get_ip_address(request))
try:
if request.session['geo_info']['fqdn_or_ip'] == fqdn_or_ip:
return None
except:
pass
geo_info = get_geo_info(request)
request.session['geo_info'] = geo_info
request.session.modified = True
return None