'HACK: Instead of filtering by the queryset, we limit the queryset to list only the apps
which are owned by the user as well as any apps they have been given permission to
interact with.'

def list(self, request, *args, **kwargs):

    queryset = (super(AppViewSet, self).get_queryset(**kwargs) | get_objects_for_user(self.request.user, 'api.use_app'))
    instance = self.filter_queryset(queryset)
    page = self.paginate_queryset(instance)
    if (page is not None):
        serializer = self.get_pagination_serializer(page)
    else:
        serializer = self.get_serializer(instance, many=True)
    return Response(serializer.data)
