Example #1
0
 def _set_property_value(self, lom_object, property_name, value):
     verify_object_property(lom_object, property_name)
     prop = getattr(lom_object, property_name)
     if property_name in PROPERTY_TYPES.keys():
         if not is_lom_object(value, self.lom_classes):
             raise LomAttributeError('set: no valid object id')
         if not isinstance(value, PROPERTY_TYPES[property_name]):
             raise LomAttributeError('set: type mismatch')
     elif isinstance(prop, (int, bool)):
         if unicode(value) in (u'True', u'False'):
             value = int(unicode(value) == u'True')
         elif not isinstance(value, int):
             raise LomAttributeError('set: invalid value')
     elif isinstance(prop, float):
         if not isinstance(value, (int, float)):
             raise LomAttributeError('set: type mismatch')
         value = float(value)
     elif isinstance(prop, (str, unicode)):
         if not isinstance(value, (str,
          unicode,
          int,
          float)):
             raise LomAttributeError('set: type mismatch')
         value = unicode(value)
     else:
         raise LomAttributeError('set: unsupported property type')
     setattr(lom_object, property_name, value)
 def _set_property_value(self, lom_object, property_name, value):
     verify_object_property(lom_object, property_name)
     prop = getattr(lom_object, property_name)
     if property_name in PROPERTY_TYPES.keys():
         if not is_lom_object(value, self.lom_classes):
             raise LomAttributeError('set: no valid object id')
         if not isinstance(value, PROPERTY_TYPES[property_name]):
             raise LomAttributeError('set: type mismatch')
     elif isinstance(prop, (int, bool)):
         if unicode(value) in (u'True', u'False'):
             value = int(unicode(value) == u'True')
         elif not isinstance(value, int):
             raise LomAttributeError('set: invalid value')
     elif isinstance(prop, float):
         if not isinstance(value, (int, float)):
             raise LomAttributeError('set: type mismatch')
         value = float(value)
     elif isinstance(prop, (str, unicode)):
         if not isinstance(value, (str,
          unicode,
          int,
          float)):
             raise LomAttributeError('set: type mismatch')
         value = unicode(value)
     else:
         raise LomAttributeError('set: unsupported property type')
     setattr(lom_object, property_name, value)
Example #3
0
 def _generate_property_info(self, prop_name, lom_object):
     try:
         real_prop = getattr(lom_object, prop_name)
         if not isinstance(real_prop,
                           HIDDEN_TYPES) and not is_class(real_prop):
             prop_type = real_prop.__class__.__name__
             if prop_name in TUPLE_TYPES:
                 type_name = TUPLE_TYPES[prop_name].__name__
                 self._lists_of_children.append((prop_name, type_name))
             elif prop_name in PROPERTY_TYPES.keys():
                 type_name = (real_prop.__class__ if real_prop != None else
                              PROPERTY_TYPES[prop_name]).__name__
                 self._children.append((prop_name, type_name))
             elif prop_name == 'canonical_parent':
                 if real_prop != None:
                     self._children.append((prop_name, prop_type))
             elif callable(real_prop):
                 if not prop_name.endswith('_listener'):
                     self._functions.append((prop_name, ))
             elif prop_type not in ('type', 'Enum'):
                 info_type = 'int' if isinstance(real_prop,
                                                 ENUM_TYPES) else prop_type
                 self._properties.append((prop_name, info_type))
     except (AssertionError, RuntimeError):
         pass
    def _generate_property_info(self, prop_name, lom_object, epii_version):
        try:
            real_prop = getattr(lom_object, prop_name)
            if not is_class(real_prop):
                prop_info = get_exposed_property_info(type(lom_object),
                                                      prop_name, epii_version)
                prop_type = real_prop.__class__.__name__
                if prop_info and prop_info.format == MFLPropertyFormats.JSON:
                    self._properties.append((prop_name, 'dict'))
                elif prop_name in TUPLE_TYPES:
                    self._add_list_of_children(prop_name)
                elif prop_name in PROPERTY_TYPES.keys():
                    self._add_child(real_prop, prop_name)
                elif prop_name == 'canonical_parent':
                    if real_prop != None:
                        self._children.append((prop_name, prop_type))
                elif callable(real_prop):
                    if not prop_name.endswith('_listener'):
                        self._functions.append((prop_name, ))
                elif prop_type not in ('type', 'Enum'):
                    info_type = 'int' if isinstance(real_prop,
                                                    ENUM_TYPES) else prop_type
                    self._properties.append((prop_name, info_type))
        except (AssertionError, RuntimeError):
            pass

        return
    def _find_property_object_path(self, lom_object, parent):
        component = None
        for key in PROPERTY_TYPES.keys():
            if isinstance(lom_object, PROPERTY_TYPES[key]):
                if hasattr(parent, key):
                    component = lom_object == getattr(parent, key) and key
                    break

        return component
