#28170: FileField Upload Permissions Denied
-------------------------------------+-------------------------------------
Reporter: Derrick Jackson | Owner: nobody
Type: Bug | Status: new
Component: File | Version: 1.11
uploads/storage |
Severity: Normal | Resolution:
Keywords: | Triage Stage:
| Unreviewed
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Tim Graham):
* component: Core (Other) => File uploads/storage
Old description:
> I upgraded from DJango 1.10.6 to 1.11 and can no longer use FileField to
> upload files larger than 2.5 MB. When an attempt is made to upload a
> larger file I get the error below occurs. Please note if I downgrade to
> 1.10.6 again the upload feature works just fine.
>
> Django Version: 1.11
> Exception Type: PermissionError
> Exception Value:
> [Errno 1] Operation not permitted
> Exception Location: /usr/lib/python3.5/shutil.py in copystat, line
> 195
> Python Executable: /usr/bin/python3
> Python Version: 3.5.2
>
> Environment:
>
> Request Method: POST
> Request URL: http://localhost:8000/orders/service/vpn/5/
>
> Django Version: 1.11
> Python Version: 3.5.2
> Installed Applications:
> ['django.contrib.auth',
> 'django.contrib.contenttypes',
> 'django.contrib.sessions',
> 'django.contrib.sites',
> 'django.contrib.messages',
> 'django.contrib.staticfiles',
> 'impersonate',
> 'stronghold',
> 'django.contrib.admin',
> 'django.contrib.admindocs',
> 'ajax_select',
> 'django_object_actions',
> 'ckeditor',
> 'mail_templated',
> 'administrative',
> 'changes',
> 'decommission',
> 'ecm',
> 'feedback',
> 'file_manager',
> 'gunicorn',
> 'orders',
> 'old_net_chg_req',
> 'server_request',
> 'security',
> 'shared',
> 'system',
> 'utilities',
> 'downtime',
> 'debug_toolbar']
> Installed Middleware:
> ('django.middleware.security.SecurityMiddleware',
> 'django.contrib.sessions.middleware.SessionMiddleware',
> 'django.contrib.auth.middleware.AuthenticationMiddleware',
> 'shared.middleware.CustomDowntimeMiddleware',
> 'stronghold.middleware.LoginRequiredMiddleware',
> 'django.middleware.common.CommonMiddleware',
> 'django.middleware.csrf.CsrfViewMiddleware',
> 'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
> 'shared.middleware.GlobalRequestMiddleware',
> 'shared.middleware.UserTracebackMiddleware',
> 'django.contrib.messages.middleware.MessageMiddleware',
> 'impersonate.middleware.ImpersonateMiddleware',
> 'django.middleware.clickjacking.XFrameOptionsMiddleware',
> 'debug_toolbar.middleware.DebugToolbarMiddleware')
>
>
> Traceback:
>
> File "/usr/local/lib/python3.5/dist-
> packages/django/core/handlers/exception.py" in inner
> 41. response = get_response(request)
>
> File "/usr/local/lib/python3.5/dist-
> packages/django/core/handlers/base.py" in _legacy_get_response
> 249. response = self._get_response(request)
>
> File "/usr/local/lib/python3.5/dist-
> packages/django/core/handlers/base.py" in _get_response
> 187. response = self.process_exception_by_middleware(e,
> request)
>
> File "/usr/local/lib/python3.5/dist-
> packages/django/core/handlers/base.py" in _get_response
> 185. response = wrapped_callback(request,
> *callback_args, **callback_kwargs)
>
> File "/vagrant/orders/views_services.py" in service_vpn
> 538. service_order_item.save()
>
> File "/vagrant/orders/models.py" in save
> 1150. super(ServiceOrder, self).save(*args, **kwargs)
>
> File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py" in
> save
> 806. force_update=force_update,
> update_fields=update_fields)
>
> File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py" in
> save_base
> 836. updated = self._save_table(raw, cls, force_insert,
> force_update, using, update_fields)
>
> File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py" in
> _save_table
> 900. for f in non_pks]
>
> File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py" in
> <listcomp>
> 900. for f in non_pks]
>
> File "/usr/local/lib/python3.5/dist-
> packages/django/db/models/fields/files.py" in pre_save
> 297. file.save(file.name, file.file, save=False)
>
> File "/usr/local/lib/python3.5/dist-
> packages/django/db/models/fields/files.py" in save
> 95. self.name = self.storage.save(name, content,
> max_length=self.field.max_length)
>
> File "/usr/local/lib/python3.5/dist-
> packages/django/core/files/storage.py" in save
> 54. return self._save(name, content)
>
> File "/usr/local/lib/python3.5/dist-
> packages/django/core/files/storage.py" in _save
> 338. file_move_safe(content.temporary_file_path(),
> full_path)
>
> File "/usr/local/lib/python3.5/dist-packages/django/core/files/move.py"
> in file_move_safe
> 70. copystat(old_file_name, new_file_name)
>
> File "/usr/lib/python3.5/shutil.py" in copystat
> 195. follow_symlinks=follow)
>
> Exception Type: PermissionError at /orders/service/vpn/5/
> Exception Value: [Errno 1] Operation not permitted
New description:
I upgraded from DJango 1.10.6 to 1.11 and can no longer use FileField to
upload files larger than 2.5 MB. When an attempt is made to upload a
larger file I get the error below occurs. Please note if I downgrade to
1.10.6 again the upload feature works just fine.
{{{
Django Version: 1.11
Exception Type: PermissionError
Exception Value:
[Errno 1] Operation not permitted
Exception Location: /usr/lib/python3.5/shutil.py in copystat, line 195
Python Executable: /usr/bin/python3
Python Version: 3.5.2
Environment:
Request Method: POST
Request URL: http://localhost:8000/orders/service/vpn/5/
Django Version: 1.11
Python Version: 3.5.2
Installed Applications:
['django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'impersonate',
'stronghold',
'django.contrib.admin',
'django.contrib.admindocs',
'ajax_select',
'django_object_actions',
'ckeditor',
'mail_templated',
'administrative',
'changes',
'decommission',
'ecm',
'feedback',
'file_manager',
'gunicorn',
'orders',
'old_net_chg_req',
'server_request',
'security',
'shared',
'system',
'utilities',
'downtime',
'debug_toolbar']
Installed Middleware:
('django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'shared.middleware.CustomDowntimeMiddleware',
'stronghold.middleware.LoginRequiredMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'shared.middleware.GlobalRequestMiddleware',
'shared.middleware.UserTracebackMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'impersonate.middleware.ImpersonateMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
'debug_toolbar.middleware.DebugToolbarMiddleware')
Traceback:
File "/usr/local/lib/python3.5/dist-
packages/django/core/handlers/exception.py" in inner
41. response = get_response(request)
File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py"
in _legacy_get_response
249. response = self._get_response(request)
File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py"
in _get_response
187. response = self.process_exception_by_middleware(e,
request)
File "/usr/local/lib/python3.5/dist-packages/django/core/handlers/base.py"
in _get_response
185. response = wrapped_callback(request,
*callback_args, **callback_kwargs)
File "/vagrant/orders/views_services.py" in service_vpn
538. service_order_item.save()
File "/vagrant/orders/models.py" in save
1150. super(ServiceOrder, self).save(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py" in
save
806. force_update=force_update,
update_fields=update_fields)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py" in
save_base
836. updated = self._save_table(raw, cls, force_insert,
force_update, using, update_fields)
File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py" in
_save_table
900. for f in non_pks]
File "/usr/local/lib/python3.5/dist-packages/django/db/models/base.py" in
<listcomp>
900. for f in non_pks]
File "/usr/local/lib/python3.5/dist-
packages/django/db/models/fields/files.py" in pre_save
297. file.save(file.name, file.file, save=False)
File "/usr/local/lib/python3.5/dist-
packages/django/db/models/fields/files.py" in save
95. self.name = self.storage.save(name, content,
max_length=self.field.max_length)
File "/usr/local/lib/python3.5/dist-packages/django/core/files/storage.py"
in save
54. return self._save(name, content)
File "/usr/local/lib/python3.5/dist-packages/django/core/files/storage.py"
in _save
338. file_move_safe(content.temporary_file_path(),
full_path)
File "/usr/local/lib/python3.5/dist-packages/django/core/files/move.py" in
file_move_safe
70. copystat(old_file_name, new_file_name)
File "/usr/lib/python3.5/shutil.py" in copystat
195. follow_symlinks=follow)
Exception Type: PermissionError at /orders/service/vpn/5/
Exception Value: [Errno 1] Operation not permitted
}}}
--
Comment:
I'm not sure if there's much we can do with the report without a way to
reproduce the problem. If you can
[https://docs.djangoproject.com/en/dev/internals/contributing/triaging-
tickets/#bisecting-a-regression bisect] to determine the commit where the
behavior changed, that would be useful.
--
Ticket URL: <https://code.djangoproject.com/ticket/28170#comment:1>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/070.623a96b3bc31168a6cf47b1b1e35bb16%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.