Source code for ripozo.resources.relationships.list_relationship
"""
Contains the list relationship class.
Extends the relationship class slightly.
"""
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
from ripozo.resources.relationships.relationship import Relationship
from ripozo.utilities import get_or_pop
[docs]class ListRelationship(Relationship):
"""
Special case for a list of relationships.
"""
[docs] def construct_resource(self, properties):
"""
Takes a list of properties and returns a generator that
yields Resource instances. These related ResourceBase subclass
will be asked to construct an instance with the keyword argument
properties equal to each item in the list of properties provided to
this function.
:param dict properties: A dictionary of the properties
on the parent model. The list_name provided in the construction
of an instance of this class is used to find the list that will be
iterated over to generate the resources.
:return: A generator that yields the relationships.
:rtype: types.GeneratorType
"""
objects = get_or_pop(properties, self.name, [], pop=self.remove_properties)
resources = []
for obj in objects:
res = self.relation(properties=obj, query_args=self.query_args,
include_relationships=self.embedded)
resources.append(res)
return resources