summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-06-14Fixed date_time_picker_shortcuts() tests on Windows.David Smith
Windows does not allow overriding TIME_ZONE as time.tzset() is only available on Unix.
2023-06-13Updated PyPI setup access in prerequisites checklist of release how-to.nessita
2023-06-13Fixed #34649 -- Fixed headless deprecation warning on Selenium 4.8+.anthony kugel
Thanks David Smith for the report and initial patch.
2023-06-13Refs #30220 -- Bumped required version of Selenium to 3.8.0.Mariusz Felisiak
Follow up to 8d010f39869f107820421631111417298d1c5bb9.
2023-06-13Made SeleniumTests.test_select_multiple less flaky by adding explicit ↵sarahboyce
Selenium wait.
2023-06-12Fixed #34628 -- Improved icons accessibility of related widget wrapper in admin.Nina Menezes
This improves accessibility of icons by making them larger and grayscale (when not selected).
2023-06-12Allowed custom formatting of lazy() objects.Nick Pope
This allows for formatting of lazy objects which have a custom formatter defined by overriding the default implementation from `object`.
2023-06-12Allowed multiplication of lazy() objects with int return type.Nick Pope
2023-06-12Removed function call overhead when preparing proxy class for lazy().Nick Pope
We can avoid the function call and assignment overhead which could be significant when instantiating many lazy objects. It's still easy enough to read too.
2023-06-12Made proxy class in lazy() prepare eagerly.Ran Benita
Previously, the proxy class was prepared lazily: lazy_identity = lazy(identity, int) lazy_identity(10) # prepared here lazy_identity(10) This has a slight advantage that if the lazy doesn't end up getting used, the preparation work is skipped, however that's not very likely. Besides this laziness, it is also inconsistent in that the methods which are wrapped directly (__str__ etc.) are prepared already when __proxy__ is defined, and there is a weird half-initialized state. This change it so that everything is prepared already on the first line of the example above.
2023-06-12Improved order of methods in proxy class in lazy().Ran Benita
This order reads more naturally and puts methods into three groups: 1. The methods required to support the implementation of __proxy__, e.g. __deepcopy__ doesn't come from `object` and __reduce__ is overridden to support behavior required explicitly for pickling of lazy objects. 2. Methods that are specifically overridden from `object` which we don't want to inherit from the provided resultclasses. These will be skipped later when we add methods from the resultclasses. 3. Additional methods - that is _add__, __radd__, and __mod__ - don't come from `object`, but typically from `str` and `int` which are the most common use cases. Co-authored-by: Nick Pope <nick@nickpope.me.uk>
2023-06-12Added more tests for django.utils.functional.lazy().Nick Pope
2023-06-11Fixed #34638 -- Fixed admin change list selected row highlight on editable ↵Neeraj Kumar
boolean fields. Regression in 0aa2f16e63887d6053f6fd0da19254fc74c750ae. Thanks Andrei Shabanski for the report.
2023-06-11Refs #34233 -- Updated black target-version to Python 3.10.David Smith
2023-06-10Added tests for HttpResponseBase.charset/reason_phrase setters.XDEv11
2023-06-09Fixed #34645 -- Restored alignment for admin date/time timezone warnings.Mariusz Felisiak
Regression in 96a598356a9ea8c2c05b22cadc12e256a3b295fd.
2023-06-09Fixed #23049 -- Added %a and %A support to Date.strftime.sarahboyce
This enables the admin to display the day as locale's abbreviated/full name if %a/%A is used in the date format.
2023-06-08Fixed #34604 -- Corrected fallback SQL for n-ary logical XOR.Anders Kaseorg
An n-ary logical XOR Q(…) ^ Q(…) ^ … ^ Q(…) should evaluate to true when an odd number of its operands evaluate to true, not when exactly one operand evaluates to true.
2023-06-08Optimized lazy() by removing use of @total_ordering.Ran Benita
@total_ordering is slow. Using the following micro-benchmark (resultclasses intentionally omitted to narrow the scope): import cProfile from django.utils.functional import lazy def identity(x): return x cProfile.run("for i in range(10000): str(lazy(identity)(1))") Before: 380003 function calls in 0.304 seconds ncalls tottime percall cumtime percall filename:lineno(function) 1 0.016 0.016 0.304 0.304 <string>:1(<module>) 10000 0.002 0.000 0.002 0.000 bench.py:5(double) 10000 0.005 0.000 0.006 0.000 functional.py:100(__cast) 10000 0.007 0.000 0.013 0.000 functional.py:106(__str__) 10000 0.005 0.000 0.017 0.000 functional.py:140(__wrapper__) 10000 0.020 0.000 0.258 0.000 functional.py:60(lazy) 10000 0.039 0.000 0.039 0.000 functional.py:68(__proxy__) 10000 0.010 0.000 0.012 0.000 functional.py:77(__init__) 10000 0.002 0.000 0.002 0.000 functional.py:84(__prepare_class__) 10000 0.025 0.000 0.075 0.000 functools.py:186(total_ordering) 10000 0.015 0.000 0.028 0.000 functools.py:189(<setcomp>) 10000 0.024 0.000 0.044 0.000 functools.py:37(update_wrapper) 10000 0.005 0.000 0.005 0.000 functools.py:67(wraps) 10000 0.074 0.000 0.114 0.000 {built-in method builtins.__build_class__} 1 0.000 0.000 0.304 0.304 {built-in method builtins.exec} 150000 0.023 0.000 0.023 0.000 {built-in method builtins.getattr} 10000 0.004 0.000 0.004 0.000 {built-in method builtins.max} 80000 0.025 0.000 0.025 0.000 {built-in method builtins.setattr} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 10000 0.003 0.000 0.003 0.000 {method 'update' of 'dict' objects} After: 240003 function calls in 0.231 seconds ncalls tottime percall cumtime percall filename:lineno(function) 1 0.016 0.016 0.231 0.231 <string>:1(<module>) 10000 0.002 0.000 0.002 0.000 bench.py:5(double) 10000 0.006 0.000 0.012 0.000 functional.py:105(__str__) 10000 0.005 0.000 0.017 0.000 functional.py:159(__wrapper__) 10000 0.015 0.000 0.186 0.000 functional.py:60(lazy) 10000 0.022 0.000 0.022 0.000 functional.py:68(__proxy__) 10000 0.010 0.000 0.012 0.000 functional.py:76(__init__) 10000 0.002 0.000 0.002 0.000 functional.py:83(__prepare_class__) 10000 0.004 0.000 0.006 0.000 functional.py:99(__cast) 10000 0.023 0.000 0.043 0.000 functools.py:37(update_wrapper) 10000 0.004 0.000 0.004 0.000 functools.py:67(wraps) 10000 0.102 0.000 0.124 0.000 {built-in method builtins.__build_class__} 1 0.000 0.000 0.231 0.231 {built-in method builtins.exec} 70000 0.011 0.000 0.011 0.000 {built-in method builtins.getattr} 50000 0.007 0.000 0.007 0.000 {built-in method builtins.setattr} 1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects} 10000 0.003 0.000 0.003 0.000 {method 'update' of 'dict' objects}
2023-06-08Made bytes and str return types no longer mutually exclusive in lazy().Ran Benita
They are no longer special cased.
2023-06-08Removed unnecessary wrapping of __bytes__ in proxy class in lazy().Ran Benita
2023-06-08Removed unnecessary branch in __mod__() from proxy class in lazy().Ran Benita
Unnecessary since c716fe87821df00f9f03ecc761c914d1682591a2 and 7b2f2e74adb36a4334e83130f6abc2f79d395235.
2023-06-08Refs #34445 -- Fixed string-casting of non-string lazy objects when value ↵Ran Benita
may be bytes. If the result type is bytes, then calling bytes() on it does nothing. If the result type is not bytes, we should not cast to bytes, just because the return value may be bytes.
2023-06-07Fixed #30355 -- Doc'd interaction between custom managers and ↵Akash Kumar Sen
prefetch_related().
2023-06-07Added MultiPartParser tests for parsing base64-encoded fields.benebsiny
2023-06-06Fixed #34609 -- Deprecated calling format_html() without arguments.devilsautumn
2023-06-06Fixed lookup.tests.LookupTests.test_exclude() on PostgreSQL 16 beta 1.Mariusz Felisiak
Order doesn't matter for this test, and on PostgreSQL 16 "%" is ordered before "_", so switch to sort by "pub_date".
2023-06-06Refs #26706, Refs #34633 -- Added test for prefetch_related() cache ↵Mariusz Felisiak
invalidation in ManyRelatedManager.create().
2023-06-05Fixed #34627 -- Highlighted active row in admin UI when forced-colors mode ↵Nina Menezes
is enabled.
2023-06-05Added stub release notes for 4.2.3.nessita
2023-06-05Fixed #34622 -- Improved accessibility of related widget wrapper in admin.Coen van der Kamp
This improves accessibility for screen reader users by adding "aria-disabled" and removing "alt". Thanks Thibaud Colas for the report.
2023-06-05Added release date for 4.2.2.Natalia
2023-06-05Fixed #34621 -- Made admin site header render in <div> tag.Howard Cox
This was problematic for screen reader users because they use headings to navigate. Having two <h1> is confusing, and the one in the header wasn’t particularly helpful since it’s the same on all pages.
2023-06-05Fixed #34601 -- Added field name to check message for ↵nessita
ModelAdmin.readonly_fields. Co-authored-by: Rick van Hattem <wolph@wol.ph>
2023-06-04Fixed #34620 -- Fixed serialization crash on m2m fields without natural keys ↵Mariusz Felisiak
when base querysets use select_related(). Regression in 19e0587ee596debf77540d6a08ccb6507e60b6a7. Thanks Martin Svoboda for the report.
2023-06-03Refs #23528 -- Made cosmetic edits to swappable_dependency() docs.Mariusz Felisiak
2023-06-02Fixed #23528 -- Doc'd django.db.migrations.swappable_dependency().DevilsAutumn
2023-06-02Fixed #34618 -- Added icon descriptions in "Recent Actions" on the admin index.Nina Menezes
2023-06-01Fixed #34612 -- Fixed QuerySet.only() crash on reverse relationships.Simon Charette
Regression in b3db6c8dcb5145f7d45eff517bcd96460475c879. Thanks Ian Cubitt for the report. This also corrected test_inheritance_deferred2() test which was previously properly defined and marked as an expected failure but was then wrongly adjusted to mask the lack of support for per-alias deferral that was fixed by #21204.
2023-06-01Refs #34570 -- Added extra tests for QuerySet.only() noops.Simon Charette
2023-06-01Added local copy of Django to deps in tox.ini.Michael Howitz
This also bumps tox to 4.0.
2023-06-01Fixed #34617 -- Enabled user zooming on mobile devices in the admin.Cheuk Ting Ho
2023-06-01Fixed #34595 -- Doc'd that format_string arg of format_html() is not escaped.AP Jama
2023-06-01Fixed #34616 -- Corrected label examples in 5.0 release notes.Christopher Cave-Ayland
2023-05-31Fixed #34606 -- Fixed Right() function with zero length on Oracle and SQLite.Kacper Wolkiewicz
2023-05-31Fixed #34600 -- Removed references to bleach in docs.Akash Kumar Sen
2023-05-26Optimized @condition decorator a bit.Mariusz Felisiak
This removes unnecessary get_last_modified() hook.
2023-05-26Refs #34574, Refs #34577 -- Mentioned escapeseq filter in escape/autoescape ↵Natalia
docs.
2023-05-26Fixed #34574 -- Noted unexpected outcomes in autoescape/escape docs.Natalia
2023-05-25Made MigrationRecorder cache has_table() result if django_migrations table ↵Tom Forbes
exists.