[FIX] website: ir.http geoip default file

- set the default value to be the debian bundled geoip database.
- split into 2 methods to avoir bloating dispatch
This commit is contained in:
Antony Lesuisse
2015-05-17 16:45:22 +02:00
parent b220f68b4f
commit 714aaca03e
2 changed files with 26 additions and 20 deletions
+25 -19
View File
@@ -26,7 +26,7 @@ class ir_http(orm.AbstractModel):
_inherit = 'ir.http'
rerouting_limit = 10
geo_ip_resolver = None
_geoip_resolver = None
def _get_converters(self):
return dict(
@@ -66,6 +66,28 @@ class ir_http(orm.AbstractModel):
return code
return False
def _geoip_setup_resolver(self):
if self._geoip_resolver is None:
try:
import GeoIP
# updated database can be downloaded on MaxMind website
# http://dev.maxmind.com/geoip/legacy/install/city/
geofile = config.get('geoip_database')
if os.path.exists(geofile):
self._geoip_resolver = GeoIP.open(geofile, GeoIP.GEOIP_STANDARD)
else:
self._geoip_resolver = False
logger.warning('GeoIP database file %r does not exists', geofile)
except ImportError:
self._geoip_resolver = False
def _geoip_resolve(self):
if 'geoip' not in request.session:
record = {}
if self._geoip_resolver and request.httprequest.remote_addr:
record = self._geoip_resolver.record_by_addr(request.httprequest.remote_addr) or {}
request.session['geoip'] = record
def _dispatch(self):
first_pass = not hasattr(request, 'website')
request.website = None
@@ -86,24 +108,8 @@ class ir_http(orm.AbstractModel):
func and func.routing.get('multilang', func.routing['type'] == 'http')
)
if 'geoip' not in request.session:
record = {}
if self.geo_ip_resolver is None:
try:
import GeoIP
# updated database can be downloaded on MaxMind website
# http://dev.maxmind.com/geoip/legacy/install/city/
geofile = config.get('geoip_database')
if os.path.exists(geofile):
self.geo_ip_resolver = GeoIP.open(geofile, GeoIP.GEOIP_STANDARD)
else:
self.geo_ip_resolver = False
logger.warning('GeoIP database file %r does not exists', geofile)
except ImportError:
self.geo_ip_resolver = False
if self.geo_ip_resolver and request.httprequest.remote_addr:
record = self.geo_ip_resolver.record_by_addr(request.httprequest.remote_addr) or {}
request.session['geoip'] = record
self._geoip_setup_resolver()
self._geoip_resolve()
cook_lang = request.httprequest.cookies.get('website_lang')
if request.website_enabled:
+1 -1
View File
@@ -270,7 +270,7 @@ class configmanager(object):
type="int")
group.add_option("--unaccent", dest="unaccent", my_default=False, action="store_true",
help="Use the unaccent function provided by the database when available.")
group.add_option("--geoip-db", dest="geoip_database", my_default='/usr/share/GeoIP/GeoLiteCity.dat',
group.add_option("--geoip-db", dest="geoip_database", my_default='/usr/share/GeoIP/GeoIP.dat',
help="Absolute path to the GeoIP database file.")
parser.add_option_group(group)