Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 3db4472

Browse files
committed
[FIX] website: correct geoip resolver
- "`record_by_addr()` method require the city database. - The loaded geoip database can be specified via config file
1 parent 6db8bf3 commit 3db4472

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

addons/website/models/ir_http.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
import datetime
33
import hashlib
44
import logging
5+
import os
56
import re
67
import traceback
8+
79
import werkzeug
810
import werkzeug.routing
911

@@ -12,6 +14,7 @@
1214
from openerp.addons.base.ir import ir_qweb
1315
from openerp.addons.website.models.website import slug, url_for, _UNSLUG_RE
1416
from openerp.http import request
17+
from openerp.tools import config
1518
from openerp.osv import orm
1619

1720
logger = logging.getLogger(__name__)
@@ -54,12 +57,19 @@ def _dispatch(self):
5457

5558
request.website_multilang = request.website_enabled and func and func.routing.get('multilang', True)
5659

57-
if not request.session.has_key('geoip'):
60+
if 'geoip' not in request.session:
5861
record = {}
5962
if self.geo_ip_resolver is None:
6063
try:
6164
import GeoIP
62-
self.geo_ip_resolver = GeoIP.open('/usr/share/GeoIP/GeoIP.dat', GeoIP.GEOIP_STANDARD)
65+
# updated database can be downloaded on MaxMind website
66+
# http://dev.maxmind.com/geoip/legacy/install/city/
67+
geofile = config.get('geoip_database', '/usr/share/GeoIP/GeoLiteCity.dat')
68+
if os.path.exists(geofile):
69+
self.geo_ip_resolver = GeoIP.open(geofile, GeoIP.GEOIP_STANDARD)
70+
else:
71+
self.geo_ip_resolver = False
72+
logger.warning('GeoIP database file %r does not exists', geofile)
6373
except ImportError:
6474
self.geo_ip_resolver = False
6575
if self.geo_ip_resolver and request.httprequest.remote_addr:

0 commit comments

Comments
 (0)