| Age | Commit message (Collapse) | Author |
|
|
|
template literals.
The deprecation warning for double-dot variable lookups checked
str(filter_expression.var), which for constants is the resolved literal
value rather than a variable lookup. Templates containing string or translated
string literals with two consecutive dots, such as {{ "a..b" }} or
{{ 'a..b'|upper }}, therefore incorrectly raised a RemovedInDjango70Warning.
The check now only applies when the filter expression's variable is a
Variable lookup.
Regression in 5d911f2d2fecc703be91b2b9b28acc59d34b35f3.
|
|
The docstring and reference documentation still described the safe
parameter as defaulting to True after its deprecation.
Follow-up to 6e15ac8066312328de279e3e072667416c205bfc.
|
|
|
|
async_client in testing tools.
|
|
|
|
|
|
|
|
Forwardport of c58d86162cd59602df96f0e716cae9849acb3ddb from stable/6.1.x.
|
|
(Latin script).
|
|
|
|
assertIsInstance passes when the expected is a superclass of the
returned object.
Thanks James Bligh for the review!
|
|
|
|
feature flag.
Oracle 23.9 supported UUID() in SELECT contexts, but use in column defaults
fails until 23.26.2.0 with:
django.db.utils.DatabaseError: ORA-04044: procedure, function, package, or type is not allowed here
|
|
security archive.
|
|
rendering admin links.
The admin renders URLField values as clickable links on changelists and
read-only change forms. The link was built without validating the URL,
so a potentially dangerous stored value could be rendered as a link that
runs script in a staff member's authenticated session when clicked.
The admin renders URLField values as clickable links on changelists and
read-only change forms. The link was built without validating the URL,
so a stored value using a potentially dangerous value was rendered as a
link, which could lead to cross-site scripting in an authenticated admin
session.
Refs CVE-2019-12308, #36032.
Thanks to Egor Saltykov for the report, and Sarah Boyce for reviews.
|
|
Since deeply nested geometry collections can lead to fatal errors in
GEOS, a new `max_geom_collections` argument on geometry model and form
fields, passed down to `GEOSGeometry` itself, allows limiting either
depth (WKT) or total number (WKB) before reaching GEOS.
Thanks Andrew MacPherson and kimchunbok_ for the reports, and Natalia
Bidart, Simon Charette, and Sarah Boyce for reviews.
|
|
Language codes longer than 500 characters are now rejected before the
cached lookup, so they are no longer retained as cache keys consuming
memory from each process.
Thanks Jaeyoung Jang for the report, and Sarah Boyce for reviews.
|
|
Spatial lookups optimistically parse values as rasters before retrying
as geometries. If a malicious value reached the GDALRaster constructor,
depending on the raster driver, it might write to disk or fetch from the
network regardless of the constructor's `write=False` default argument.
Although this works as designed for model field assignment, this is
potentially unexpected for querying, for example, in the admin's
changelist view, which allows staff users to execute arbitrary lookups
on models registered with the admin.
Network rasters didn't even work in lookup contexts before, providing
further evidence that this use case was unintentional. (The failure
point was after the fetching, however.)
Now, strings and dicts representing rasters are rejected by spatial
lookups. To opt in to using them, wrap them in a `GDALRaster` first.
Although it would simplify the implementation to try geometries before
rasters (instead of stashing a raster exception and raising it later),
we maintain the current order, which has been stable for a decade.
Thanks Bence Nagy, localhost-detect, and kimchunbok_ for providing
information useful in evaluating this report. Thanks Simon Charette,
Natalia Bidart, and Sarah Boyce for reviews.
|
|
|
|
Thanks Jacob for the triage and James for the review.
|
|
This aims for consistency in the django.db.models namespace.
Thanks Natalia Bidart and Simon Charette for the idea.
|
|
Without also mocking the global settings, there was pollution of the
test database name, since create_test_db() writes like so:
self.connection.settings_dict["NAME"] = test_database_name
This caused other tests that explicitly reopen database connections to
fail under parallel test execution (in forkserver mode) because at the
moment of reopening, the db name was `memorydb_default` rather than the
suffixed version `memorydb_default_3`:
backends.sqlite.tests.ThreadSharing.test_database_sharing_in_threads
servers.tests.LiveServerInMemoryDatabaseLockTest.test_in_memory_database_lock
|
|
Follow-up to 75d627888bf42f8de6064a0bd665c98c0df66c55.
|
|
|
|
|
|
workers.
This prevents newly spawned workers from attempting to access nonexistent
clones.
Thanks James Bligh for the review.
|
|
|
|
|
|
Regression in a2348c85fc6c20087935c74cd99340dd4ef2dcdc.
|
|
Thank you to Jacob Walls and Nick Pope for the review.
|
|
|
|
Follow-up to 0bba6363b0ecf3426defbdada17c5efbd51a77c8.
|
|
This didn't handle cross-fork PRs correctly.
Follow-up to a959c2596f8a1d1ef9f321b8b227a399e86409e2.
|
|
Added a documentation page that contains a concise set of guidelines to
help new contributors be more effective at sprints or other events with
in-person Django contributors.
Included a pair of links on how to filter down tickets, which calls out
adding the additional columns and filtering to docs components, and a
internal reference link for django-docker-box.
Thanks Annabelle Wiegart, Natalia Bidart, Paolo Melchiorre, Jacob Walls,
and Tim Mccurrachd for reviews.
Co-authored-by: tim-mccurrach <34194722+tim-mccurrach@users.noreply.github.com>
Co-authored-by: nessita <124304+nessita@users.noreply.github.com>
|
|
|
|
|
|
refresh_from_db().
|
|
Objects with a primary key supplied by a late-saved related instance
were partitioned before their related fields were prepared. This
caused an assertion failure on backends returning rows from bulk
inserts.
Regression in 7d9aab8da0a06787d649762a702e1a518d843a63.
|
|
Co-authored-by: blighj <blighj@users.noreply.github.com>
|
|
The removed section primarily provided usage examples and recommendations
rather than documenting the widget API. The interaction between a choice
field and its widget is already documented in the Select.choices reference.
|
|
Retrieving the PR number directly instead of from an artifact prevents
it from being spoofed.
Thanks Sarah Boyce for the review.
|
|
|
|
|
|
ModelAdmin.list_display.
Thanks Rob Kuipers for the report.
Regression in 4b2b4bf0ac2707dc9c4d51cabfa72168eaea95fe.
Co-authored-by: Jacob Walls <jacobtylerwalls@gmail.com>
|
|
|
|
|
|
This was overzealously removed in a146fe293099d7f860ba13e4b3a571bbda55af22.
|
|
ending with newlines.
|
|
Thank you to James Bligh and Sarah Boyce for the review.
|