def _add_to_sitemap_node(self, node, language): """Add the given SitemapNode. This is a recursive method""" # if we have more than 10 of depth there is an infinite loop # in the hierarchy, e.g. A > B > C > A > B > C > ... if node.depth > 10: logging.error("Sitemap is corrupted: infinite loop") return # for each NavigationPages... for navigation_page in node.page.contents[language].navigation: child_node = SitemapNode.from_navigation_page( navigation_page=navigation_page, parent=node) if not navigation_page.page: logging.warning( "Sitemap is corrupted: navigation_page has no page associated" ) continue # if we have an internal NavigationPage, we add it's children if navigation_page.type == "internal" \ and language in navigation_page.page.contents \ and len(navigation_page.page.contents[language].navigation) > 0: # integrity check if child_node.page.pid == node.page.pid: logging.warning( "Sitemap is corrupted: parent and child are the same") continue # recursive call self._add_to_sitemap_node(child_node, language)
def _add_to_sitemap_node(self, node, language): """Add the given SitemapNode. This is a recursive method""" # for each NavigationPages... for navigation_page in node.page.contents[language].navigation: child_node = SitemapNode.from_navigation_page(navigation_page=navigation_page, parent=node) # if we have an internal NavigationPage, we add it's children if navigation_page.type == "internal" \ and language in navigation_page.page.contents \ and len(navigation_page.page.contents[language].navigation) > 0: # integrity check if child_node.page.pid == node.page.pid: raise Exception("Invalid sitemap") # recursive call self._add_to_sitemap_node(child_node, language)