Beispiel #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)
Beispiel #3
0
    def _property_object_from_path(self, path_components):
        prev_component = path_components[0]
        lom_object = get_root_prop(self._external_device, path_components[0])
        for component in path_components[1:]:
            try:
                raise component.isdigit() and (is_object_iterable(lom_object)
                                               or AssertionError)
                if not prev_component in TUPLE_TYPES.keys():
                    raise AssertionError
                    lom_object = lom_object[int(component)]
                else:
                    lom_object = getattr(lom_object, component)
                    if isinstance(lom_object, HIDDEN_TYPES):
                        raise AttributeError
            except IndexError:
                raise LomAttributeError("invalid index of component '%s'" %
                                        prev_component)
            except AttributeError:
                raise LomAttributeError("invalid path component '%s'" %
                                        component)
            else:
                prev_component = component

        if not is_lom_object(lom_object, self._lom_classes):
            raise LomObjectError("component '%s' is not an object" %
                                 prev_component)
        return lom_object
Beispiel #4
0
 def _str_representation_for_object(self, lom_object, mark_ids = True):
     result = ''
     lom_object = self._disambiguate_object(lom_object)
     if is_object_iterable(lom_object):
         result = concatenate_strings(map(self._str_representation_for_object, lom_object))
     elif is_lom_object(lom_object, self.lom_classes):
         result = ('id ' if mark_ids else '') + unicode(self._get_lom_id_by_lom_object(lom_object))
     elif isinstance(lom_object, (int, bool)):
         result = unicode(int(lom_object))
     else:
         result = StringHandler.prepare_outgoing(unicode(lom_object))
     return result
 def _str_representation_for_object(self, lom_object, mark_ids = True):
     result = ''
     lom_object = self._disambiguate_object(lom_object)
     if is_object_iterable(lom_object):
         result = concatenate_strings(map(self._str_representation_for_object, lom_object))
     elif is_lom_object(lom_object, self.lom_classes):
         result = ('id ' if mark_ids else '') + unicode(self._get_lom_id_by_lom_object(lom_object))
     elif isinstance(lom_object, (int, bool)):
         result = unicode(int(lom_object))
     else:
         result = StringHandler.prepare_outgoing(unicode(lom_object))
     return result
Beispiel #6
0
 def _observer_property_message_type(self, prop):
     prop_type = None
     if isinstance(prop, (str, unicode)):
         prop_type = 'obs_string_val'
     elif isinstance(prop, (int, bool)):
         prop_type = 'obs_int_val'
     elif isinstance(prop, float):
         prop_type = 'obs_float_val'
     elif is_object_iterable(prop):
         prop_type = 'obs_list_val'
     elif is_lom_object(prop, self.lom_classes):
         prop_type = 'obs_id_val'
     return prop_type
 def _observer_property_message_type(self, prop):
     prop_type = None
     if isinstance(prop, (str, unicode)):
         prop_type = 'obs_string_val'
     elif isinstance(prop, (int, bool)):
         prop_type = 'obs_int_val'
     elif isinstance(prop, float):
         prop_type = 'obs_float_val'
     elif is_object_iterable(prop):
         prop_type = 'obs_list_val'
     elif is_lom_object(prop, self.lom_classes):
         prop_type = 'obs_id_val'
     return prop_type
 def _str_representation_for_object(self, lom_object, mark_ids=True):
     result = ""
     lom_object = self._disambiguate_object(lom_object)
     if is_object_iterable(lom_object):
         formatter = lambda el: self._str_representation_for_object(el)
         result = concatenate_strings(map(formatter, lom_object))
     elif is_lom_object(lom_object, self.lom_classes):
         result = ("id " if mark_ids else "") + unicode(self._get_lom_id_by_lom_object(lom_object))
     elif isinstance(lom_object, type(False)):
         result = unicode(int(lom_object))
     else:
         result = StringHandler.prepare_outgoing(unicode(lom_object))
     return result
Beispiel #9
0
    def _property_object_from_path(self, path_components):
        prev_component = path_components[0]
        lom_object = get_root_prop(self._external_device, path_components[0])
        for component in path_components[1:]:
            try:
                raise component.isdigit() and (is_object_iterable(lom_object) or AssertionError)
                if not prev_component in TUPLE_TYPES.keys():
                    raise AssertionError
                    lom_object = lom_object[int(component)]
                else:
                    lom_object = getattr(lom_object, component)
            except IndexError:
                raise LomAttributeError("invalid index of component '%s'" % prev_component)
            except AttributeError:
                raise LomAttributeError("invalid path component '%s'" % component)
            else:
                prev_component = component

        if not is_lom_object(lom_object, self._lom_classes):
            raise LomObjectError("component '%s' is not an object" % prev_component)
        return lom_object
Beispiel #10
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)