1
0
mirror of https://github.com/django/django.git synced 2025-10-31 09:41:08 +00:00
Commit Graph

13822 Commits

Author SHA1 Message Date
Simon Charette
3031c512f0 [5.2.x] Fixed #36522 -- Added support for filtering composite pks using a tuple of expressions.
Thanks Jacob Walls for the report, and Sarah Boyce and Mariusz Felisiak
for reviews.

Backport of 0a4999b422 from main.
2025-07-28 16:40:08 -03:00
Natalia
a76587531b [5.2.x] Added SimpleTestCase.enterContext() on Python < 3.11.
This reverts commit 47a618d45c and uses
a solution similar to ed4f83782d instead.
2025-07-16 18:11:53 -03:00
Simon Charette
3df1ad57bf [5.2.x] Fixed #36502 -- Restored UNNEST strategy for foreign key bulk inserts on PostgreSQL.
Regression in 764af7a3d6.

Backport of 0fe218842e from main.
2025-07-10 18:36:01 +02:00
Natalia
47a618d45c Fixed AttributeError for enterContext() on Python < 3.11.
On Jenkins with Python 3.10:

Traceback (most recent call last):
  File "[...]/python3.10/tests/composite_pk/test_filter.py", line 559, in setUp
    self.enterContext(feature_patch)
AttributeError: 'CompositePKFilterTupleLookupFallbackTests' object has no attribute 'enterContext'
2025-07-02 10:25:21 -03:00
Simon Charette
a150160c9f [5.2.x] Fixed #36464 -- Fixed "__in" tuple lookup on backends lacking native support.
When native support for tuple lookups is missing in a DB backend, it can
be emulated with an EXISTS clause. This is controlled by the backend
feature flag "supports_tuple_lookups".

