1
0
mirror of https://github.com/django/django.git synced 2025-07-06 18:59:13 +00:00

13796 Commits

Author SHA1 Message Date
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 9f3419b519799d69f2aba70b9d25abe2e70d03e0 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 4c75858135589f3a00e32eb4d476074536371a32.
Backport of dd133054cb98f77577c06d7ef1f2391a865784bc 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 66f9eb0ff1e7147406318c5ba609729678e4e6f6 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 07100db6f46255ec6ef70b860495f977473684d6 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 4c75858135589f3a00e32eb4d476074536371a32 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 65ad4ade74dc9208b9d686a451cd6045df0c9c3a.

Refs #28900.

Thanks Gav O'Connor for the detailed report.

Backport of 8ef4e0bd423ac3764004c73c3d1098e7a51a2945 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 2722cb61ccae84f593e6d2c28814e3c628743994 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 aba0e541caaa086f183197eaaca0ac20a730bbe4 and in
d5bebc1c26d4c0ec9eaa057aefc5b38649c0ba3b.

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

Backport of 0596263c3136bc26cffa670e5322bd0aa56c4d34 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 55d89e25f4115c5674cdd9b9bcba2bb2bb6d820b.

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 1e9db35836d42a3c72f3d1015c2f302eb6fee046 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 b1324a680add78de24c763911d0eefa19b9263bc and
02a5cbfe76382da2a0414df17017185be5bd47f9. 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 1bc805e23b73a580b82a1d416ab0fb59a1073047 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 ec7d69035a408b357f1803ca05a7c991cc358cfa.

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

Backport of d469db978ea6a705549b9519313d9adc198e4232 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 65ad4ade74dc9208b9d686a451cd6045df0c9c3a.

Thanks Claude for the report.

Backport of 21f8be76d43aa1ee5ae41c1e0a428cfea1f231c1 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 65ad4ade74dc9208b9d686a451cd6045df0c9c3a 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 71a19a0e475165dbc14c1fe02f552013ee670e4c 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 58cd4902a71a3695dd6c21dc957f59c333db364c.

Thanks Baptiste Mispelon for the report.

Backport of 8ad3e80e88201f4c557f6fa79fcfc0f8a0961830 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 65ad4ade74dc9208b9d686a451cd6045df0c9c3a.

Refs #28900.

Thanks Jeff Iadarola for the report and tests.

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

Backport of 12b771a1ec4bbfe82405176f5601e6441855a303 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 a16eedcf9c69d8a11d94cac1811018c5b996d491.

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

Backport of 764af7a3d6c0b543dcf659a2c327f214da768fe4 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 f7f38f3a0b44d8c6d14344dae66b6ce52cd77b55 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 65ad4ade74dc9208b9d686a451cd6045df0c9c3a.

Refs #28900

Thanks Patrick Altman for the report.

Backport of 543e17c4405dfdac4f18759fc78b190406d14239 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 39e2297210d9d2938c75fc911d45f0e863dc4821 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 281910ff8e9ae98fa78ee5d26ae3f0b713ccf418 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 5adadf6e8c74ab14d432e9d682ca1914789386de 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 e804a07d76fc85468f27f7130ae1442fabcd650d 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 c09bceef68e5abb79accedd12dade16aa6577a09, which is
partially reverted in this branch.

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

Backport of 27b68bcadf1ab2e9f7fd223aed42db352ccdc62d 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 de1117ea8eabe0ee0aa048e5a4e249eab7c4245e from main.
2025-03-07 15:36:23 +01:00
Sarah Boyce
3cfa472644 [5.2.x] Fixed CVE-2025-26699 -- Mitigated potential DoS in wordwrap template filter.
Thanks sw0rd1ight for the report.

Backport of 55d89e25f4115c5674cdd9b9bcba2bb2bb6d820b from main.
2025-03-06 09:42:27 +01:00
antoliny0919
5997fdc921 [5.2.x] Fixed #36217 -- Restored pre_save/post_save signal emission via LogEntry.save() for single-object deletion in the admin.
Regression in 40b3975e7d3e1464a733c69171ad7d38f8814280.

Thanks smiling-watermelon for the report.

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

Backport of c09bceef68e5abb79accedd12dade16aa6577a09 from main.
2025-03-04 10:36:37 +01:00
Mariusz Felisiak
53bb1d5a24 [5.2.x] Applied Black's 2025 stable style.
https://github.com/psf/black/releases/tag/25.1.0
Backport of ff3aaf036f0cb66cd8f404cd51c603e68aaa7676 from main
2025-03-01 19:47:17 +01:00
Mariusz Felisiak
43aa6990ac [5.2.x] Refs #35167 -- Fixed test_bulk_update_custom_get_prep_value() crash on databases that don't support primitives in JSONFields.
For example on Oracle < 21c.

