def flat_tree_list(generate_level_names=True): """ Generate a flat page list. Usefull for a html select input, like this: <option value="1">___| about</option> <option value="2">______| features</option> <option value="3">_________| unicode</option> <option value="4">_________| unicode test</option> <option value="5">______| news</option> <option value="6">_________| SVN news</option> """ page_data = Page.objects.values( "id", "parent", "name", "title", "shortcut", "showlinks", ).order_by("position", "name", "id") tree = TreeGenerator(page_data) tree.activate_all() page_list = tree.get_flat_list() if generate_level_names: for page in page_list: page["level_name"] = " %s| %s" % ( "_"*((page["level"]*2)-2), page["name"] ) return page_list
def get_sitemap_tree(request): """ Generate a tree of all pages for the sitemap. """ # Get all pages from the database: sitemap_data = _get_page_data(request) tree = TreeGenerator(sitemap_data) sitemap_tree = tree.get_sitemap_tree() return sitemap_tree
def get_main_menu_tree(request, current_page_id): """ Generate a opened tree dict for the given >current_page_id<. """ # Get all pages from the database: menu_data = _get_page_data(request) # Build the tree: tree = TreeGenerator(menu_data) # Generate the opened tree dict: menu_data = tree.get_menu_tree(current_page_id) return menu_data
def all_pages(self): current_page = self.context["PAGE"] current_page.title = "all pages" current_page_id = current_page.id # page_data = Page.objects.values( # "id", "parent", "shortcut", "name", "title", # "template", "content", "markup" # ).order_by("position") pages = Page.objects.all().order_by("position") page_data = [] for page in pages: content = escape_django_tags(page.content) parent = getattr(page.parent, "id", None) url = page.get_absolute_url() page_data.append({ "id": page.id, "parent": parent, "shortcut": page.shortcut, "name": page.name, "title": page.title, "content": content, "template": page.template.id, "markup": page.markup, "url": url, }) # self.page_msg(page_data) tree = TreeGenerator(page_data) page_list = tree.get_group_list( group_key="template", id=current_page_id )[1:] for page in page_list: content = page["content"] markup_object = page["markup"] content = apply_markup(content, self.context, markup_object) page["content"] = content # self.page_msg(page_list) context = { "page_list": page_list, } self._render_template("all_pages", context)#, debug=True)