Beispiel #1
0
 def _test_accessors(self, obj):
     names = list(get_domain_class_attribute_names(obj))
     self.assert_equal(list(names),
                       ['id', 'parent', 'children', 'text', 'text_ent',
                        'number', 'date_time', 'parent.text_ent'])
     self.assert_equal(list(get_domain_class_attributes(obj).keys()),
                       names)
     term_attr_name = 'number'
     term_attr = get_domain_class_attribute(obj, term_attr_name)
     self.assert_equal(term_attr.entity_attr, term_attr_name)
     self.assert_true(
                 is_domain_class_terminal_attribute(obj, term_attr_name))
     ent_attr_name = 'parent'
     ent_attr = get_domain_class_attribute(obj, ent_attr_name)
     self.assert_equal(ent_attr.entity_attr, ent_attr_name)
     self.assert_true(
                 is_domain_class_member_attribute(obj, ent_attr_name))
     self.assert_true(
                 is_domain_class_domain_attribute(obj, ent_attr_name))
     agg_attr_name = 'children'
     agg_attr = get_domain_class_attribute(obj, agg_attr_name)
     self.assert_equal(agg_attr.entity_attr, agg_attr_name)
     self.assert_true(
                 is_domain_class_collection_attribute(obj, agg_attr_name))
     self.assert_true(
                 is_domain_class_domain_attribute(obj, agg_attr_name))
     for attr in get_domain_class_terminal_attribute_iterator(obj):
         self.assert_equal(attr.kind, RESOURCE_ATTRIBUTE_KINDS.TERMINAL)
     for attr in get_domain_class_member_attribute_iterator(obj):
         self.assert_equal(attr.kind, RESOURCE_ATTRIBUTE_KINDS.MEMBER)
     for attr in get_domain_class_collection_attribute_iterator(obj):
         self.assert_equal(attr.kind, RESOURCE_ATTRIBUTE_KINDS.COLLECTION)
     for attr in get_domain_class_relationship_attribute_iterator(obj):
         self.assert_true(attr.kind in (RESOURCE_ATTRIBUTE_KINDS.MEMBER,
                                        RESOURCE_ATTRIBUTE_KINDS.COLLECTION))
Beispiel #2
0
    def set_state_data(cls, entity, data):
        """
        Sets the state data for the given entity to the given data.

        This also works for unmanaged entities.
        """
        attr_names = get_domain_class_attribute_names(type(entity))
        nested_items = []
        for attr, new_attr_value in iteritems_(data):
            if not attr.entity_attr in attr_names:
                raise ValueError('Can not set attribute "%s" for entity '
                                 '"%s".' % (attr.entity_attr, entity))
            if '.' in attr.entity_attr:
                nested_items.append((attr, new_attr_value))
                continue
            else:
                setattr(entity, attr.entity_attr, new_attr_value)
        for attr, new_attr_value in nested_items:
            try:
                set_nested_attribute(entity, attr.entity_attr, new_attr_value)
            except AttributeError as exc:
                if not new_attr_value is None:
                    raise exc
Beispiel #3
0
    def set_state_data(cls, entity, data):
        """
        Sets the state data for the given entity to the given data.

        This also works for unmanaged entities.
        """
        attr_names = get_domain_class_attribute_names(type(entity))
        nested_items = []
        for attr, new_attr_value in iteritems_(data):
            if not attr.entity_attr in attr_names:
                raise ValueError('Can not set attribute "%s" for entity '
                                 '"%s".' % (attr.entity_attr, entity))
            if '.' in attr.entity_attr:
                nested_items.append((attr, new_attr_value))
                continue
            else:
                setattr(entity, attr.entity_attr, new_attr_value)
        for attr, new_attr_value in nested_items:
            try:
                set_nested_attribute(entity, attr.entity_attr, new_attr_value)
            except AttributeError as exc:
                if not new_attr_value is None:
                    raise exc