Backport of 7500044a825b3e6695f4f0f9e56d5bdc0c5d7988 from main.
2025-02-20 08:18:31 +01:00
Jacob Walls
9525135698 [5.2.x] Fixed #35167 -- Delegated to super() in JSONField.get_db_prep_save().
Avoids reports of bulk_update() sending Cast expressions
to JSONField.get_prep_value().

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

Backport of 0bf412111be686b6b23e00863f5d449d63557dbf from main.
2025-02-18 17:29:34 +01:00
Simon Charette
6b8a6e1251 [5.2.x] Fixed #36197 -- Fixed improper many-to-many count() and exists() for non-pk to_field.
Regression in 66e47ac69a7e71cf32eee312d05668d8f1ba24bb.

Thanks mfontana-elem for the report and Sarah for the tests.

Backport of c3a23aa02faa1cf1d32e43d66858e793cd9ecac4 from main.
2025-02-18 11:44:46 +01:00
mimi89999
cb2ab4ee84 [5.2.x] Fixed #36179 -- Unhexed entries and removed duplicates in auth/common-passwords.txt.gz.
Backport of 727731d76d9dfd5304d536478d862778f6dd6d9b from main.
2025-02-18 09:00:31 +01:00
Gaël Utard
ae391ca368 [5.2.x] Fixed #36191 -- Truncated the overwritten file content in FileSystemStorage.
Backport of 0d1dd6bba0c18b7feb6caa5cbd8df80fbac54afd from main.
2025-02-17 14:03:36 +01:00
Simon Charette
923c5daa10 [5.2.x] Fixed #35967 -- Deferred test suite fixtures serialization after all dbs setup.
While the top-level objects fed to serialization are bound to the test
database being created nothing prevents code invoked during
serialization from performing queries against other connections entries
that haven't been swapped yet.

The reported example of that is a database router directing all reads to
a test mirror for a set of models involving auto-created many-to-many
fields. It might be tempting to address the many-to-many field case but
this a symptom of a larger problem where the test framework yields the
flow execution to user code that could interact with non-test databases
in unexpected ways.

Deferring test database fixture serialization until the point where all
connections entries have been swapped for their test equivalent ensures
that no code triggered during serialization can interact with non-test
databases.

Thanks Jake Howard for the report and Jacob Walls for the initial
investigation.

Backport of dc69a63f844b2ef3bc3371edde91644cf0bef0ee from main
2025-02-16 13:43:38 +01:00
Simon Charette
8b1e324ca4 [5.2.x] Fixed #36173 -- Stabilized identity of Concat with an explicit output_field.
When Expression.__init__() overrides make use of *args, **kwargs
captures their argument values are respectively bound as a tuple and
dict instances. These composite values might themselves contain values
that require special identity treatments such as Concat(output_field)
as it's a Field instance.

Refs #30628 which introduced bound Field differentiation but lacked
argument captures handling.

Thanks erchenstein for the report.

Backport of df2c4952df6d93c575fb8a3c853dc9d4c2449f36 from main
2025-02-15 16:24:00 +01:00
Natalia
6f934989df [5.2.x] Fixed #36158 -- Refactored shell command to improve auto-imported objects reporting.
Backport of 56e23b2319cc29e6f8518f8f21f95a530dddb930 from main.
2025-02-13 16:03:09 +01:00
Sarah Boyce
92d5b2f389 [5.2.x] Fixed #36182 -- Returned "?" if all parameters are removed in querystring template tag.
Thank you to David Feeley for the report and Natalia Bidart for the review.

Backport of 05002c153c5018e4429a326a6699c7c45e5ea957 from main.
2025-02-13 15:50:53 +01:00
Simon Charette
771c250b10 [5.2.x] Fixed #36181 -- Allowed Subquery usage in __in lookups against composite pks.
Thanks Jacob Walls for the report.

Backport of 8561100425876bde3be4b2a22324655f74ff9609 from main.
2025-02-13 09:31:01 +01:00
Simon Charette
dc1c9b4ddd [5.2.x] Fixed #36149 -- Allowed subquery values against tuple exact and in lookups.
Non-tuple exact and in lookups have specialized logic for subqueries that can
be adapted to properly assign select mask if unspecified and ensure the number
of involved members are matching on both side of the operator.

Backport of 41239fe34d64e801212dccaa4585e4802d0fac68 from main.
2025-02-11 09:16:44 +01:00
Natalia
16c7dc543c [5.2.x] Refs #35515 -- Fixed shell command verbose output when auto-importing 0 or 1 object.
Co-authored-by: Salvo Polizzi <salvopolizzi03@gmail.com>

Backport of 0597e8ad1e55b565292ead732916aa0e39bdf37b from main.
2025-02-10 22:59:44 -03:00
Natalia
7b0c587a68 [5.2.x] Refs #35515 -- Refactored internal get_and_report_namespace in the shell command.
Backport of 44ccd20375ba0d4da869ef994bc10a2311e9dc88 from main.
2025-02-10 22:59:33 -03:00
Simon Charette
d99985bbc1 [5.2.x] Fixed #36025 -- Fixed re-aliasing of iterable (in/range) lookups rhs.
In order for Expression.relabeled_clone to work appropriately its
get_source_expressions method must return all resolvable which wasn't the case
for Lookup when its right-hand-side is "direct" (not a compilable).

