Example #1
0
    def add_node_by_key(self, key, parent_key, title):
        """
            Method adds a new node which is specified by xpath.
            It can be used as validation one for creating element only if exists.
        """
        if self._get_node_by_key(key) is not None:
            logger.info("'{}' is already exists, no need to add it.".format(key))
            return

        parent_node = self._get_node_by_key(parent_key)

        if parent_node is None and parent_key == "":
            logger.debug("'{}' is the root so adding into the root list.".format(key))
            root = create_element(title)
            root.key = key
            self.add_new_root(root)
            return root
        elif not self._node_can_be_updated(parent_node):
            logger.info("The parent is marked as deleted.")
            return create_element(title)
        elif parent_node is None:
            return create_element(title)


        element = create_element(title)
        element.key = key
        element.parentNode = parent_node
        parent_node.append(element)

        self.add_new_node(element)
        return element
Example #2
0
    def insert_node(self, xpath, icon=""):
        """
            Method inserts node by xpath. Used for DB select simulation.
        """
        parent_xpath = get_parent_xpath(xpath)
        parent = self.get_node(parent_xpath)

        if parent is not None and self._is_node_deleted(parent):
            logger.info("The '{}' element is marked as deleted. So ignoring request.".format(xpath))
            return

        for node in self.all_nodes:
            if hasattr(node, "key") and is_grandsire_xpath(xpath, node.key) and self._is_node_deleted(node):
                logger.info("The '{}' element is marked as deleted. So ignoring request.".format(node.key))
                return

        element = create_element(get_tag_name(xpath))
        # element.xpath = xpath
        element.key = xpath
        element.icon = icon

        if parent is None:
            # Has no parent: unlinked one yet or root
            self.roots.append(element)
        else:
            element.parentNode = parent
            parent.append(element)
            element.key = "{}{}".format(xpath, self._get_node_num(element))

        self._link_children(element)
        self._validate_roots()
Example #3
0
    def _add_node_xml_elem(self, node):
        element = create_element(node["title"])
        if not "key" in node:
            node["key"] = randrange(100000)
        if "unselectable" in node:
            element.parentKey = node["unselectable"]

        element.key = node["key"]
        element.icon = node["icon"]
        node.xml_elem = element
        self.all_nodes.append(element)
Example #4
0
    def add_node(self, xpath):
        """
            Method adds a new node which is specified by xpath.
            It can be used as validation one for creating element only if exists.
        """
        if self.get_node(xpath) is not None:
            logger.info("'{}' is already exists, no need to add it.".format(xpath))
            return

        parent_xpath = get_parent_xpath(xpath)
        parent_node = self.get_node(parent_xpath)

        if parent_node is None:
            if is_root(xpath):
                logger.debug("'{}' is the root so adding into the root list.".format(xpath))
                root = create_element(get_tag_name(xpath))
                root.key = xpath
                self.add_new_root(root)
                return root
            else:
                # If the parent haven't created yet.
                logger.error("There is no node for specified xpath: '{}'. Creating it.".format(parent_xpath))
                parent_node = self.add_node(parent_xpath)
                logger.info("Node for specified xpath: '{}' was created it.".format(parent_xpath))

        if parent_node is not None:
            element = create_element(get_tag_name(xpath))
            element.key = xpath
            element.parentNode = parent_node
            parent_node.append(element)

            self.add_new_node(element)
            return element
        else:
            print("s")
        return
Example #5
0
    def insert_node_by_key(self, key, parent_key, title, icon=""):
        if self._get_node_by_key(key) is not None:
            logger.info("The node with key {} is already exists.", key)
            return

        parent = self._get_node_by_key(parent_key)
        element = create_element(title)
        # element.xpath = xpath
        element.key = key
        element.icon = icon
        element.parentKey = parent_key

        if parent is None:
            # Has no parent: unlinked one yet or root
            self.roots.append(element)
        else:
            element.parentNode = parent
            parent.append(element)

        self._link_children_by_key(element)
        self._validate_roots()

        if self._parent_is_deleted(element):
            self._mark_children_as_del(element)