def _set_attr(self, obj, attname, val): # tow possible values: # either we get value directly # or a dict if it s an object or a list if isinstance(val, (str, unicode)): pval = xmlparser.ua_type_to_python(val, obj.ua_types[attname]) setattr(obj, attname, pval) else: # so we have either an object or a list... obj2 = getattr(obj, attname) if isinstance( obj2, ua.NodeId ): # NodeId representation does not follow common rules!! for attname2, v2 in val: if attname2 == "Identifier": if hasattr(ua.ObjectIds, v2): obj2 = ua.NodeId(getattr(ua.ObjectIds, v2)) else: obj2 = ua.NodeId.from_string(v2) setattr(obj, attname, obj2) break elif not isinstance(obj2, ua.NodeId) and not hasattr( obj2, "ua_types"): # we probably have a list my_list = [] for vtype, v2 in val: my_list.append(xmlparser.ua_type_to_python(v2, vtype)) setattr(obj, attname, my_list) else: for attname2, v2 in val: self._set_attr(obj2, attname2, v2) setattr(obj, attname, obj2)
def _set_attr(self, obj, attname, val): # tow possible values: # either we get value directly # or a dict if it s an object or a list if isinstance(val, (str, unicode)): pval = xmlparser.ua_type_to_python(val, self._get_val_type(obj, attname)) setattr(obj, attname, pval) else: # so we have either an object or a list... obj2 = getattr(obj, attname) if isinstance(obj2, ua.NodeId): # NodeId representation does not follow common rules!! for attname2, v2 in val: if attname2 == "Identifier": if hasattr(ua.ObjectIds, v2): obj2 = ua.NodeId(getattr(ua.ObjectIds, v2)) else: obj2 = ua.NodeId.from_string(v2) setattr(obj, attname, self._migrate_ns(obj2)) break elif not hasattr(obj2, "ua_types"): # we probably have a list my_list = [] for vtype, v2 in val: my_list.append(xmlparser.ua_type_to_python(v2, vtype)) setattr(obj, attname, my_list) else: for attname2, v2 in val: self._set_attr(obj2, attname2, v2) setattr(obj, attname, obj2)