def get(self):
        """
        Handles a GET request.

        http://jsonapi.org/format/#fetching-relationships
        """
        resources = yield from self.db.get_relatives([self.resource], [[self.relname]])
        resources = resources.values()

        included_resources = yield from self.db.get_relatives(
            resources, self.request.japi_include
        )

        # Build the document.
        data = serialize_many(resources, fields=self.request.japi_fields)
        included = serialize_many(
            included_resources.values(), fields=self.request.japi_fields
        )
        meta = OrderedDict()
        links = OrderedDict()

        # Create the response
        self.response.headers["content-type"] = "application/vnd.api+json"
        self.response.status_code = 200
        self.response.body = self.api.dump_json(OrderedDict([
            ("data", data),
            ("included", included),
            ("meta", meta),
            ("links", links),
            ("jsonapi", self.api.jsonapi_object)
        ]))
        return None
Exemple #2
0
    def get(self):
        """
        Handles a GET request.

        http://jsonapi.org/format/#fetching-relationships
        """
        resources = yield from self.db.get_relatives([self.resource],
                                                     [[self.relname]])
        resources = resources.values()

        included_resources = yield from self.db.get_relatives(
            resources, self.request.japi_include)

        # Build the document.
        data = serialize_many(resources, fields=self.request.japi_fields)
        included = serialize_many(included_resources.values(),
                                  fields=self.request.japi_fields)
        meta = OrderedDict()
        links = OrderedDict()

        # Create the response
        self.response.headers["content-type"] = "application/vnd.api+json"
        self.response.status_code = 200
        self.response.body = self.api.dump_json(
            OrderedDict([("data", data), ("included", included),
                         ("meta", meta), ("links", links),
                         ("jsonapi", self.api.jsonapi_object)]))
        return None
    def get(self):
        """
        Handles a GET request. This means to fetch many resourcs from the
        collection and return it.

        http://jsonapi.org/format/#fetching-resources
        """
        # Fetch the requested resources.
        if self.request.japi_paginate:
            offset = self.request.japi_page_offset
            limit = self.request.japi_page_limit
        else:
            offset = self.request.japi_offset
            limit = self.request.japi_limit

        resources = yield from self.db.query(
            self.typename, order=self.request.japi_sort, limit=limit,
            offset=offset, filters=self.request.japi_filters
        )

        # Fetch all related resources, which should be included.
        included_resources = yield from self.db.get_relatives(
            resources, self.request.japi_include
        )

        # Build the response.
        data = serialize_many(resources, fields=self.request.japi_fields)
        included = serialize_many(
            included_resources.values(), fields=self.request.japi_fields
        )
        meta = OrderedDict()
        links = OrderedDict()

        # Add the pagination links, if necessairy.
        if self.request.japi_paginate:
            total_resources = yield from self.db.query_size(
                self.typename, filters=self.request.japi_filters
            )

            pagination = Pagination(self.request, total_resources)
            meta.update(pagination.json_meta)
            links.update(pagination.json_links)

        # Put all together
        self.response.headers["content-type"] = "application/vnd.api+json"
        self.response.status_code = 200
        self.response.body = self.api.dump_json(OrderedDict([
            ("data", data),
            ("included", included),
            ("meta", meta),
            ("links", links),
            ("jsonapi", self.api.jsonapi_object)
        ]))
        return None
Exemple #4
0
    def get(self):
        """
        Handles a GET request. This means to fetch many resourcs from the
        collection and return it.

        http://jsonapi.org/format/#fetching-resources
        """
        # Fetch the requested resources.
        if self.request.japi_paginate:
            offset = self.request.japi_page_offset
            limit = self.request.japi_page_limit
        else:
            offset = self.request.japi_offset
            limit = self.request.japi_limit

        resources = yield from self.db.query(self.typename,
                                             order=self.request.japi_sort,
                                             limit=limit,
                                             offset=offset,
                                             filters=self.request.japi_filters)

        # Fetch all related resources, which should be included.
        included_resources = yield from self.db.get_relatives(
            resources, self.request.japi_include)

        # Build the response.
        data = serialize_many(resources, fields=self.request.japi_fields)
        included = serialize_many(included_resources.values(),
                                  fields=self.request.japi_fields)
        meta = OrderedDict()
        links = OrderedDict()

        # Add the pagination links, if necessairy.
        if self.request.japi_paginate:
            total_resources = yield from self.db.query_size(
                self.typename, filters=self.request.japi_filters)

            pagination = Pagination(self.request, total_resources)
            meta.update(pagination.json_meta)
            links.update(pagination.json_links)

        # Put all together
        self.response.headers["content-type"] = "application/vnd.api+json"
        self.response.status_code = 200
        self.response.body = self.api.dump_json(
            OrderedDict([("data", data), ("included", included),
                         ("meta", meta), ("links", links),
                         ("jsonapi", self.api.jsonapi_object)]))
        return None
    def get(self):
        """
        Handles a GET request.

        http://jsonapi.org/format/#fetching-resources
        """
        # Fetch the included resources.
        included_resources = yield from self.db.get_relatives(
            [self.resource], self.request.japi_include
        )

        # Build the response document.
        serializer = self.api.get_serializer(self.real_typename)
        data = serializer.serialize_resource(
            self.resource, fields=self.request.japi_fields.get(self.typename)
        )

        included = serialize_many(
            included_resources.values(), self.request.japi_fields
        )

        meta = OrderedDict()
        links = OrderedDict()

        # Put all together
        self.response.headers["content-type"] = "application/vnd.api+json"
        self.response.status_code = 200
        self.response.body = self.api.dump_json(OrderedDict([
            ("data", data),
            ("included", included),
            ("meta", meta),
            ("links", links),
            ("jsonapi", self.api.jsonapi_object)
        ]))
        return None
Exemple #6
0
    def get(self):
        """
        Handles a GET request.

        http://jsonapi.org/format/#fetching-resources
        """
        # Fetch the included resources.
        included_resources = yield from self.db.get_relatives(
            [self.resource], self.request.japi_include)

        # Build the response document.
        serializer = self.api.get_serializer(self.real_typename)
        data = serializer.serialize_resource(
            self.resource, fields=self.request.japi_fields.get(self.typename))

        included = serialize_many(included_resources.values(),
                                  self.request.japi_fields)

        meta = OrderedDict()
        links = OrderedDict()

        # Put all together
        self.response.headers["content-type"] = "application/vnd.api+json"
        self.response.status_code = 200
        self.response.body = self.api.dump_json(
            OrderedDict([("data", data), ("included", included),
                         ("meta", meta), ("links", links),
                         ("jsonapi", self.api.jsonapi_object)]))
        return None