Add coreapi/DRF compatibility
This commit is contained in:
parent
0b1ec0507b
commit
bc359782fd
|
@ -1,4 +1,6 @@
|
|||
|
||||
from __future__ import absolute_import
|
||||
|
||||
import django
|
||||
from django.conf import settings
|
||||
|
||||
|
@ -12,6 +14,13 @@ except ImportError:
|
|||
is_crispy = 'crispy_forms' in settings.INSTALLED_APPS and crispy_forms
|
||||
|
||||
|
||||
# coreapi only compatible with DRF 3.4+
|
||||
try:
|
||||
from rest_framework.compat import coreapi
|
||||
except ImportError:
|
||||
coreapi = None
|
||||
|
||||
|
||||
def remote_field(field):
|
||||
"""
|
||||
https://docs.djangoproject.com/en/1.9/releases/1.9/#field-rel-changes
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
from __future__ import absolute_import
|
||||
|
||||
from django.template import Template, TemplateDoesNotExist, loader
|
||||
from rest_framework.compat import coreapi, template_render
|
||||
from rest_framework.compat import template_render
|
||||
from rest_framework.filters import BaseFilterBackend
|
||||
|
||||
from .. import compat
|
||||
|
@ -94,10 +94,10 @@ class DjangoFilterBackend(BaseFilterBackend):
|
|||
# This is not compatible with widgets where the query param differs from the
|
||||
# filter's attribute name. Notably, this includes `MultiWidget`, where query
|
||||
# params will be of the format `<name>_0`, `<name>_1`, etc...
|
||||
assert coreapi is not None, 'coreapi must be installed to use `get_schema_fields()`'
|
||||
assert compat.coreapi is not None, 'coreapi must be installed to use `get_schema_fields()`'
|
||||
filter_class = self.get_filter_class(view, view.get_queryset())
|
||||
|
||||
return [] if not filter_class else [
|
||||
coreapi.Field(name=field_name, required=False, location='query')
|
||||
compat.coreapi.Field(name=field_name, required=False, location='query')
|
||||
for field_name in filter_class().filters.keys()
|
||||
]
|
||||
|
|
|
@ -16,10 +16,9 @@ except ImportError:
|
|||
from django.core.urlresolvers import reverse
|
||||
|
||||
from rest_framework import generics, serializers, status
|
||||
from rest_framework.compat import coreapi
|
||||
from rest_framework.test import APIRequestFactory
|
||||
|
||||
from django_filters import filters
|
||||
from django_filters import compat, filters
|
||||
from django_filters.rest_framework import DjangoFilterBackend, FilterSet
|
||||
from django_filters.rest_framework import backends
|
||||
|
||||
|
@ -123,7 +122,7 @@ urlpatterns = [
|
|||
]
|
||||
|
||||
|
||||
@skipIf(coreapi is None, 'coreapi must be installed')
|
||||
@skipIf(compat.coreapi is None, 'coreapi must be installed')
|
||||
class GetSchemaFieldsTests(TestCase):
|
||||
def test_fields_with_filter_fields_list(self):
|
||||
backend = DjangoFilterBackend()
|
||||
|
|
Loading…
Reference in New Issue