summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2022-07-29 18:34:18 +0200
committerMariusz Felisiak <felisiak.mariusz@gmail.com>2022-07-30 19:29:45 +0200
commit1e5bbbb2a866faf56e00eb744ab940e40e87d497 (patch)
tree1e781619b8456ac6e74b1d2b3fb405dd7800db73
parent6654289f5b350dfca3dc4f6abab777459b906756 (diff)
Fixed #33442 -- Allowed GeoIP2 to use DB-IP Lite datasets.
-rw-r--r--django/contrib/gis/geoip2/base.py4
-rw-r--r--docs/ref/contrib/gis/geoip2.txt12
-rw-r--r--docs/releases/4.2.txt3
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`
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~