| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
non-PostgreSQL databases.
|
|
This comparison wasn't fleshed out, so it was distracting.
|
|
|
|
|
|
Based on Daniele Varrazzo's comment in https://github.com/psycopg/psycopg/issues/1273#issuecomment-3986829769
|
|
|
|
Follow-up to 92d4aea5ffacc38c5f7903b9410d0abec83f14de.
|
|
|
|
tests.
Thanks JaeHyuck Sa and Jake Howard for the reviews.
|
|
It has been superseded with .quote_name(), which ensures aliases are
always quoted.
|
|
feature flag.
Now that user provided aliases are systematically quoted there is no need to
disallow the usage of the dollar sign on Postgres.
|
|
This ensures all database identifiers are quoted independently of their orign
and most importantly that user provided aliases through annotate() and alias()
which paves the way for dropping the allow list of characters such aliases can
contain.
This will require adjustments to raw SQL interfaces such as RawSQL that might
make reference to ORM managed annotations as these will now be quoted.
The `SQLCompiler.quote_name_unless_alias` method is kept for now as an alias
for the newly introduced `.quote_name` method but will be duly deprecated in
a follow up commit.
|
|
list_display.
When using related field lookups like 'parent__is_active' in list_display,
the admin now correctly detects if the final field is a BooleanField and
displays boolean icons instead of 'True'/'False' text.
Modified lookup_field() in django/contrib/admin/utils.py to retrieve the
final field from the path when traversing relations using LOOKUP_SEP (__),
allowing display_for_field() to properly handle BooleanFields.
|
|
This avoids two isinstance() calls per UUID value.
|
|
Replaced weak receiver registration in Signal.connect() to pass
_flag_dead_receivers directly as the callback for weakref.ref() and
weakref.WeakMethod() instead of creating weakref.finalize() objects.
This prevented finalizer accumulation in repeated weak
connect()/disconnect() cycles where receivers remain alive.
|
|
boundary conditions.
Follow-up to 352d860b9107adbcde0f1fe5d0fce8e9090a51e4.
Overriding USE_TZ=True during a test creates drift between the SQL compiled
for inserted values versus the deployed database default, as Extract() inquires
of the current timezone.
To resolve this, leave USE_TZ=False and make UTC explicit when asserting the result.
|
|
verify_release.sh.
This reuses the same download for both artifacts and checks both GPG
signature and minimal correctness in the same script. Docs and script
do_django_release.py were updated.
|
|
spatialreference.org has been redesigned, possibly in 2023 [1], and no longer uses Django, see repo [2].
[1] https://spatialreference.org/about.html
[2] https://github.com/OSGeo/spatialreference.org
|
|
streaming responses.
|
|
Fixed the EmailMessage.message() method signature in the docs to
reinforce that the `policy` argument is keyword-only. (The text already
describes it correctly as keyword-only.)
|
|
A TypeError is now raised if fail_silently=True, auth_user, or auth_password
are provided along a connection.
Updated AdminEmailHandler in django.utils.log to remove redundant
fail_silently=True.
Thanks Mike Edmunds for the report and Jacob Tyler Walls for the review.
|
|
This was causing permission errors on private forks, e.g. the one
maintained by the Security Team for staging security patches.
Follow-up to f8665b1a7ff5e98d84f66ad0e958c3f175aa5d8b.
|
|
Oracle.
|
|
|
|
|
|
AddField/AlterField docs.
|
|
|
|
on test client.
|
|
layout.
|
|
Thanks Simon Charette and Jacob Walls for reviews.
|
|
|
|
get_placeholder_sql.
The lack of ability of the get_placeholder call chain to return SQL and
parameters separated so they can be mogrified by the backend at execution time
forced implementations to dangerously interpolate potentially user controlled
values.
The get_placeholder_sql name was chosen due to its proximity to the previous
method, but other options such as Field.as_sql were considered but ultimately
rejected due to its different input signature compared to Expression.as_sql
that might have lead to confusion.
There is a lot of overlap between what Field.get_db_prep_value and
get_placeholder_sql do but folding the latter in the former would require
changing its return signature to return expression which is a way more invasive
change than what is proposed here.
Given we always call get_db_prep_value it might still be an avenue worth
exploring in the future to offer a publicly documented interface to allow field
to take an active part in the compilation chain.
Thanks Jacob for the review.
|
|
|
|
Some contributors have been requesting Copilot reviews on pull requests
submitted to the Django repository. These automated reviews add noise to
the PR history, making it harder to follow the discussion, and Django
does not incorporate them into its review process.
This change discourages the practice by:
- Adding a `copilot-instructions.md` file instructing Copilot to decline
review requests in this repository.
- Adding a checklist item to the PR template asking contributors not to
request automated AI reviews for their PR.
- Documenting the policy in the contributing guidelines.
|
|
provided.
Co-authored-by: Mariusz Felisiak <felisiak.mariusz@gmail.com>
|
|
manager.get_queryset() always returns freshly instantiated per-instance
QuerySet which doesn't need subsequent cloning.
Based on work originally done by Anssi Kääriäinen and Tim Graham.
|
|
Multiple calls are idempotent assuming they're balanced. Also, multiple
calls to disable cloning followed by a single call to re-enable cloning
will subsequently cause clones to occur - it is not a stack, just a
toggle.
@contextlib.contextmanager is intentionally not used for performance
reasons:
- decorator takes 1.1µs to execute, or 2µs if used correctly in a
`with ...:` statement
- custom class takes 300ns to execute, or 900ns if used correctly in a
`with ...:` statement
Based on work originally done by Anssi Kääriäinen and Tim Graham.
|
|
Co-authored-by: Jacob Walls <jacobtylerwalls@gmail.com>
|
|
|
|
|
|
|
|
Co-authored-by: Jacob Walls <jacobtylerwalls@gmail.com>
|
|
This avoids latency and/or blocking.
The example of streaming a CSV file was rewritten to employ batching for
greater efficiency in all layers (db, HTTP, etc.). The improved
performance from batching should outweigh the drag introduced by an
additional byte for each flush.
Co-authored-by: huoyinghui <huoyinghui@users.noreply.github.com>
|
|
It's useful on MongoDB.
|
|
truncated db_table names.
|
|
|
|
Paths that happened to begin with the script name were inappropriately
stripped, instead of checking that script name preceded a slash.
|