Page MenuHomePhabricator

Fix fatal error in /my/preferences/
Closed, ResolvedPublic

Description

Fatal error when saving preferences in /my/preferences/:

Traceback
Environment:


Request Method: POST
Request URL: http://localhost:8000/my/preferences/

Django Version: 3.0.1
Python Version: 3.8.1
Installed Applications:
('django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.admin',
 'django.contrib.staticfiles',
 'django_comments',
 'django.contrib.messages',
 'tracker',
 'users',
 'api',
 'customcomments',
 'sendfile',
 'snowpenguin.django.recaptcha2',
 'widget_tweaks',
 'social_django',
 'rest_framework',
 'rest_framework.authtoken',
 'rest_framework_swagger',
 'django_filters',
 'background_task',
 'crequest')
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.locale.LocaleMiddleware',
 'django.middleware.common.CommonMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',
 'django.middleware.clickjacking.XFrameOptionsMiddleware',
 'social_django.middleware.SocialAuthExceptionMiddleware',
 'crequest.middleware.CrequestMiddleware',
 'tracker.middleware.WarnIEUsers',
 'tracker.middleware.InvalidOauth']



Traceback (most recent call last):
  File "/home/manuel/Google Code-in/tracker/deploy/pyenv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/home/manuel/Google Code-in/tracker/deploy/pyenv/lib/python3.8/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/manuel/Google Code-in/tracker/deploy/pyenv/lib/python3.8/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/manuel/Google Code-in/tracker/deploy/pyenv/lib/python3.8/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
    return view_func(request, *args, **kwargs)
  File "/home/manuel/Google Code-in/tracker/trackersite/tracker/views.py", line 373, in preferences
    del request.POST[notification_type[0]]
  File "/home/manuel/Google Code-in/tracker/deploy/pyenv/lib/python3.8/site-packages/django/http/request.py", line 473, in __delitem__
    self._assert_mutable()
  File "/home/manuel/Google Code-in/tracker/deploy/pyenv/lib/python3.8/site-packages/django/http/request.py", line 464, in _assert_mutable
    raise AttributeError("This QueryDict instance is immutable")

Exception Type: AttributeError at /my/preferences/
Exception Value: This QueryDict instance is immutable

According to Django's documentation:

The QueryDicts at request.POST and request.GET will be immutable when accessed in a normal request/response cycle. To get a mutable version you need to use QueryDict.copy().

Event Timeline

Change 561803 had a related patch set uploaded (by Alcarazzam; owner: Alcarazzam):
[wikimedia-cz/tracker@master] Fix fatal error in /my/preferences/

https://gerrit.wikimedia.org/r/561803

Change 561803 merged by jenkins-bot:
[wikimedia-cz/tracker@master] Fix fatal error in /my/preferences/

https://gerrit.wikimedia.org/r/561803