From 1e5bbbb2a866faf56e00eb744ab940e40e87d497 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Fri, 29 Jul 2022 18:34:18 +0200 Subject: [PATCH] Fixed #33442 -- Allowed GeoIP2 to use DB-IP Lite datasets. --- django/contrib/gis/geoip2/base.py | 4 ++-- docs/ref/contrib/gis/geoip2.txt | 12 +++++++++--- docs/releases/4.2.txt | 3 +++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/django/contrib/gis/geoip2/base.py b/django/contrib/gis/geoip2/base.py index e74984fe45..88b81bfdd2 100644 --- a/django/contrib/gis/geoip2/base.py +++ b/django/contrib/gis/geoip2/base.py @@ -103,11 +103,11 @@ class GeoIP2: reader = geoip2.database.Reader(str(path), mode=cache) db_type = reader.metadata().database_type - if db_type.endswith("City"): + if "City" in db_type: # GeoLite City database detected. self._city = reader self._city_file = path - elif db_type.endswith("Country"): + elif "Country" in db_type: # GeoIP Country database detected. self._country = reader self._country_file = path diff --git a/docs/ref/contrib/gis/geoip2.txt b/docs/ref/contrib/gis/geoip2.txt index 6312c5d874..c106acdf0f 100644 --- a/docs/ref/contrib/gis/geoip2.txt +++ b/docs/ref/contrib/gis/geoip2.txt @@ -10,9 +10,10 @@ library`__. [#]_ In order to perform IP-based geolocation, the :class:`GeoIP2` object requires the `geoip2 Python library`__ and the GeoIP ``Country`` and/or ``City`` -`datasets in binary format`__ (the CSV files will not work!). Grab the -``GeoLite2-Country.mmdb.gz`` and ``GeoLite2-City.mmdb.gz`` files and unzip them -in a directory corresponding to the :setting:`GEOIP_PATH` setting. +datasets in binary format (the CSV files will not work!), downloaded from e.g. +`MaxMind`__ or `DB-IP`__ websites. Grab the ``GeoLite2-Country.mmdb.gz`` and +``GeoLite2-City.mmdb.gz`` files and unzip them in a directory corresponding to +the :setting:`GEOIP_PATH` setting. Additionally, it is recommended to install the `libmaxminddb C library`__, so that ``geoip2`` can leverage the C library's faster speed. @@ -20,8 +21,13 @@ that ``geoip2`` can leverage the C library's faster speed. __ https://geoip2.readthedocs.io/ __ https://pypi.org/project/geoip2/ __ https://dev.maxmind.com/geoip/geolite2-free-geolocation-data +__ https://db-ip.com/db/lite.php __ https://github.com/maxmind/libmaxminddb/ +.. versionchanged:: 4.2 + + Support for ``.mmdb`` files downloaded from DB-IP was added. + Example ======= diff --git a/docs/releases/4.2.txt b/docs/releases/4.2.txt index 078fc88193..3a9a99a3c2 100644 --- a/docs/releases/4.2.txt +++ b/docs/releases/4.2.txt @@ -60,6 +60,9 @@ Minor features * The :class:`~django.contrib.gis.gdal.GDALRaster` class now supports :class:`pathlib.Path`. +* The :class:`~django.contrib.gis.geoip2.GeoIP2` class now supports ``.mmdb`` + files downloaded from DB-IP. + :mod:`django.contrib.messages` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~