Example #1
0
    def __init__(
        self,
        _type,
        pagination=None,
        extra_filter_meta=None,
        filterset_class=None,
        *args,
        **kwargs,
    ):

        kwargs.setdefault("args", {})

        filterset_class = filterset_class or _type._meta.filterset_class
        self.filterset_class = get_filterset_class(filterset_class)
        self.filtering_args = get_filtering_args_from_non_model_filterset(
            self.filterset_class)
        kwargs["args"].update(self.filtering_args)

        pagination = pagination or OrderingOnlyArgumentPagination()

        if pagination is not None:
            assert isinstance(pagination, BaseDjangoGraphqlPagination), (
                'You need to pass a valid DjangoGraphqlPagination in DjangoFilterPaginateListField, received "{}".'
            ).format(pagination)

            pagination_kwargs = pagination.to_graphql_fields()

            self.pagination = pagination
            kwargs.update(**pagination_kwargs)

        self.accessor = kwargs.pop('accessor', None)
        super(DjangoFilterPaginateListField,
              self).__init__(_type, *args, **kwargs)
Example #2
0
    def __init__(self, _type, fields=None, extra_filter_meta=None,
                 filterset_class=None, *args, **kwargs):

        if DJANGO_FILTER_INSTALLED:
            _fields = _type._meta.filter_fields
            _model = _type._meta.model

            self.fields = fields or _fields
            meta = dict(model=_model, fields=self.fields)
            if extra_filter_meta:
                meta.update(extra_filter_meta)
            filterset_class = filterset_class or _type._meta.filterset_class
            self.filterset_class = get_filterset_class(filterset_class, **meta)
            self.filtering_args = get_filtering_args_from_filterset(self.filterset_class, _type)
            kwargs.setdefault('args', {})
            kwargs['args'].update(self.filtering_args)

            if 'id' not in kwargs['args'].keys():
                self.filtering_args.update({'id': Argument(ID,
                                                           description='Django object unique identification field')})
                kwargs['args'].update({
                    'id': Argument(ID, description='Django object unique identification field')
                })

        if not kwargs.get('description', None):
            kwargs['description'] = '{} list'.format(
                _type._meta.model.__name__
            )

        super(DjangoFilterListField, self).__init__(
            List(_type), *args, **kwargs
        )
Example #3
0
    def __init__(
        self,
        _type,
        pagination=None,
        fields=None,
        extra_filter_meta=None,
        filterset_class=None,
        *args,
        **kwargs,
    ):

        _fields = _type._meta.filter_fields
        _model = _type._meta.model

        self.fields = fields or _fields
        meta = dict(model=_model, fields=self.fields)
        if extra_filter_meta:
            meta.update(extra_filter_meta)

        filterset_class = filterset_class or _type._meta.filterset_class
        self.filterset_class = get_filterset_class(filterset_class, **meta)
        self.filtering_args = get_filtering_args_from_filterset(
            self.filterset_class, _type)
        kwargs.setdefault("args", {})
        kwargs["args"].update(self.filtering_args)

        if "id" not in kwargs["args"].keys():
            self.filtering_args.update({
                "id":
                Argument(
                    ID,
                    description="Django object unique identification field")
            })
            kwargs["args"].update({
                "id":
                Argument(
                    ID,
                    description="Django object unique identification field")
            })

        pagination = pagination or graphql_api_settings.DEFAULT_PAGINATION_CLASS(
        )

        if pagination is not None:
            assert isinstance(pagination, BaseDjangoGraphqlPagination), (
                'You need to pass a valid DjangoGraphqlPagination in DjangoFilterPaginateListField, received "{}".'
            ).format(pagination)

            pagination_kwargs = pagination.to_graphql_fields()

            self.pagination = pagination
            kwargs.update(**pagination_kwargs)

        if not kwargs.get("description", None):
            kwargs["description"] = "{} list".format(
                _type._meta.model.__name__)

        super(DjangoFilterPaginateListField,
              self).__init__(List(_type), *args, **kwargs)
