diff --git a/django/contrib/gis/gdal/libgdal.py b/django/contrib/gis/gdal/libgdal.py index f92a1cdea0ee..c68d175e094a 100644 --- a/django/contrib/gis/gdal/libgdal.py +++ b/django/contrib/gis/gdal/libgdal.py @@ -22,6 +22,7 @@ elif os.name == "nt": # Windows NT shared libraries lib_names = [ + "gdal312", "gdal311", "gdal310", "gdal309", @@ -39,6 +40,7 @@ lib_names = [ "gdal", "GDAL", + "gdal3.12.0", "gdal3.11.0", "gdal3.10.0", "gdal3.9.0", diff --git a/docs/ref/contrib/gis/install/geolibs.txt b/docs/ref/contrib/gis/install/geolibs.txt index 6619bdcc9772..630b60510340 100644 --- a/docs/ref/contrib/gis/install/geolibs.txt +++ b/docs/ref/contrib/gis/install/geolibs.txt @@ -10,16 +10,16 @@ Geospatial libraries GeoDjango uses and/or provides interfaces for the following open source geospatial libraries: -============================== ==================================== ================================ ======================================================= +============================== ==================================== ================================ ============================================================= Program Description Required Supported Versions -============================== ==================================== ================================ ======================================================= +============================== ==================================== ================================ ============================================================= :ref:`GEOS ` Geometry Engine Open Source Yes 3.14, 3.13, 3.12, 3.11, 3.10, 3.9 `PROJ`_ Cartographic Projections library Yes (PostgreSQL and SQLite only) 9.x, 8.x, 7.x, 6.x -:ref:`GDAL ` Geospatial Data Abstraction Library Yes 3.11, 3.10, 3.9, 3.8, 3.7, 3.6, 3.5, 3.4, 3.3, 3.2, 3.1 +:ref:`GDAL ` Geospatial Data Abstraction Library Yes 3.12, 3.11, 3.10, 3.9, 3.8, 3.7, 3.6, 3.5, 3.4, 3.3, 3.2, 3.1 :ref:`GeoIP ` IP-based geolocation library No 2 `PostGIS`__ Spatial extensions for PostgreSQL Yes (PostgreSQL only) 3.6, 3.5, 3.4, 3.3, 3.2 `SpatiaLite`__ Spatial extensions for SQLite Yes (SQLite only) 5.1, 5.0, 4.3 -============================== ==================================== ================================ ======================================================= +============================== ==================================== ================================ ============================================================= Note that older or more recent versions of these libraries *may* also work totally fine with GeoDjango. Your mileage may vary. @@ -43,6 +43,7 @@ totally fine with GeoDjango. Your mileage may vary. GDAL 3.9.0 2024-05-10 GDAL 3.10.0 2024-11-06 GDAL 3.11.0 2025-05-09 + GDAL 3.12.0 2025-11-07 PostGIS 3.2.0 2021-12-18 PostGIS 3.3.0 2022-08-27 PostGIS 3.4.0 2023-08-15 @@ -263,7 +264,7 @@ Finally, configure, make and install GDAL: .. code-block:: shell - $ cmake .. + $ cmake -DCMAKE_BUILD_TYPE=Release .. $ cmake --build . $ sudo cmake --build . --target install diff --git a/tests/auth_tests/test_handlers.py b/tests/auth_tests/test_handlers.py index a6b53a9ef11d..77f37db00976 100644 --- a/tests/auth_tests/test_handlers.py +++ b/tests/auth_tests/test_handlers.py @@ -29,14 +29,14 @@ def test_check_password(self): self.assertIsNone(check_password({}, "unknown", "")) # Valid user with correct password - self.assertTrue(check_password({}, "test", "test")) + self.assertIs(check_password({}, "test", "test"), True) + + # Valid user with incorrect password + self.assertIs(check_password({}, "test", "incorrect"), False) # correct password, but user is inactive User.objects.filter(username="test").update(is_active=False) - self.assertFalse(check_password({}, "test", "test")) - - # Valid user with incorrect password - self.assertFalse(check_password({}, "test", "incorrect")) + self.assertIsNone(check_password({}, "test", "test")) @override_settings(AUTH_USER_MODEL="auth_tests.CustomUser") def test_check_password_custom_user(self): @@ -53,10 +53,10 @@ def test_check_password_custom_user(self): self.assertIsNone(check_password({}, "unknown", "")) # Valid user with correct password' - self.assertTrue(check_password({}, "test@example.com", "test")) + self.assertIs(check_password({}, "test@example.com", "test"), True) # Valid user with incorrect password - self.assertFalse(check_password({}, "test@example.com", "incorrect")) + self.assertIs(check_password({}, "test@example.com", "incorrect"), False) def test_groups_for_user(self): """