def createRules(rules): logger.info("Rule creation started...") rulesClass=supermod.rulesType() ruleClass=supermod.ruleType() if len(rules.values) > 0: names = rules['Rule Name'].drop_duplicates().values.tolist() names = [name for name in names if str(name) != 'nan'] modules = rules['Module'].values.tolist() modules = [module for module in modules if str(module) != 'nan'] generatedByGuis = rules['Generated by GUI'].values.tolist() generatedByGuis = [generatedByGui for generatedByGui in generatedByGuis if str(generatedByGui) != 'nan'] # The condition to fill the data with N/A values was wrong (with value: backfill) .The correct one is with ffill. index=rules['Rule Name'].fillna(method="ffill") rules=rules.fillna("") conditionColumns=["Condition Name", "Condition Value", "Condition Field"] actionColumns=["Action Name", "Action Value", "Action Project"] total=conditionColumns total.extend(actionColumns) data=rules[total] data=pd.concat([index, data], axis=1) for name, module, generatedByGui in zip(names, modules, generatedByGuis): ruleObj = ruleClass.factory(name=name, module=module, generatedByGui=generatedByGui, content="") createConditions(ruleObj, data.loc[data['Rule Name']==name]) createActions(ruleObj, data.loc[data['Rule Name']==name]) rulesClass.add_rule(ruleObj) logger.info("Rule created: '%s'" %name) else: logger.info("No rules found!") return rulesClass
def createProject(scObject, productProperties, componentDefinitions, supportedStandards, rules): libName = productProperties['Library Name']['Values'] libRef = productProperties['Library Ref']['Values'] libDesc = productProperties['Library Desc']['Values'] logger.info("Creating library with Name: " + libName + " and Reference: " + libRef) rootClass = supermod.libraryType() udtsClass = supermod.udtsType() dataflowsClass = supermod.dataflowsType() componentDefinitionsClass = supermod.componentDefinitionsType() supportedStandardsClass = supermod.supportedStandardsType() componentsLibraryClass = supermod.componentsLibraryType() rulesClass = supermod.rulesType() categoryComponentsClass = createCategoryComponents(componentDefinitions) componentDefinitionsClass = createComponentDefinitions( componentDefinitions) supportedStandardsClass = createSupportedStandards(supportedStandards) componentsLibraryClass = createComponents(scObject) rulesClass = createRules(rules) rootClass.set_udts(udtsClass) rootClass.set_dataflows(dataflowsClass) rootClass.set_categoryComponents(categoryComponentsClass) rootClass.set_supportedStandards(supportedStandardsClass) rootClass.set_components(componentsLibraryClass) rootClass.set_rules(rulesClass) rootObj = rootClass.factory(name=libName, ref=libRef, revision=1, type_='LIBRARY', status='OPEN', enabled='true', priority=0, tags='', workflowState='', desc=libDesc, udts=udtsClass, dataflows=dataflowsClass, categoryComponents=categoryComponentsClass, componentDefinitions=componentDefinitionsClass, supportedStandards=supportedStandardsClass, components=componentsLibraryClass, rules=rulesClass) return rootObj
def removeRules(rootClass, libProps): #newRootClass = sl.libraryType() rules = rootClass.get_rules() rulesClass = sl.rulesType() if 'rulesToRemove' in libProps.keys(): rulesToRemove = libProps['rulesToRemove'] for rule in rules.get_rule(): found=False for ruleToRemove in rulesToRemove: if rule.name in rulesToRemove[ruleToRemove]: found=True if not found: rulesClass.add_rule(rule) else: logger.info("|--> Rule removed: %s" % rule.name) rootClass.set_rules(rulesClass)
def createRules(rootClass, libProps): ruleClass = sl.ruleType() rules = rootClass.get_rules() rulesClass = sl.rulesType() if 'rulesToCreate' in libProps.keys(): rulesToCreate = libProps['rulesToCreate'] for rule in rulesToCreate: rule = rulesToCreate[rule] ruleObj = ruleClass.factory(name=rule['name'], module=rule['module'], generatedByGui=True, content="") addConditions(ruleObj, rule['conditions']) addActions(ruleObj, rule['actions']) rules.add_rule(ruleObj) logger.info("|--> Rule created: %s" % rule['name']) rootClass.set_rules(rules)