Example #4
0
    def __init__(self,
                 _type,
                 pagination=None,
                 fields=None,
                 extra_filter_meta=None,
                 filterset_class=None,
                 preprocess_kwargs=None,
                 *args,
                 **kwargs):

        _fields = _type._meta.filter_fields
        _model = _type._meta.model

        self.fields = fields or _fields
        meta = dict(model=_model, fields=self.fields)
        if extra_filter_meta:
            meta.update(extra_filter_meta)
        self.filterset_class = get_filterset_class(filterset_class, **meta)
        self.filtering_args = get_filtering_args_from_filterset(
            self.filterset_class, _type)
        kwargs.setdefault('args', {})
        kwargs['args'].update(self.filtering_args)

        if 'id' not in kwargs['args'].keys():
            self.filtering_args.update({
                'id':
                Argument(
                    ID,
                    description='Django object unique identification field')
            })
            kwargs['args'].update({
                'id':
                Argument(
                    ID,
                    description='Django object unique identification field')
            })

        pagination = pagination or graphql_api_settings.DEFAULT_PAGINATION_CLASS

        if pagination is not None:
            assert isinstance(pagination, BaseDjangoGraphqlPagination), (
                'You need to pass a valid DjangoGraphqlPagination in DjangoFilterPaginateListField, received "{}".'
            ).format(pagination)

            pagination_kwargs = list_pagination_factory(pagination)

            self.pagination = pagination
            kwargs.update(**pagination_kwargs)

        if not kwargs.get('description', None):
            kwargs['description'] = '{} list'.format(
                _type._meta.model.__name__)

        preprocess_kwargs = preprocess_kwargs or kwargs_formatter
        kwargs = preprocess_kwargs(**kwargs)

        super(DjangoFilterPaginateListField,
              self).__init__(List(_type), *args, **kwargs)
    def __init__(self,
                 _type,
                 pagination=None,
                 fields=None,
                 extra_filter_meta=None,
                 filterset_class=None,
                 preprocess_kwargs=None,
                 *args,
                 **kwargs):

        _fields = _type._meta.filter_fields
        _model = _type._meta.model

        self.fields = fields or _fields
        meta = dict(model=_model, fields=self.fields)
        if extra_filter_meta:
            meta.update(extra_filter_meta)
        self.filterset_class = get_filterset_class(filterset_class, **meta)
        self.filtering_args = get_filtering_args_from_filterset(
            self.filterset_class, _type)
        kwargs.setdefault('args', {})
        kwargs['args'].update(self.filtering_args)

        if 'id' not in kwargs['args'].keys():
            self.filtering_args.update({
                'id':
                Argument(
                    ID,
                    description='Django object unique identification field')
            })
            kwargs['args'].update({
                'id':
                Argument(
                    ID,
                    description='Django object unique identification field')
            })

        if pagination:
            pagination_kwargs = list_pagination_factory(pagination)

            self.pagination = pagination
            kwargs.update(**pagination_kwargs)

        if not kwargs.get('description', None):
            kwargs['description'] = '{} list'.format(
                _type._meta.model.__name__)

        preprocess_kwargs = preprocess_kwargs or kwargs_formatter
        kwargs = preprocess_kwargs(**kwargs)

        super(DjangoFilterPaginateListField,
              self).__init__(List(_type), *args, **kwargs)
Example #6
0
    def __init__(
        self,
        _type,
        pagination=None,
        fields=None,
        extra_filter_meta=None,
        filterset_class=None,
        *args,
        **kwargs,
    ):
        '''
        If pagination is None, then we will only allow Ordering fields.
            - The page size will respect the settings.
            - Client will not be able to add pagination params
        '''
        _fields = _type._meta.filter_fields
        _model = _type._meta.model

        self.fields = fields or _fields
        meta = dict(model=_model, fields=self.fields)
        if extra_filter_meta:
            meta.update(extra_filter_meta)

        filterset_class = filterset_class or _type._meta.filterset_class
        self.filterset_class = get_filterset_class(filterset_class, **meta)
        self.filtering_args = get_filtering_args_from_filterset(
            self.filterset_class, _type)
        kwargs.setdefault("args", {})
        kwargs["args"].update(self.filtering_args)

        pagination = pagination or OrderingOnlyArgumentPagination()

        if pagination is not None:
            assert isinstance(pagination, BaseDjangoGraphqlPagination), (
                'You need to pass a valid DjangoGraphqlPagination in DjangoFilterPaginateListField, received "{}".'
            ).format(pagination)

            pagination_kwargs = pagination.to_graphql_fields()

            self.pagination = pagination
            kwargs.update(**pagination_kwargs)

        if not kwargs.get("description", None):
            kwargs["description"] = "{} list".format(
                _type._meta.model.__name__)

        # accessor will be used with m2m or reverse_fk fields
        self.accessor = kwargs.pop('accessor', None)
        super(DjangoFilterPaginateListField,
              self).__init__(_type, *args, **kwargs)
    def __init__(self,
                 _type,
                 permission_classes=(),
                 output_type=None,
                 fields=None,
                 extra_filter_meta=None,
                 filterset_class=None,
                 skip_filters=False,
                 *args,
                 **kwargs):
        self.filterset_class = {}
        self.filtering_args = {}

        assert isinstance(
            permission_classes,
            (tuple,
             list)), ("Permissions can only be a `List` of `Tuple` - ".format(
                 self.__class__.__name__))

        self.permission_classes = permission_classes

        if DJANGO_FILTER_INSTALLED and not skip_filters:
            _fields = _type._meta.filter_fields
            _model = _type._meta.model

            self.fields = fields or _fields
            meta = dict(model=_model, fields=self.fields)
            if extra_filter_meta:
                meta.update(extra_filter_meta)
            filterset_class = filterset_class or _type._meta.filterset_class
            self.filterset_class = get_filterset_class(filterset_class, **meta)
            self.filtering_args = get_filtering_args_from_filterset(
                self.filterset_class, _type)
            kwargs.setdefault("args", {})
            kwargs["args"].update(self.filtering_args)

            if "id" not in kwargs["args"].keys():
                kwargs["args"].update({
                    "id":
                    Argument(
                        ID,
                        description="Django object unique identification field"
                    )
                })
        if not kwargs.get("description", None):
            kwargs["description"] = "{} list".format(
                _type._meta.model.__name__)
        self.skip_filters = skip_filters
        super(DjangoBaseListField, self).__init__(output_type or _type, *args,
                                                  **kwargs)
