500 Server Error when moderating a message another moderator has handled
Scenario is two moderators looking at the same message. One moderator handles it. If the second moderator then tries to handle it, mailmanclient raises HTTPError with a 404 status, but Postorius doesn't catch this resulting in the 500.
ERROR 2019-04-05 19:41:16,950 exception 20965 140482256910144 Internal Server Error: /mailman3/lists/mailman-developers.python.org/held_messages/moderate
Traceback (most recent call last):
File "/opt/mailman/mm/venv/lib/python3.6/site-packages/django/core/handlers/exception.py", line 35, in inner
response = get_response(request)
File "/opt/mailman/mm/venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 128, in _get_response
response = self.process_exception_by_middleware(e, request)
File "/opt/mailman/mm/venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 126, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/opt/mailman/mm/venv/lib/python3.6/site-packages/django/views/decorators/http.py", line 40, in inner
return func(request, *args, **kwargs)
File "/opt/mailman/mm/venv/lib/python3.6/site-packages/django/contrib/auth/decorators.py", line 21, in _wrapped_view
return view_func(request, *args, **kwargs)
File "/opt/mailman/mm/venv/lib/python3.6/site-packages/postorius-1.2.5-py3.6.egg/postorius/auth/decorators.py", line 58, in wrapper
return fn(*args, **kwargs)
File "/opt/mailman/mm/venv/lib/python3.6/site-packages/postorius-1.2.5-py3.6.egg/postorius/views/list.py", line 532, in moderate_held_message
mailing_list.accept_message(msg.request_id)
File "/opt/mailman/mm/venv/lib/python3.6/site-packages/mailmanclient-3.2.3a1-py3.6.egg/mailmanclient/restbase/base.py", line 119, in __getattr__
return self._get(name)
File "/opt/mailman/mm/venv/lib/python3.6/site-packages/mailmanclient-3.2.3a1-py3.6.egg/mailmanclient/restbase/base.py", line 85, in _get
return self.rest_data.get(key)
File "/opt/mailman/mm/venv/lib/python3.6/site-packages/mailmanclient-3.2.3a1-py3.6.egg/mailmanclient/restbase/base.py", line 74, in rest_data
response, content = self._connection.call(self._url)
File "/opt/mailman/mm/venv/lib/python3.6/site-packages/mailmanclient-3.2.3a1-py3.6.egg/mailmanclient/restbase/connection.py", line 102, in call
response.content, response, None)
urllib.error.HTTPError: HTTP Error 404: b'{"title": "404 Not Found", "description": "404 Not Found"}'
Postorius should catch the 404 and report a meaningful message to the moderator.