summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
3 daysamend! Refs #37159 -- Documented building release wheel reproducibly.refs-37159Charles Roelli
Refs #37159 -- Documented building release wheel reproducibly.
3 daysamend! Refs #37159 -- Documented building release wheel reproducibly.Charles Roelli
Refs #37159 -- Documented building release wheel reproducibly.
3 daysRefs #37159 -- Documented building release wheel reproducibly.Charles Roelli
4 daysFixed #37317 -- Deprecated passing table names to createcachetable.Dmitri Leiko
Thank you to Mike Edmunds for the review.
4 daysFixed #33752 -- Added support for exception groups to technical 500 debug pages.krystof
Thank you to James Bligh and Tim Schilling for the reviews.
4 daysFixed #37471 -- Made models.E050 detect generic relations with ↵Akshat
database-level on_delete.
4 daysBumped minimum Playwright version to 1.65.0.Varun Kasyap
5 daysClarified AUTHORS guidance for trivial contributions.Sarah Boyce
5 daysFixed #37489 -- Added comment documenting Field.template_name.Zishan Kadri
6 daysFixed #36998 -- Rejected firstof tags without arguments before "as".Awath Javar Abdat
Co-authored-by: David Smith <39445562+smithdc1@users.noreply.github.com>
6 daysFixed #37081 -- Allowed dots in fixture directory paths in loaddata.Alisson Silveira
7 daysFixed #18543 -- Corrected ImageField validation documentation.igbokwegoodluck8@gmail.com
9 daysFixed #30306 -- Added input_type to Textarea widget.Hossein
Updated widget templates to render the `hidden` attribute if the input_type is set to "hidden".
9 daysFixed #36642 -- Fixed capitalization of locale suggestions in makemessages.kihuni
9 daysRefs #36642 -- Added makemessages test for en_001 locale.kihuni
9 daysFixed #37482 -- Corrected parse_time() docs about UTC offsets.Ines Besrour
10 daysFixed #37330 -- Fixed QuerySet.values() crash with an annotation transform.Kunal Kumar
Applying a transform to an annotation alias in values() crashed with AttributeError when the annotation's output_field was not attached to a model: Book.objects.annotate(published=TruncMonth("pubdate")).values("published__year") AttributeError: 'DateField' object has no attribute 'model' Thanks David Smith for offering a useful test case during triage. Co-authored-by: ontowhee <82607723+ontowhee@users.noreply.github.com> Co-authored-by: Jacob Walls <jacobtylerwalls@gmail.com>
10 daysRefs #37330 -- Added further annotations tests for QuerySet.values().Kunal Kumar
10 daysFixed #36022 -- Renamed django-admin to django.Ryan Hiebert
This change implements DEP 16: to rename the django-admin command to django. django-admin is kept as an alias. Docs references to the "django-admin" command are updated to "django" or “The django command”. Renamed the `django-admin` Sphinx directive to `cmd`, and the `django-admin-option` directive to `cli-option`. Thanks Johannes Maron, Mike Edmunds, and Jacob Walls for reviews.
10 daysFixed #20551 -- Renamed duplicate "initial" fixtures in gis_tests.Dmitri Leiko
The distapp, geoapp, geogapp, and relatedapp test apps each shipped a fixture named "initial". Since loaddata loads every match found in different fixture directories, each test case using fixtures=["initial"] loaded all four fixtures when the full gis_tests suite ran.
10 daysRefs CVE-2026-15307 -- Optimized lookup preparation of GeoJSON geometries.Jacob Walls
Avoided preprocessing of raster lookup values, as regardless of the preprocessing outcome, the result is disallowed. Larger JSON strings should not incur the extra cost of json.loads(). Thanks David Smith for reviews.
11 daysFixed #37388 -- Improved unsafe user input examples in security reporting docs.Sahil Advani
Thank you Mike Edmunds for the review.
11 daysRefs #37132 -- Fixed outdated change note reference.Mike Edmunds
Since 9158562, Django docs have replaced "new in Django development version" with Sphinx's standard "added in version ___" change note. Corrected advice to keep an eye out for the old phrase, and generalized it to cover any version mismatches.
11 daysFixed #37452 -- Made virtual environment activation cross-shell compatible ↵ShabirAhmadLinux
for Windows users in docs. Co-authored-by: Shabir Ahmad Shaik <shabirahmadshaik@gmail.com>
11 daysAdded reporter's right of first refusal to contributing docs.Jacob Walls
11 daysRefs #37371 -- Added test databases to .gitignore.Mike Edmunds
12 daysFixed #37469 -- Made psycopg adapter UTF8Dumper handle None.François Freitag
The adapter for psycopg2 serialized None to SQL NULL [1]. This behavior should be maintained for psycopg3, as psql_escape returns None when no value remain after escaping and stripping. Thanks to Camille Daniel for the initial bug report. [1] https://github.com/psycopg/psycopg2/blob/7d0375492ec3707b82b89f632c9654b400466d86/psycopg/adapter_asis.c#L42-L45
12 daysAdded requirement for a single vulnerability per email.Jake Howard
12 daysAdded CVE-2026-108147, CVE-2026-111211, CVE-2026-111362, CVE-2026-113593, ↵Jacob Walls
CVE-2026-113733, and CVE-2026-114582 to security archive.
12 daysAdded stub release notes for 6.1.4.Jacob Walls
12 daysFixed CVE-2026-114582 -- Blocked file and network access when setting SRS on ↵Jacob Walls
GDAL 3.9+. Anything instantating `SpatialReference`, including vector and raster `transform()` methods and `srs`/`srid` setters, was subject to request forgery from untrusted strings, since GDAL resolves file and network references by default. On GDAL 3.9+, Django now uses `OSRSetFromUserInputEx()` to block file and network access in this path. On lower GDAL versions, users should compare inputs to an allow list or use integers when setting or transforming a spatial reference system (SRS). A new `gis.W001` check warns if a lower GDAL version is installed. Thanks Adraca for the report and Sarah Boyce and David Smith for reviews.
12 daysFixed CVE-2026-113733 -- Fixed password hash disclosure to "view only" admin ↵Natalia
users with custom user models. Since Django 6.0, the admin obfuscated the password hash only when the field's model was exactly AUTH_USER_MODEL. Other user models, and user models inheriting the password field from a concrete parent model, failed that check, so the full hash was displayed to users with only the view permission. Thanks to Aaron chen for the report, and Jake Howard for the review.
12 daysFixed CVE-2026-113593 -- Differentiated empty and missing headers in ↵Andrew James Gonzalez
response cache. When learning the cache key for a response, a missing header must be cached differently to an empty one, as per RFC 9111. Thanks to Andrew Gonzalez for the report. Co-authored-by: Jake Howard <git@theorangeone.net>
12 daysFixed CVE-2026-111362 -- Blocked external CRS values in GeoJSON geometries.Jacob Walls
Even though the "crs" member was removed from the GeoJSON spec in 2016, GDAL's GeoJSON parser still supports this value and can resolve file and network locations. An attacker could submit a malicious CRS that would make a network request as the Django process user, or read a file, or both. Django now rejects these values when constructing geometries and in forms and lookups. (Utilities for processing trusted data such as `DataSource` and `LayerMapping` continue to forward these values to GDAL without validation.) Any `crs` definition with `"type": "link"` or `"type": "url"` is now rejected outright. Any definition with `"type": "name"` has its `properties.name` compared to an allow list of known authorities, or a regex for an OGC CRS URN, or well-known shorthands, e.g. "CRS84". Thanks to Submersion Security Research Team for the report, and David Smith and Sarah Boyce for the reviews.
12 daysFixed CVE-2026-111211 -- Escaped log messages in ↵David Smith
BaseGeometryWidget.deserialize(). Suitably crafted values submitted to a GeometryField may have allowed log injection, potentially corrupting log files, obscuring other attacks, misleading log post-processing tools, or forging log entries. To mitigate this, invalid values logged on deserialization errors are now escaped using "unicode_escape" encoding, and trimmed to 4096 characters to avoid flooding logs with large inputs. Thanks to Aaron chen for the report, and to Jacob Walls, Jake Howard, and Shai Berger for the reviews. Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>
12 daysFixed CVE-2026-108147 -- Bounded memory use of base64 file uploads in ↵Natalia
MultiPartParser. The mitigation for CVE-2026-33033 aligned base64 data to a multiple of 4 by reading whole chunks. As the chunk size is itself a multiple of 4, those reads never restored the alignment, so a misaligned upload was read and decoded in full before reaching upload handlers. Trailing undecoded bytes are now carried over to the next chunk, so no extra reads are needed and memory use stays bounded by the chunk size. Thanks to Ignacy Kujawa for the report, and Jake Howard for the review.
13 daysFixed #37468 -- Clarified the effects of changing primary keys to existing ↵Sarah Boyce
values.
13 daysFixed #37436 -- Avoided overwriting when FETCH_PEERS fetches deferred fields.Namraa Patel
If a deferred field has been plucked via `refresh_from_db(fields=...)` or modified by assigning an attribute, it shouldn't be overwritten when attribute access on a peer triggers a `fetch_many()`. The peer fetching should also tolerate deleted instances. Co-authored-by: Vishy <vishyzero@gmail.com>
14 daysFixed #37467 -- Fixed deletion of cookies with __Http- and __Host-Http- ↵himanshu
prefixes.
2026-10-30Refs #35514, #37293 -- Corrected removal version for EMAIL_* settings in 6.1 ↵Natalia
release notes.
2026-10-30Fixed #37138 -- Changed docs to use customized pydata-sphinx-theme.Mike Edmunds
Updated custom djangodocs Sphinx theme to switch to pydata-sphinx-theme (PST) with minimal customizations: * Replaced PST's split top/left main nav with single left sidebar main nav. (Borrowed approach from sphinx-book-theme.) * Moved `docstitle` from navbar_start (in "logo") to navbar_center, to avoid wrapping in the header with long development version numbers. Thanks to Natalia Bidart for review and improvements.
2026-10-30Refs #37271, #37272 -- Doc'd remaining DEP 20 changes for users and releasers.Natalia
Starting with Django 2028, DEP 20 changes the Python version support policy, gives every feature release three years of support, and moves to calendar versions. Documented these in the Python version FAQ, the upgrade guide, and the release how-to.
2026-10-29Fixed `make.bat check` to exit non-zero when a check fails.Natalia
The target called the lint, black, and spelling subroutines in sequence and then exited with the status of the last one, so a failure in an earlier check was printed to the screen but still reported overall success. It now records each failure and exits non-zero if any check failed, matching the equivalent `Makefile` target. Spelling is also run with `-q -W` under `check`, as the `Makefile` does.
2026-10-29Ran docs checks and sphinx_tests on Windows via GitHub Actions.Mike Edmunds
Created a docs_win.yml workflow paralleling docs.yml but on Windows, to verify the make.bat checks work like their Makefile counterparts. Used a separate workflow to limit runs to changes that might affect docs tooling on Windows. Spelling is not checked on Windows. PyEnchant resolves en_US from the hunspell dictionary bundled in its own wheel rather than from a system dictionary, so a Windows run would enforce a different word list than the one used on Ubuntu. Thanks to Natalia Bidart for review and improvements.
2026-10-29Refs #35874 -- Excluded console-tabs.css from epub building on Windows.Mike Edmunds
Updated fix from commit 8274ae1 to build the path with `os.path.join()`. Sphinx matches `epub_exclude_files` against OS native paths, so the hardcoded forward slash never matched on Windows.
2026-10-29Ensured docs checks cover same files as docs builds.Mike Edmunds
Updated docs `make black` and `make lint` checks to use Sphinx's own source file discovery to get the list of docs source files. This makes docs/conf.py the single source of truth for which files are/aren't docs sources. The exclusions were previously duplicated by hand in Makefile, make.bat, and lint.py, where they could drift from conf.py. Created a Python blacken-sources.py wrapper around blacken-docs, similar to the existing lint.py for sphinx-lint. This replaces shell and batch file commands that tried (only partially successfully) to replicate Sphinx's source discovery. Removed `--jobs 0` from the sphinx-lint arguments to allow parallel linting, since sphinx-lint treats `--jobs 0` as serial instead of defaulting to `auto`. Also added Sphinx to the tox environments running the docs checks, since neither `blacken-docs` nor `sphinx-lint` depends on Sphinx. Thanks to Natalia Bidart for review and improvements.
2026-10-29Fixed #37463 -- Fixed attrs mutation in legend_tag().Jacob Walls
Regression in 0eec2a163a4b2ea4e82c53ae1d7b71bf43ac911d.
2026-10-29Fixed #37349 -- Documented that JSONField doesn't guarantee preserving ↵unknown
object key order. Co-authored-by: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com>
2026-10-28Fixed #37089 -- Made ignore_warnings() match substrings by default.HelmiDev03
Thank you Mike Edmunds for the review.
2026-10-28Refs #37089 -- Added test coverage for ignore_warnings().HelmiDev03