The mishandling of subquery right-hand side in `TupleIn` (added to
support `CompositePrimaryKey` in Refs #373) was likely missed because
the only core backend we test with the feature flag disabled
(Oracle < 23.4) supports it natively.

Thanks to Nandana Raol for the report, and to Sarah Boyce, Jacob Walls,
and Natalia Bidart for reviews.

Backport of 192bc7a7be from main.
2025-06-30 20:16:08 -03:00
Clifford Gama
1d89691c74 [5.2.x] Fixed #36453 -- Made When.condition resolve with for_save=False.
Value(None, JSONField()) when used in When.condition incorrectly resolved with
for_save=True, resulting in the value being serialized as SQL NULL instead of
JSON null.

Regression in c1fa3fdd04.

Thanks to Thomas McKay for the report, and to David Sanders and Simon Charettes
for the review.

Co-authored-by: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com>

Backport of 104cbfd44b from main.
2025-06-16 10:41:24 +02:00
Jake Howard
4de4edf2c0 [5.2.x] Fixed #36447 -- Selected preferred media type based on quality.
When matching which entry in the `Accept` header should be used for
a given media type, the specificity matters. However once those are
resolved, only the quality matters when selecting preference.

Regression in c075508b4d.

Thank you to Anders Kaseorg for the report.

Backport of 12c1557060 from main.
2025-06-16 09:27:46 +02:00
Mariusz Felisiak
aec11dbb4c [5.2.x] Refs #36419 -- Fixed BulkUpdateTests.test_json_field_sql_null() crash on Oracle.
Follow up to c1fa3fdd04.

Backport of f5441e42da from main.
2025-06-10 08:42:37 +02:00
Natalia
cc5079730a [5.2.x] Fixed #36446 -- Restored "q" in internal MediaType.params property.
The "q" key was removed while addressing ticket #36411. Despite
`MediaType.params` is undocumented and considered internal, it was used
in third-party projects (Zulip reported breakage), so this work restored
the `q` key in `params`.

Thanks Anders Kaseorg for the report.

Regression in c075508b4d.

Backport of cf5f36bf90 from main.
2025-06-09 17:39:25 -03:00
Clifford Gama
6fc620b4a8 [5.2.x] Fixed #36419 -- Ensured for_save was propagated when resolving expressions.
The for_save flag wasn't properly propagated when resolving expressions, which
prevented get_db_prep_save() from being called in some cases. This affected
fields like JSONField where None would be saved as JSON null instead of SQL NULL.

Regression in 00c690efbc.

Thanks to David Sanders and Simon Charette for reviews.

Co-authored-by: Adam Johnson <me@adamj.eu>

Backport of c1fa3fdd04 from main.
2025-06-06 17:41:51 +02:00
Jake Howard
8fcc83953c [5.2.x] Refs CVE-2025-48432 -- Prevented log injection in remaining response logging.
Migrated remaining response-related logging to use the `log_response()`
helper to avoid potential log injection, to ensure untrusted values like
request paths are safely escaped.

Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>

Backport of 9579517552 from main.
2025-06-06 09:07:12 -03:00
Natalia
9d7fc9eb1c [5.2.x] Refs CVE-2025-48432 -- Made SuspiciousOperation logging use log_response() for consistency.
Backport of ff835f439c from main.
2025-06-06 09:07:06 -03:00
Natalia
c042af7147 [5.2.x] Refactored logging_tests to reuse assertions for log records.
Backport of 9d72e7daf7 from main.
2025-06-06 09:06:57 -03:00
Natalia
7456aa23da [5.2.x] Fixed CVE-2025-48432 -- Escaped formatting arguments in log_response().
Suitably crafted requests containing a CRLF sequence in the request
path may have allowed log injection, potentially corrupting log files,
obscuring other attacks, misleading log post-processing tools, or
forging log entries.

To mitigate this, all positional formatting arguments passed to the
logger are now escaped using "unicode_escape" encoding.

Thanks to Seokchan Yoon (https://ch4n3.kr/) for the report.

Co-authored-by: Carlton Gibson <carlton@noumenal.es>
Co-authored-by: Jake Howard <git@theorangeone.net>

Backport of a07ebec559 from main.
2025-06-04 08:34:51 -03:00
Simon Charette
3340d41446 [5.2.x] Fixed #36432 -- Fixed a prefetch_related crash on related target subclass queryset.
Regression in 626d77e52a.

Refs #36116.

Thanks Cornelis Poppema for the excellent report.

Backport of 08187c94ed from main.
2025-06-04 10:48:13 +02:00
Jake Howard
0c548e62d0 [5.2.x] Fixed #36411 -- Made HttpRequest.get_preferred_type() consider media type parameters.
HttpRequest.get_preferred_type() did not account for parameters in
Accept header media types (e.g., "text/vcard; version=3.0"). This caused
incorrect content negotiation when multiple types differed only by
parameters, reducing specificity as per RFC 7231 section 5.3.2
(https://datatracker.ietf.org/doc/html/rfc7231.html#section-5.3.2).

This fix updates get_preferred_type() to treat media types with
parameters as distinct, allowing more precise and standards-compliant
matching.

Thanks to magicfelix for the report, and to David Sanders and Sarah
Boyce for the reviews.

Backport of c075508b4d from main.
2025-06-03 16:11:38 -03:00
Jacob Walls
2bf4c5b9ea [5.2.x] Fixed #36416 -- Made QuerySet.in_bulk() account for composite pks in id_list.
Backport of 26313bc219 from main.
2025-06-03 17:46:59 +02:00
Blayze
37e5cc6d89 [5.2.x] Fixed #36423 -- Prevented filter_horizontal buttons from intercepting form submission.
In the admin's filter_horizontal widget, optional action buttons like
"Choose all", "Remove all", etc. were changed from `<a>` to `<button>`
elements in #34619, but without specifying `type="button"`. As a result,
when pressing Enter while focused on a form input, these buttons could
be triggered and intercept form submission.

Explicitly set `type="button"` on these control buttons to prevent them
from acting as submit buttons.

Thanks Antoliny Lee for the quick triage and review.

Regression in 857b1048d5.

Backport of 90429625a8 from main.
2025-06-02 22:26:36 -03:00
Adam Johnson
7e4b371eb0 [5.2.x] Fixed #36405 -- Fixed OrderableAggMixin.order_by using OuterRef.
co-authored-by: Simon Charette <charette.s@gmail.com>

Backport of c2615a0500 from main.
2025-05-23 16:23:34 +02:00
Adam Johnson
c29e3092fd [5.2.x] Fixed #36404 -- Fixed Aggregate.filter using OuterRef.
Regression in a76035e925.
Thank you to Simon Charette for the review.

co-authored-by: Simon Charette <charette.s@gmail.com>

Backport of b8e5a8a9a2 from main.
2025-05-23 15:19:50 +02:00
Sarah Boyce
9db932ab4c [5.2.x] Fixed #36390 -- Deprecated RemoteUserMiddleware subclasses missing aprocess_request().
Regression in 50f89ae850.
Thank you to shamoon for the report and Natalia Bidart for the review.

Backport of 1704c49a9b from main.
2025-05-23 10:24:09 +02:00
Natalia
cdd374939a [5.2.x] Added helpers in csrf_tests and logging_tests to assert logs from log_response().
Backport of ad6f998898 from main.
2025-05-22 15:41:13 -03:00
Natalia
2c8358343a [5.2.x] Refs #26688 -- Added tests for log_response() internal helper.
Backport of 8970468159 from main.
2025-05-22 15:40:42 -03:00
Colleen Dunlap
787f3130f7 [5.2.x] Fixed #36388 -- Made QuerySet.union() return self when called with no arguments.
Regression in 9cb8baa0c4.
Thank you to Antoine Humeau for the report and Simon Charette for the review.

Backport of 802baf5da5 from main.
2025-05-19 10:36:08 +02:00
Jacob Walls
6228a35095 [5.2.x] Fixed #36392 -- Raised ValueError when subquery referencing composite pk selects too many columns.
Backport of 994dc6d8a1 from main.
2025-05-16 08:21:18 +02:00
Simon Charette
e23dd72880 [5.2.x] Fixed #36373 -- Fixed select_related() crash on foreign object for a composite pk.
Thanks Jacob Walls for the report and Sarah for the in-depth review.

Backport of 8be0c0d690 from main.
2025-05-12 13:34:45 +02:00
Sarah Boyce
c9731dc656 [5.2.x] Fixed CVE-2025-32873 -- Mitigated potential DoS in strip_tags().
Thanks to Elias Myllymäki for the report, and Shai Berger and Jake
Howard for the reviews.

Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>

Backport of 9f3419b519 from main.
2025-05-06 22:24:24 -03:00
Mariusz Felisiak
44bda7a674 [5.2.x] Refs #36052, #32234 -- Fixed inspectdb tests for CompositePrimaryKey on Oracle.
Tests regression in 4c75858135.
Backport of dd133054cb from main
2025-05-06 08:21:32 +02:00
Baptiste Mispelon
1367a197dd [5.2.x] Fixed #36357 -- Skipped unique_together in inspectdb output for composite primary keys.
Thanks to Baptiste Mispelon for the report and quick fix, and to Simon
Charette and Jacob Walls for the reviews.

Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>

Backport of 66f9eb0ff1 from main.
2025-04-30 11:55:56 -03:00
Simon Charette
ec73fd6746 [5.2.x] Fixed #36358 -- Corrected introspection of composite primary keys on SQLite.
Previously, any first field of a composite primary key with type
`INTEGER` was incorrectly introspected as an `AutoField` due to SQLite
treating `INTEGER PRIMARY KEY` as an alias for the `ROWID`.

This change ensures that integer fields in composite PKs are not
mistaken for auto-incrementing fields.

Thanks Jacob Walls and Sarah Boyce for the reviews.

Backport of 07100db6f4 from main.
2025-04-30 10:54:17 -03:00
Simon Charette
5d03c71b7a [5.2.x] Refs #36052, #32234 -- Removed create_test_table_with_composite_primary_key flag in favor of using CompositePrimaryKey.
Now that Django properly supports creating models with composite primary
keys, the tests should use a `CompositePrimaryKey` field instead of a
feature flag to inline backend specific SQL for creating a composite PK.

Specifcially, the inspectdb's test_composite_primary_key was adjusted to
use schema editor instead of per-backend raw SQL.

Backport of 4c75858135 from main.
2025-04-30 10:53:39 -03:00
Simon Charette
7f6a5fbe2e [5.2.x] Fixed #36360 -- Fixed QuerySet.update() crash when referring annotations through values().
The issue was only manifesting itself when also filtering againt a related
model as that forces the usage of a subquery because SQLUpdateCompiler doesn't
support the UPDATE FROM syntax yet.

Regression in 65ad4ade74.

Refs #28900.

Thanks Gav O'Connor for the detailed report.

Backport of 8ef4e0bd42 from main.
2025-04-30 11:39:37 +02:00
Baptiste Mispelon
af241dfa7d [5.2.x] Used addCleanup() instead of try-finally blocks in inspectdb tests.
Backport of 2722cb61cc from main.
2025-04-29 13:46:06 -03:00
nessita
90fa9f4cc0 [5.2.x] Fixed #36309 -- Made email alternatives and attachments pickleable.
Regression in aba0e541ca and in
d5bebc1c26.

Thanks Florent Messa for the report, and Jake Howard and Claude
Paroz for the review.

Backport of 0596263c31 from main.
2025-04-24 10:12:32 -03:00
Matti Pohjanvirta
305aa4d0c5 [5.2.x] Fixed #36341 -- Preserved whitespaces in wordwrap template filter.
Regression in 55d89e25f4.

This work improves the django.utils.text.wrap() function to ensure that
empty lines and lines with whitespace only are kept instead of being
dropped.

Thanks Matti Pohjanvirta for the report and fix.

Co-authored-by: Natalia <124304+nessita@users.noreply.github.com>

Backport of 1e9db35836 from main.
2025-04-23 16:18:55 -03:00
antoliny0919
97c93549fc [5.2.x] Fixed #36331 -- Reverted "Fixed #36055 -- Prevented overlap of object-tools buttons and page header in the admin."
This reverts commits b1324a680a and
02a5cbfe76. The former caused a regression
in admin sites that relied on the `object-tools` block being inside the
`content` block.

Thank you to Fabian Braun for the report.

Backport of 1bc805e23b from main.
2025-04-22 22:14:54 -03:00
Ahmed Nassar
adf2991d32 [5.2.x] Fixed #36314 -- Fixed MinimumLengthValidator error message translation.
Regression in ec7d69035a.

Thank you Gabriel Trouvé for the report and Claude Paroz for the review.

Backport of d469db978e from main.
2025-04-17 12:32:24 +02:00
Simon Charette
b97af5e696 [5.2.x] Fixed #36288 -- Addressed improper handling of duplicates in values_list().
Now that selected aliases are stored in sql.Query.selected: dict[str, Any]
the values_list() method must ensures that duplicate field name references are
assigned unique aliases.

Refs #28900.

Regression in 65ad4ade74.

Thanks Claude for the report.

Backport of 21f8be76d4 from main.
2025-04-11 09:06:53 +02:00
Simon Charette
5d2a0c51d4 [5.2.x] Fixed #36301 -- Fixed select_for_update(of) crash when using values()/values_list().
Regression in 65ad4ade74 which allowed for
annotations to be SELECT'ed before model field references through
values()/values_list() and broke assumptions the select_for_update(of)
table infererence logic had about model fields always being first.

Refs #28900.

Thanks OutOfFocus4 for the report and Sarah for the test.

Backport of 71a19a0e47 from main
2025-04-07 23:49:23 +02:00
Sarah Boyce
77d2037511 [5.2.x] Fixed #36298 -- Truncated the overwritten file content in file_move_safe().
Regression in 58cd4902a7.

Thanks Baptiste Mispelon for the report.

Backport of 8ad3e80e88 from main.
2025-04-07 16:13:19 +02:00
Simon Charette
cd1aa54f5a [5.2.x] Fixed #36299 -- Prevented field selection on QuerySet.alias() after values().
Regression in 65ad4ade74.

Refs #28900.

Thanks Jeff Iadarola for the report and tests.

Co-Authored-By: OutOfFocus4 <jeff.iadarola@gmail.com>

Backport of 12b771a1ec from main
2025-04-05 21:38:06 +02:00
Simon Charette
d9bf0d07cc [5.2.x] Fixed #36289 -- Fixed bulk_create() crash with nullable geometry fields on PostGIS.
Swapped to an allow list instead of a deny list for field types to
determine if the UNNEST optimization can be enabled to avoid further
surprises with other types that would require further specialization to
adapt.

Regression in a16eedcf9c.

Thanks Joshua Goodwin for the report and Sarah Boyce for the test.

Backport of 764af7a3d6 from main
2025-04-04 21:33:55 +02:00
Simon Charette
8ebdd37a0b [5.2.x] Fixed #36290 -- Made TupleIn() lookup discard tuples containing None.
Just like the In() lookup discards of None members TupleIn() should
discard tuples containing any None as NULL != NULL in SQL and the
framework expects such queries to be elided under some circumstances.

Refs #31667, #36116.

Thanks Basptise Mispelon for bisecting the regression to 626d77e.

Backport of f7f38f3a0b from main
2025-04-03 22:20:50 +02:00
Simon Charette
317690403a [5.2.x] Fixed #36292 -- Fixed crash when aggregating over a group mixing transforms and references.
Regression in 65ad4ade74.

Refs #28900

Thanks Patrick Altman for the report.

Backport of 543e17c440 from main
2025-04-03 18:35:11 +02:00
Sarah Boyce
2cb311f7b0 [5.2.x] Fixed CVE-2025-27556 -- Mitigated potential DoS in url_has_allowed_host_and_scheme() on Windows.
Thank you sw0rd1ight for the report.

Backport of 39e2297210 from main.
2025-04-02 10:23:46 +02:00
Mariusz Felisiak
9bf6665510 [5.2.x] Fixed warnings per flake8 7.2.0.
https://github.com/PyCQA/flake8/releases/tag/7.2.0
Backport of 281910ff8e from main
2025-03-30 17:56:41 +02:00
Johanan Oppong Amoateng
321a5651a3 [5.2.x] Fixed #36266 -- Renamed HIDE_PRODUCTION_WARNING environment variable to DJANGO_RUNSERVER_HIDE_WARNING.
Backport of 5adadf6e8c from main.
2025-03-21 10:23:13 +01:00
hesham942
1d8696bfc6 [5.2.x] Fixed #36252 -- Handled duplicate automatic imports in the shell command.
Backport of e804a07d76 from main.
2025-03-17 16:30:31 -03:00
Adam Johnson
95031c1ab1 [5.2.x] Fixed #36234 -- Restored single_object argument to LogEntry.objects.log_actions().
Thank you Adam Johnson for the report and fix. Thank you Sarah Boyce for
your spot on analysis.

Regression in c09bceef68, which is
partially reverted in this branch.

Co-authored-by: Sarah Boyce <42296566+sarahboyce@users.noreply.github.com>

Backport of 27b68bcadf from main.
2025-03-12 16:36:48 -03:00
Sarah Boyce
4c7b737b30 [5.2.x] Fixed #36224 -- Fixed shell imports when settings not configured.
Thank you Raffaella for the report. Thank you Tim Schilling and Natalia Bidart
for the reviews.

Backport of de1117ea8e from main.
2025-03-07 15:36:23 +01:00