#35604: Unexpected behaviour of FileSystemStorage.exists() due to latest changes
-------------------------------------+-------------------------------------
Reporter: Stefan Hammer | Type:
| Uncategorized
Status: new | Component: File
| uploads/storage
Version: 5.1 | Severity: Normal
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
With this ticket I would like to vote against the latest changes to
`FileSystemStorage.exists()` with #35326.
The very basic file storage operation "exists" now returns `False`, if the
option `allow_overwrite` is set to `True` (see
[
https://github.com/django/django/pull/18020/files#diff-
63fca472a0ca8c04505cb4ec9c132663ac71fc964110afc8ae9218416f37821cR196-R202
Github]).
I know, the default behavior is unchanged (`allow_overwrite` is False by
default), but nevertheless the change seems to me more like the easiest
option, but not the cleanest for the API. Until now, the API was very
self-explanatory.
The storages API is perfect due to its simplicity and extensibility, and
we're using it extensively due to packages like
[
https://github.com/jschneier/django-storages django-storages]. I think we
should keep it that simple and rethink the above change of the basic
"exists" operation, which in my opinion should return exactly that
information.
Maybe we should also adapt the
[
https://docs.djangoproject.com/en/dev/ref/files/storage/#django.core.files.storage.Storage.exists
documentation] for `exists()`, as it can be interpreted in multiple ways
(see [
https://github.com/django/django/pull/18020#issuecomment-2107608379
here] and [
https://github.com/jschneier/django-
storages/issues/1430#issuecomment-2221213695 here]).
I probably wouldn't have noticed this change until its occurrence in the
next LTS, but (luckily) django-storages has synced the above changes into
its latest version, which lead to a bug report with multiple affected
people [
https://github.com/jschneier/django-storages/issues/1430 here].
--
Ticket URL: <
https://code.djangoproject.com/ticket/35604>
Django <
https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.