Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)