While refs #22288 added support for non-literals iterable right-hand-side
lookups it predated the subclassing of Lookup(Expression) refs #27021 which
could have been an opportunity to ensure right-hand-sides are always resolvable
(ValueList and ExpressionList).

Addressing all edge case with non-resolvable right-hand-sides would require
a significant refactor and deprecation of some parts of the Lookup interface so
this patch only focuses on FieldGetDbPrepValueIterableMixin (In and Range
lookups) by making sure that a right-hand-side containing resolvables are dealt
with appropriately during the resolving phase.

Thanks Aashay Amballi for the report.

Backport of 089deb82b9ac2d002af36fd36f288368cdac4b53 from main.
2025-02-06 17:00:31 +01:00
brian
b96e4c04b6 [5.2.x] Fixed #36061 -- Added migration support for ManyToManyField.through_fields.
Added through_fields support to ManyToManyField.deconstruct.
Thanks to Simon Charette for pointers and the review.

Backport of b13b8684a04d0bc1081104c5973c62c27dc673b0 from main.
2025-02-06 15:27:26 +01:00
Simon Charette
8aea6b802c [5.2.x] Fixed #35677 -- Avoided non-sticky filtering of prefetched many-to-many.
The original queryset._next_is_sticky() call never had the intended effect as
no further filtering was applied internally after the pk__in lookup making it
a noop.

In order to be coherent with how related filters are applied when retrieving
objects from a related manager the effects of what calling _next_is_sticky()
prior to applying annotations and filters to the queryset provided for
prefetching are emulated by allowing the reuse of all pre-existing JOINs.

Thanks David Glenck and Thiago Bellini Ribeiro for the detailed reports and
tests.

Backport of 2598b371a93e21d84b7a2a99b2329535c8c0c138 from main.
2025-02-06 14:31:32 +01:00
Ben Cail
d57bf4618c [5.2.x] Refs #22997 -- Prevented requesting a default value for auto fields.
Backport of db7b1ae9f6d9e26facbb3da4cf5f5a513704bfe5 from main.
2025-02-06 13:55:41 +01:00
antoliny0919
209d0f6143 [5.2.x] Fixed #36069 -- Fixed the delete button position in TabularInlines.
Backport of 1330cb570519170bb4397b4fb02c7e3e0657855a from main.
2025-02-04 08:57:25 +01:00
antoliny0919
d03102a5a8 [5.2.x] Fixed #36055 -- Prevented overlap of object-tools buttons and page header in the admin.
Backport of b1324a680add78de24c763911d0eefa19b9263bc from main.
2025-02-04 08:49:07 +01:00
Simon Charette
303c2569da [5.2.x] Fixed #36135 -- Fixed reverse GenericRelation prefetching.
The get_(local|foreign)_related_value methods of GenericRelation must be
reversed because it defines (from|to)_fields and associated related_fields
in the reversed order as it's effectively a reverse GenericForeignKey
itself.

The related value methods must also account for the fact that referenced
primary key values might be stored as a string on the model defining the
GenericForeignKey but as integer on the model defining the GenericRelation.
This is achieved by calling the to_python method of the involved content type
in get_foreign_related_value just like GenericRelatedObjectManager does.

Lastly reverse many-to-one manager's prefetch_related_querysets should use
set_cached_value instead of direct attribute assignment as direct assignment
might are disallowed on ReverseManyToOneDescriptor descriptors. This is likely
something that was missed in f5233dc (refs #32511) when the is_cached guard
was added.

Thanks 1xinghuan for the report.

Backport of 198b30168d4e94af42e0dc7967bd3259b5c5790b from main.
2025-02-03 10:40:52 +01:00
nessita
affad13d0c [5.2.x] Fixed #36140 -- Allowed BaseUserCreationForm to define non required password fields.
Regression in e626716c28b6286f8cf0f8174077f3d2244f3eb3.

Thanks buffgecko12 for the report and Sarah Boyce for the review.

Backport of d15454a6e84a595ffc8dc1b926282f484f782a8f from main.
2025-02-01 22:50:26 -03:00
greg
2146bd1261 [5.2.x] Fixed #36119 -- Fixed UnicodeEncodeError when attaching a file with 8bit Content-Transfer-Encoding.
Backport of 89e28e13ecbf9fbcf235e16d453c08bbf2271244 from main.
2025-01-31 12:55:57 +01:00
sharonwoo
77f9e6bcd3 [5.2.x] Fixed #35235 -- Removed caching of BaseExpression._output_field_or_none.
Backport of cbb0812683cf3236e4a4003bf7f74b119d3cde0c from main.
2025-01-30 13:51:25 +01:00