mozilla / network-pulse-api

API for the Network-Pulse project
Mozilla Public License 2.0
12 stars 22 forks source link

Profile list API returns status 500 #672

Open mmmavis opened 4 years ago

mmmavis commented 4 years ago

Profile list API returns status 500 if name is used as search param. As a result, this breaks the creator field we have on "add new entry" form on the front end site.

Pomax commented 4 years ago

This seems to go wrong in our pulseapi/profiles/views/profiles.py file, on line 182, where we're apparently dealing with results that were already converted to a standard python list, rather than being a true Django queryset.

Internal Server Error: /api/pulse/v2/profiles/
Traceback (most recent call last):
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/handlers/exception.py", line 34, in inner
    response = get_response(request)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/handlers/base.py", line 115, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/core/handlers/base.py", line 113, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/views/decorators/csrf.py", line 54, in wrapped_view
    return view_func(*args, **kwargs)
  File "/app/.heroku/python/lib/python3.7/site-packages/django/views/generic/base.py", line 71, in view
    return self.dispatch(request, *args, **kwargs)
  File "/app/.heroku/python/lib/python3.7/site-packages/rest_framework/views.py", line 505, in dispatch
    response = self.handle_exception(exc)
  File "/app/.heroku/python/lib/python3.7/site-packages/rest_framework/views.py", line 465, in handle_exception
    self.raise_uncaught_exception(exc)
  File "/app/.heroku/python/lib/python3.7/site-packages/rest_framework/views.py", line 476, in raise_uncaught_exception
    raise exc
  File "/app/.heroku/python/lib/python3.7/site-packages/rest_framework/views.py", line 502, in dispatch
    response = handler(request, *args, **kwargs)
  File "/app/.heroku/python/lib/python3.7/site-packages/rest_framework/generics.py", line 199, in get
    return self.list(request, *args, **kwargs)
  File "/app/.heroku/python/lib/python3.7/site-packages/rest_framework/mixins.py", line 38, in list
    queryset = self.filter_queryset(self.get_queryset())
  File "/app/.heroku/python/lib/python3.7/site-packages/rest_framework/generics.py", line 150, in filter_queryset
    queryset = backend().filter_queryset(self.request, queryset, self)
  File "/app/.heroku/python/lib/python3.7/site-packages/django_filters/rest_framework/backends.py", line 96, in filter_queryset
    return filterset.qs
  File "/app/pulseapi/profiles/views/profiles.py", line 182, in qs
    qs = super(ProfileCustomFilter, self).qs
  File "/app/.heroku/python/lib/python3.7/site-packages/django_filters/filterset.py", line 237, in qs
    qs = self.filter_queryset(qs)
  File "/app/.heroku/python/lib/python3.7/site-packages/django_filters/filterset.py", line 227, in filter_queryset
    % (type(self).__name__, name, type(queryset).__name__)
AssertionError: Expected 'ProfileCustomFilter.name' to return a QuerySet, but got a list instead.
Pomax commented 3 years ago

@benhohner old bug, but probably still worth fixing?

benhohner commented 3 years ago

@Pomax if it's a fairly quick fix, yep