Example #8
0
    def __init__(
        self,
        _type,
        fields=None,
        extra_filter_meta=None,
        filterset_class=None,
        *args,
        **kwargs,
    ):

        if DJANGO_FILTER_INSTALLED:
            _fields = _type._meta.filter_fields
            _model = _type._meta.model

            self.fields = fields or _fields

            meta = dict(model=_model, fields=self.fields)
            if extra_filter_meta:
                meta.update(extra_filter_meta)

            filterset_class = filterset_class or _type._meta.filterset_class
            self.filterset_class = get_filterset_class(filterset_class, **meta)
            self.filtering_args = get_filtering_args_from_filterset(
                self.filterset_class, _type)
            kwargs.setdefault("args", {})
            kwargs["args"].update(self.filtering_args)

            if "id" not in kwargs["args"].keys():
                id_description = "Django object unique identification field"
                self.filtering_args.update(
                    {"id": Argument(ID, description=id_description)})
                kwargs["args"].update(
                    {"id": Argument(ID, description=id_description)})

        if not kwargs.get("description", None):
            kwargs["description"] = "{} list".format(
                _type._meta.model.__name__)

        super(DjangoListObjectField, self).__init__(_type, *args, **kwargs)
Example #9
0
    def __init__(self, _type, pagination=None, fields=None, extra_filter_meta=None,
                 filterset_class=None, *args, **kwargs):

        _fields = _type._meta.filter_fields
        _model = _type._meta.model

        self.fields = fields or _fields
        meta = dict(model=_model, fields=self.fields)
        if extra_filter_meta:
            meta.update(extra_filter_meta)

        filterset_class = filterset_class or _type._meta.filterset_class
        self.filterset_class = get_filterset_class(filterset_class, **meta)
        self.filtering_args = get_filtering_args_from_filterset(self.filterset_class, _type)
        kwargs.setdefault('args', {})
        kwargs['args'].update(self.filtering_args)

        if 'id' not in kwargs['args'].keys():
            self.filtering_args.update({'id': Argument(ID, description='Django object unique identification field')})
            kwargs['args'].update({'id': Argument(ID, description='Django object unique identification field')})

        pagination = pagination or graphql_api_settings.DEFAULT_PAGINATION_CLASS()

        if pagination is not None:
            assert isinstance(pagination, BaseDjangoGraphqlPagination), (
                'You need to pass a valid DjangoGraphqlPagination in DjangoFilterPaginateListField, received "{}".'
            ).format(pagination)

            pagination_kwargs = pagination.to_graphql_fields()

            self.pagination = pagination
            kwargs.update(**pagination_kwargs)

        if not kwargs.get('description', None):
            kwargs['description'] = '{} list'.format(_type._meta.model.__name__)

        super(DjangoFilterPaginateListField, self).__init__(List(_type), *args, **kwargs)
Example #10
0
    def __init__(
        self,
        _type,
        pagination=None,
        fields=None,
        extra_filter_meta=None,
        filterset_class=None,
        *args,
        **kwargs,
    ):

        _fields = _type._meta.filter_fields
        _model = _type._meta.model

        self.fields = fields or _fields
        meta = dict(model=_model, fields=self.fields)
        if extra_filter_meta:
            meta.update(extra_filter_meta)

        filterset_class = filterset_class or _type._meta.filterset_class
        self.filterset_class = get_filterset_class(filterset_class, **meta)
        self.filtering_args = get_filtering_args_from_filterset(
            self.filterset_class, _type)
        kwargs.setdefault("args", {})
        kwargs["args"].update(self.filtering_args)
        """
        # filtering by primary key or id seems unnecessary...
        if "id" not in kwargs["args"].keys():
            self.filtering_args.update(
                {
                    "id": Argument(
                        ID, description="Django object unique identification field"
                    )
                }
            )
            kwargs["args"].update(
                {
                    "id": Argument(
                        ID, description="Django object unique identification field"
                    )
                }
            )
        """

        pagination = pagination or OrderingOnlyArgumentPagination()

        if pagination is not None:
            assert isinstance(pagination, BaseDjangoGraphqlPagination), (
                'You need to pass a valid DjangoGraphqlPagination in DjangoFilterPaginateListField, received "{}".'
            ).format(pagination)

            pagination_kwargs = pagination.to_graphql_fields()

            self.pagination = pagination
            kwargs.update(**pagination_kwargs)

        if not kwargs.get("description", None):
            kwargs["description"] = "{} list".format(
                _type._meta.model.__name__)

        # accessor will be used with m2m or reverse_fk fields
        self.accessor = kwargs.pop('accessor', None)
        super(DjangoFilterPaginateListField,
              self).__init__(_type, *args, **kwargs)