Page MenuHomePhabricator

Avoid server errors for objects that don't exist
Closed, ResolvedPublic

Description

We're getting server errors when users attempt to navigate to a partner page or other view relating to an object that doesn't exist. For partners the error looks like this:

Traceback:  

File "/venv/lib/python2.7/site-packages/django/core/handlers/exception.py" in inner
  41.             response = get_response(request)

File "/venv/lib/python2.7/site-packages/django/core/handlers/base.py" in _legacy_get_response
  249.             response = self._get_response(request)

File "/venv/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
  187.                 response = self.process_exception_by_middleware(e, request)

File "/venv/lib/python2.7/site-packages/django/core/handlers/base.py" in _get_response
  185.                 response = wrapped_callback(request, *callback_args, **callback_kwargs)

File "/venv/lib/python2.7/site-packages/django/views/generic/base.py" in view
  68.             return self.dispatch(request, *args, **kwargs)

File "/venv/lib/python2.7/site-packages/django/views/generic/base.py" in dispatch
  88.         return handler(request, *args, **kwargs)

File "/app/TWLight/graphs/views.py" in get
  175.         self._write_data(response)

File "/app/TWLight/graphs/views.py" in _write_data
  247.                 partner = Partner.objects.get(pk=pk)

File "/venv/lib/python2.7/site-packages/django/db/models/manager.py" in manager_method
  85.                 return getattr(self.get_queryset(), name)(*args, **kwargs)

File "/venv/lib/python2.7/site-packages/django/db/models/query.py" in get
  380.                 self.model._meta.object_name

Exception Type: DoesNotExist at /csv/app_distribution/777/
Exception Value: Partner matching query does not exist.

We could probably make better use of get_object_or_404 for this.