def OnInstanceCreated(self, created_association): """ Trigger for creations """ device_type_instance_id = created_association.instance_ids["Type"] device_instance_id = created_association.instance_ids["Subject"] if (device_type_instance_id[0] == EnumConfigObjects["C_DEVICE_TYPE"] and device_instance_id[0] == EnumConfigObjects["C_DEVICE"]): helper = Helper(config_header=self.config_header) device_type = helper.GetEntityByInstanceId(device_type_instance_id) device = helper.GetEntityByInstanceId(device_instance_id) channel_cls = self.config_header.GetConfigController(EnumConfigObjects["C_DEVICE_CHANNEL"]) link_cls = self.config_header.GetConfigController(EnumConfigObjects["C_DEVICE_LINK"]) components_mdl = self.config_header.GetConfigController(EnumConfigObjects["M_COMPONENTS"]) types_mdl = self.config_header.GetConfigController(EnumConfigObjects["M_TYPES"]) device["params"] = device_type["params"] helper.SaveEntity(device) groups = helper.NavigateMultiple("M_COMPONENTS", {"Unit" : device_type}, "Part") for group in groups: group_cid = group.GetControllerId() item_controller = None if (group_cid == EnumConfigObjects["C_DEVICE_CHANNEL_GROUP"]): item_controller = channel_cls elif (group_cid == EnumConfigObjects["C_DEVICE_LINK_GROUP"]): item_controller = link_cls if (not item_controller): continue quantity = group["quantity"] for i in range(0, quantity): createGroupItem(helper, device, group, i, quantity) return True
def updateGroupTrigger(helper, group_inst_old, group_inst_new): group_to_inst_cid = { EnumConfigObjects["C_DEVICE_CHANNEL_GROUP"] : EnumConfigObjects["C_DEVICE_CHANNEL"], EnumConfigObjects["C_DEVICE_LINK_GROUP"] : EnumConfigObjects["C_DEVICE_LINK"], } # update_map = {} # for i in range(0, group_inst_new["quantity"]): # update_map[getGroupItemName(group_inst_old["name"], i, group_inst_new["quantity"])] = getGroupItemName(group_inst_new["name"], i, group_inst_new["quantity"]) items_names_old = [] for i in range(0, group_inst_old["quantity"]): items_names_old += [getGroupItemName(group_inst_old["name"], i, group_inst_old["quantity"])] items_names_new = [] for i in range(0, group_inst_new["quantity"]): items_names_new += [getGroupItemName(group_inst_new["name"], i, group_inst_new["quantity"])] group_instances = helper.NavigateMultiple("M_TYPES", {"Type" : group_inst_new}, "Subject") for ginst in group_instances: if (ginst.GetControllerId() not in [EnumConfigObjects["C_DEVICE_CHANNEL"], EnumConfigObjects["C_DEVICE_LINK"]]): continue if (ginst["name"] not in items_names_old): print "Error: Couldn't assign group instance: %s" % ginst.GetInstanceId() continue old_name_index = items_names_old.index(ginst["name"]) if (len(items_names_new) > old_name_index): ginst["name"] = items_names_new[old_name_index] else: helper.DeleteEntity(ginst) helper.SaveEntity(ginst) if (len(items_names_new) > len(items_names_old)): device_type = helper.Navigate("M_COMPONENTS", {"Part" : group_inst_new}, "Unit") devices = helper.NavigateMultiple("M_TYPES", {"Type" : device_type}, "Subject") for device in devices: for i in range(len(items_names_old), len(items_names_new)): createGroupItem(helper, device, group_inst_new, i, len(items_names_new))