| Age | Commit message (Collapse) | Author |
|
Thanks to guettli for the initial ticket and patch, with additional work
from mehmetakyuz and Kevin Brolly.
|
|
This commit also adds tests for the redirect feature of most auth views.
It also cleans up the tests, most notably using @override_settings instead
of ad-hoc setUp/tearDown methods.
Thanks to caumons for the report.
Conflicts:
docs/releases/1.6.txt
|
|
|
|
|
|
Thanks zalew for the suggestion and work on a patch.
Also updated, tweaked and fixed testing documentation.
|
|
|
|
|
|
Allows for any iterable, not just lists or tuples, to be used as
the inner item for a list of choices in a model.
|
|
|
|
Also, streamline the use of 0 and None between cache backends.
|
|
|
|
Largely inspired from django-floppyforms. Designed to not depend
on OpenLayers at code level.
|
|
This starts the deprecation period for PIL (support to end in 1.8).
|
|
Thanks to Preston Timmons for the bulk of the work on the patch, especially
updating Django's own test suite to comply with the requirements of the new
runner. Thanks also to Jannis Leidel and Mahdi Yusuf for earlier work on the
patch and the discovery runner.
Refs #11077, #17032, and #18670.
|
|
added '__all__' shortcut
This also updates all dependent functionality, including modelform_factory
and modelformset_factory, and the generic views `ModelFormMixin`,
`CreateView` and `UpdateView` which gain a new `fields` attribute.
|
|
|
|
Fixed #20327.
|
|
Refs #20104.
|
|
Refs #17840. Thanks Carl Meyer for noticing the omission.
|
|
Also cleaned up label escaping and consolidated the test suite regarding
label_tag.
|
|
Thanks Aymeric Augustin for noticing the omission and Tim Graham
for the text review.
Fixes #9055 (again).
|
|
|
|
Thanks Jan Murre, Reinout van Rees and Wim Feijen,
plus Remco Wendt for reviewing.
|
|
|
|
BCryptSHA256PasswordHasher pre-hashes the users password using
SHA256 to prevent the 72 byte truncation inherient in the BCrypt
algorithm.
|
|
|
|
Sorry.
|
|
Thanks to the many contributors who updated and improved the patch over
the life of this ticket.
|
|
Thanks Florian for reporting this omission.
|
|
|
|
This is provided as a new "validate_max" formset_factory option defaulting to
False, since the non-validating behavior of max_num is longstanding, and there
is certainly code relying on it. (In fact, even the Django admin relies on it
for the case where there are more existing inlines than the given max_num). It
may be that at some point we want to deprecate validate_max=False and
eventually remove the option, but this commit takes no steps in that direction.
This also fixes the DoS-prevention absolute_max enforcement so that it causes a
form validation error rather than an IndexError, and ensures that absolute_max
is always 1000 more than max_num, to prevent surprising changes in behavior
with max_num close to absolute_max.
Lastly, this commit fixes the previous inconsistency between a regular formset
and a model formset in the precedence of max_num and initial data. Previously
in a regular formset, if the provided initial data was longer than max_num, it
was truncated; in a model formset, all initial forms would be displayed
regardless of max_num. Now regular formsets are the same as model formsets; all
initial forms are displayed, even if more than max_num. (But if validate_max is
True, submitting these forms will result in a "too many forms" validation
error!) This combination of behaviors was chosen to keep the max_num validation
simple and consistent, and avoid silent data loss due to truncation of initial
data.
Thanks to Preston for discussion of the design choices.
|
|
|
|
Thanks martinogden for the initial patch and d1ffuz0r for tests.
|
|
|
|
|
|
|
|
|
|
The backwards-incompatible changes section wasn't structured in sections
like it is in release notes for previous versions.
|
|
|
|
|
|
Model.save() will use UPDATE - if not updated - INSERT instead of
SELECT - if found UPDATE else INSERT. This should save a query when
updating, but will cost a little when inserting model with PK set.
Also fixed #17341 -- made sure .save() commits transactions only after
the whole model has been saved. This wasn't the case in model
inheritance situations.
The save_base implementation was refactored into multiple methods.
A typical chain for inherited save is:
save_base()
_save_parents(self)
for each parent:
_save_parents(parent)
_save_table(parent)
_save_table(self)
|
|
|
|
|
|
Replaced them with per-database options, for proper multi-db support.
Also toned down the recommendation to tie transactions to HTTP requests.
Thanks Jeremy for sharing his experience.
|
|
|
|
This is mostly a documentation change.
It has the same backwards-incompatibility consequences as those
described for PostgreSQL in a previous commit.
|
|
|
|
Thanks Paul Winkler for the initial patch.
|
|
return a QuerySet.
|
|
creating constraints on the intermediary models.
|