def add_item(self, path, name, icon=None, url=None, order=None, permission=None, active_regex=None):
        if self.root_item is None:
            self.root_item = MenuItem('ROOT', 'ROOT')
        root_item = self.root_item
        current_path = ''
        for node in path.split('/')[:-1]:
            if not node:
                continue
            current_path = '/' + '{}/{}'.format(current_path, node).strip('/')
            new_root = root_item.child_by_code(node)
            if not new_root:
                new_root = MenuItem(current_path, name=str(node).capitalize())
                root_item.add_child(new_root)
            root_item = new_root
        new_item = MenuItem(path, name, icon, url, order, permission, active_regex)
        current_item = root_item.child_by_code(path.split('/')[-1])
        if current_item:
            current_item.merge(new_item)
        else:
            root_item.add_child(new_item)