Example #6
0
    def _find_property_object_path(self, lom_object, parent):
        component = None
        for key in PROPERTY_TYPES.keys():
            if isinstance(lom_object, PROPERTY_TYPES[key]):
                if hasattr(parent, key):
                    component = lom_object == getattr(parent, key) and key
                    break

        return component
 def _generate_property_info(self, prop_name, lom_object):
     try:
         real_prop = getattr(lom_object, prop_name)
         if not is_class(real_prop):
             prop_type = real_prop.__class__.__name__
             if prop_name in TUPLE_TYPES:
                 self._add_list_of_children(prop_name)
             elif prop_name in PROPERTY_TYPES.keys():
                 self._add_child(real_prop, prop_name)
             elif prop_name == 'canonical_parent':
                 if real_prop != None:
                     self._children.append((prop_name, prop_type))
             elif callable(real_prop):
                 if not prop_name.endswith('_listener'):
                     self._functions.append((prop_name,))
             elif prop_type not in ('type', 'Enum'):
                 info_type = 'int' if isinstance(real_prop, ENUM_TYPES) else prop_type
                 self._properties.append((prop_name, info_type))
     except (AssertionError, RuntimeError):
         pass
Example #8
0
 def _set_property_value(self, lom_object, property_name, value):
     verify_object_property(lom_object, property_name, self.epii_version)
     prop = getattr(lom_object, property_name)
     prop_info = get_exposed_property_info(type(lom_object), property_name, self.epii_version)
     if prop_info and prop_info.from_json:
         value = prop_info.from_json(lom_object, value)
         if value is None:
             raise LomAttributeError('set: invalid value')
     elif property_name in PROPERTY_TYPES.keys():
         if not is_lom_object(value, self.lom_classes):
             raise LomAttributeError('set: no valid object id')
         if not isinstance(value, PROPERTY_TYPES[property_name]):
             raise LomAttributeError('set: type mismatch')
     elif isinstance(prop, (int, bool)):
         if unicode(value) in (u'True', u'False'):
             value = int(unicode(value) == u'True')
         elif not isinstance(value, int):
             raise LomAttributeError('set: invalid value')
     elif isinstance(prop, float):
         if not isinstance(value, (int, float)):
             raise LomAttributeError('set: type mismatch')
         value = float(value)
     elif isinstance(prop, (str, unicode)):
         if not isinstance(value, (str,
          unicode,
          int,
          float)):
             raise LomAttributeError('set: type mismatch')
         value = unicode(value)
     elif isinstance(prop, tuple):
         prop_info = get_exposed_property_info(type(lom_object), property_name, self.epii_version)
         if prop_info and prop_info.format == MFLPropertyFormats.JSON:
             package = json.loads(value)
             value = tuple(package[property_name])
         else:
             raise LomAttributeError('set: unsupported property type')
     else:
         raise LomAttributeError('set: unsupported property type')
     setattr(lom_object, property_name, value)