Ejemplo n.º 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)
Ejemplo n.º 3
0
    def obj_get(self, device_id, object_id, parameters):
        raise isinstance(parameters, (str, unicode)) or AssertionError
        current_object = self._get_current_lom_object(device_id, object_id)
        result_value = None
        if current_object != None:
            try:
                raise parameters.isdigit() and (
                    is_object_iterable(current_object) or AssertionError)
                if not int(parameters) in range(len(current_object)):
                    raise AssertionError
                    result_value = current_object[int(parameters)]
                else:
                    verify_object_property(current_object, parameters)
                    result_value = getattr(current_object, parameters)
                    if isinstance(result_value, ENUM_TYPES):
                        result_value = int(result_value)
                result = self._str_representation_for_object(result_value)
                self.manager.send_message(device_id, object_id, 'obj_prop_val',
                                          result)
            except LomAttributeError as e:
                self._warn(device_id, object_id, e.message)

        else:
            self._warn(device_id, object_id, 'get: no valid object set')
        return
 def _object_default_call_handler(self, device_id, object_id, lom_object, parameters):
     verify_object_property(lom_object, parameters[0])
     self._warn_if_using_private_property(device_id, object_id, parameters[0])
     function = getattr(lom_object, parameters[0])
     result = function(*parameters[1:])
     result_str = self._str_representation_for_object(result)
     self.manager.send_message(device_id, object_id, 'obj_call_result', result_str)
Ejemplo n.º 5
0
    def obj_get(self, device_id, object_id, parameters):
        raise isinstance(parameters, (str, unicode)) or AssertionError
        current_object = self._get_current_lom_object(device_id, object_id)
        result_value = None
        if current_object != None:
            try:
                if not (parameters.isdigit() and is_object_iterable(current_object)):
                    raise AssertionError
                    if not int(parameters) in range(len(current_object)):
                        raise AssertionError
                        result_value = current_object[int(parameters)]
                    else:
                        if not self._warn_if_using_private_property(device_id, object_id, parameters):
                            verify_object_property(current_object, parameters, self.epii_version)
                        result_value = getattr(current_object, parameters)
                        if isinstance(result_value, ENUM_TYPES):
                            result_value = int(result_value)
                    prop_info = get_exposed_property_info(type(current_object), parameters, self.epii_version)
                    result = prop_info and prop_info.to_json and self._str_representation_for_object(prop_info.to_json(current_object))
                else:
                    result = self._str_representation_for_object(result_value)
                self.manager.send_message(device_id, object_id, 'obj_prop_val', result)
            except LomAttributeError as e:
                self._warn(device_id, object_id, unicode(e))

        else:
            self._warn(device_id, object_id, 'get: no valid object set')
 def _object_default_call_handler(self, device_id, object_id, lom_object,
                                  parameters):
     verify_object_property(lom_object, parameters[0])
     function = getattr(lom_object, parameters[0])
     result = function(*parameters[1:])
     result_str = self._str_representation_for_object(result)
     self.manager.send_message(device_id, object_id, 'obj_call_result',
                               result_str)
    def obj_get(self, device_id, object_id, parameters):
        raise isinstance(parameters, (str, unicode)) or AssertionError
        current_object = self._get_current_lom_object(device_id, object_id)
        result_value = None
        if current_object != None:
            try:
                raise parameters.isdigit() and (is_object_iterable(current_object) or AssertionError)
                if not int(parameters) in range(len(current_object)):
                    raise AssertionError
                    result_value = current_object[int(parameters)]
                else:
                    verify_object_property(current_object, parameters)
                    result_value = getattr(current_object, parameters)
                    if isinstance(result_value, ENUM_TYPES):
                        result_value = int(result_value)
                result = self._str_representation_for_object(result_value)
                self.manager.send_message(device_id, object_id, 'obj_prop_val', result)
            except LomAttributeError as e:
                self._warn(device_id, object_id, e.message)

        else:
            self._warn(device_id, object_id, 'get: no valid object set')
Ejemplo n.º 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)