def removeTemplate(self, name): template = self.include_templates[name] if template.parent: raise RulesetError( tr('It is not possible to delete the "%s" template, included in the "%s" template'), name, template.parent) templates = [template] for template in self.include_templates.itervalues(): if template.parent != name: continue templates.append(template) names = [template.name for template in templates] updates = Updates(Update("ruleset", "update", -1)) action = Action( ActionHandler(updates, self._removeTemplates, names), ActionHandler(updates, self._addTemplates, templates)) action.apply() try: for library in self._libraries.itervalues(): library.removeTemplate(action, name) except: # Rollback action.unapply() raise return self.addAction(action, apply=False)
def addTemplate(self, logger, name): loader_context = LoadRulesetContext(logger) template = self._createTemplate(name, None) # Set template mode updates = Updates(Update("ruleset", "update", -1)) action = Action( ActionHandler(updates, self._setTemplate), ActionHandler(updates, self._unsetTemplate)) action.apply() try: # Register the template names = (template.name,) templates = (template,) add_template = Action( ActionHandler(updates, self._addTemplates, templates), ActionHandler(updates, self._removeTemplates, names)) action.executeAndChain(add_template) # Load the template objects (create actions) self.loadFile(loader_context, "template", name, action=action, from_template=name, ruleset_id=template.identifier) # Unset template flag unset = Action( ActionHandler(updates, self._unsetTemplate), ActionHandler(updates, self._setTemplate)) action.executeAndChain(unset) except: # Rollback action.unapply() raise return self.addAction(action, apply=False)