summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Pope <nick@nickpope.me.uk>2023-12-01 12:55:45 +0000
committerGitHub <noreply@github.com>2023-12-01 13:55:45 +0100
commit0f83133a35088f6bbbce11ea8256168782860932 (patch)
tree9b45170474b878a6e19aaf54af1d2db2cc45f4ae
parent79099a7ba454581ab521fcb4ea61fc6ed3dccf26 (diff)
Made GeoIP2.__del__() close all databases.
-rw-r--r--django/contrib/gis/geoip2/base.py6
-rw-r--r--tests/gis_tests/test_geoip2.py10
2 files changed, 14 insertions, 2 deletions
diff --git a/django/contrib/gis/geoip2/base.py b/django/contrib/gis/geoip2/base.py
index b9c3027668..d07f79dd25 100644
--- a/django/contrib/gis/geoip2/base.py
+++ b/django/contrib/gis/geoip2/base.py
@@ -132,8 +132,10 @@ class GeoIP2:
def __del__(self):
# Cleanup any GeoIP file handles lying around.
- if self._reader:
- self._reader.close()
+ if self._city:
+ self._city.close()
+ if self._country:
+ self._country.close()
def __repr__(self):
meta = self._reader.metadata()
diff --git a/tests/gis_tests/test_geoip2.py b/tests/gis_tests/test_geoip2.py
index 1a8773a6d7..53f2b20bbc 100644
--- a/tests/gis_tests/test_geoip2.py
+++ b/tests/gis_tests/test_geoip2.py
@@ -152,6 +152,16 @@ class GeoIPTest(SimpleTestCase):
self.assertEqual("Lawrence", d["city"])
self.assertEqual("KS", d["region"])
+ def test_del(self):
+ g = GeoIP2()
+ city = g._city
+ country = g._country
+ self.assertIs(city._db_reader.closed, False)
+ self.assertIs(country._db_reader.closed, False)
+ del g
+ self.assertIs(city._db_reader.closed, True)
+ self.assertIs(country._db_reader.closed, True)
+
def test_repr(self):
path = settings.GEOIP_PATH
g = GeoIP2(path=path)