from rest_framework import serializers from rest_framework.exceptions import ValidationError from rest_framework.fields import BooleanField, NullBooleanField from rest_framework.filters import BaseFilterBackend, OrderingFilter from dynamic_rest.utils import is_truthy from dynamic_rest.conf import settings from dynamic_rest.datastructures import TreeMap from dynamic_rest.fields import DynamicRelationField from dynamic_rest.meta import (get_model_field, is_field_remote, is_model_field, get_related_model) from dynamic_rest.patches import patch_prefetch_one_level from dynamic_rest.prefetch import FastQuery, FastPrefetch from dynamic_rest.related import RelatedObject patch_prefetch_one_level() def has_joins(queryset): """Return True iff. a queryset includes joins. If this is the case, it is possible for the queryset to return duplicate results. """ for join in six.itervalues(queryset.query.alias_map): if join.join_type: return True return False class FilterNode(object):
from django.core.exceptions import ValidationError as InternalValidationError from django.core.exceptions import ImproperlyConfigured from django.db.models import Q, Prefetch from django.utils import six from rest_framework import serializers from rest_framework.exceptions import ValidationError from rest_framework.filters import BaseFilterBackend, OrderingFilter from dynamic_rest.conf import settings from dynamic_rest.datastructures import TreeMap from dynamic_rest.fields import DynamicRelationField from dynamic_rest.meta import get_model_field, is_field_remote, is_model_field from dynamic_rest.patches import patch_prefetch_one_level from dynamic_rest.related import RelatedObject patch_prefetch_one_level() def has_joins(queryset): """Return True iff. a queryset includes joins. If this is the case, it is possible for the queryset to return duplicate results. """ for join in six.itervalues(queryset.query.alias_map): if join.join_type: return True return False class FilterNode(object):