Exemple #1
0
    def included_for(self, obj_or_iterable, parent=None, related=None, **kwargs):
        if not is_iterable(obj_or_iterable):
            obj_or_iterable = [obj_or_iterable]

        pks = [self.fetch_id(obj) for obj in obj_or_iterable]

        include = self.get_include(related=related)
        includes = dict()

        for path in include:
            relationships = self.reverse_relationship_path(path, parent)
            resource = self.api.resource_for(relationships[0].target)
            collection = resource.fetch_collection()
            included_filter = self.included_filter(relationships, pks)

            included = resource.filter_collection(collection, **included_filter)

            objects = includes.setdefault(resource, set())
            includes[resource] = objects.union(set(included))

        result = list()
        for resource, items in includes.items():
            resource.request = self.request or parent.request
            result.extend([(resource, item) for item in items])
        return result
    def serialize_primary_data(self, object_or_iterable, linked=None, **kwargs):
        if linked:
            return self.serialize_linked(object_or_iterable, linked)

        if is_iterable(object_or_iterable):
            return self.serialize_collection(object_or_iterable, **kwargs)
        elif object_or_iterable:
            return self.serialize_object(object_or_iterable, **kwargs)
Exemple #3
0
    def serialize_primary_data(self,
                               object_or_iterable,
                               linked=None,
                               **kwargs):
        if linked:
            return self.serialize_linked(object_or_iterable, linked)

        if is_iterable(object_or_iterable):
            return self.serialize_collection(object_or_iterable, **kwargs)
        elif object_or_iterable:
            return self.serialize_object(object_or_iterable, **kwargs)
Exemple #4
0
    def links_for_document(self, object_or_iterable, linked=None, related=None, **kwargs):
        if linked:
            return self.links_for_linked(object_or_iterable, linked, **kwargs)

        if related:
            return self.links_for_related(object_or_iterable, related, **kwargs)

        if is_iterable(object_or_iterable):
            return self.links_for_collection(object_or_iterable, **kwargs)
        else:
            return self.links_for_object(object_or_iterable, **kwargs)
    def location_for(self, object_or_iterable):
        if not is_iterable(object_or_iterable):
            object_or_iterable = [object_or_iterable]

        pks = list()
        primary_key = self.primary_key()

        for obj in object_or_iterable:
            pk = primary_key.get_from(obj)
            pk = self.serializer.normalize_id(pk)
            pks.append(pk)

        if len(pks) > 1:
            pk = ','.join(pk)
        else:
            pk = pks[0]

        return self.reverse_url(pk=pk)
Exemple #6
0
    def location_for(self, object_or_iterable):
        if not is_iterable(object_or_iterable):
            object_or_iterable = [object_or_iterable]

        pks = list()
        primary_key = self.primary_key()

        for obj in object_or_iterable:
            pk = primary_key.get_from(obj)
            pk = self.serializer.normalize_id(pk)
            pks.append(pk)

        if len(pks) > 1:
            pk = ','.join(pk)
        else:
            pk = pks[0]

        return self.reverse_url(pk=pk)
Exemple #7
0
 def test_object(self):
     self.assertFalse(is_iterable(object()))
Exemple #8
0
 def test_list(self):
     self.assertTrue(is_iterable([]))
Exemple #9
0
 def test_none(self):
     self.assertFalse(is_iterable(None))
Exemple #10
0
 def test_list(self):
     self.assertTrue(is_iterable([]))
Exemple #11
0
 def test_none(self):
     self.assertFalse(is_iterable(None))
Exemple #12
0
 def test_object(self):
     self.assertFalse(is_iterable(object()))