from flask_flatpages import FlatPages, pygments_style_defs import flask_flatpages import re from utils import path_depth,pjoin2 from collections import namedtuple FileLists=namedtuple("FileLists", ["list_files", "list_images", "sub_pages", "sub_index_pages", "breadcrumbs"]) class FlatPagesIndex(FlatPages): @staticmethod def get_breadcrumb_paths(path): """ breadcrumbs decompose the path a/b/index -> [a/index a/b/index] """ elements = path.split('/') elements2 = ['index'] for i in range(1,len(elements)): elements2.append(pjoin2(elements[0:i])+u'/index') return elements2 @staticmethod def get_paths(pages): return (p.path for p in pages) @staticmethod def breadcrumbs(page): "Parse a path or the path of a page into breadcrumbs" if type(page) is flask_flatpages.Page: return FlatPagesIndex.get_breadcrumb_paths(page.path) else: return FlatPagesIndex.get_breadcrumb_paths(page) def get_pages(self, paths): if paths is None: raise AttributeError("paths for get_pages can't be None") return (self.get(p) for p in paths) def get_sub_pages(self, path): def is_subpage(path, root): return (path.startswith(root) and # is a subpage ( re.match('.*index',path) is None) and # is no index path_depth(path)