def tag_list_pages(blog_id, tag_id): user = auth.is_logged_in(request) blog = Blog.load(blog_id) permission = auth.is_blog_member(user, blog) tag = Tag.load(tag_id) return listing(request, tag, tag.pages.order_by(Page.publication_date.desc()), 'blog', 'blog_pages_for_tag', user=user, search_ui='blog_pages_with_tag', search_context=tag_in_blog_search_results, tags_data={'blog':blog} )
def tag_list_pages(blog_id, tag_id): user = auth.is_logged_in(request) blog = Blog.load(blog_id) permission = auth.is_blog_member(user, blog) tag = Tag.load(tag_id) return listing(request, tag, tag.pages.order_by(Page.publication_date.desc()), 'blog', 'blog_pages_for_tag', user=user, search_ui='blog_pages_with_tag', search_context=tag_in_blog_search_results, tags_data={'blog': blog})
def template_preview_core(template_id): ''' UI for generating a preview of a given template ''' from core.models import Page, FileInfo, page_status from core.cms import fileinfo from core.cms import invalidate_cache invalidate_cache() template = Template.load(template_id) # TODO: only rebuild mappings if the dirty bit is set if template.template_type == template_type.index: fi = template.default_mapping.fileinfos test_preview_mapping(fi.count(), template) fi = fi.get() tags = template_tags(blog=template.blog, template=template, fileinfo=fi) elif template.template_type == template_type.page: try: fi = Page.load(int(request.query['use_page'])).fileinfos[0] except (KeyError, TypeError): fi = template.fileinfos test_preview_mapping(fi.count(), template) fi = fi.select().join(Page).where( FileInfo.page == Page.id, Page.blog == template.blog, Page.status == page_status.published, ).order_by(Page.publication_date.desc()).get() tags = template_tags( template=template, page=fi.page, ) elif template.template_type == template_type.include: if template.publishing_mode != publishing_mode.ssi: from core.error import PreviewException raise PreviewException( 'You can only preview server-side includes.') page = template.blog.pages.published.order_by( Page.publication_date.desc()).get() fi = page.fileinfos[0] tags = template_tags( template=template, page=page, ) elif template.template_type == template_type.archive: if 'use_page' in request.query: page_list = [Page.load(int(request.query['use_page']))] elif 'use_category' in request.query: from core.models import Category page_list = Category.load(int( request.query['use_category'])).pages.published.limit(1) elif 'use_tag' in request.query: from core.models import Tag page_list = Tag.load(int( request.query['use_tag'])).pages.published.limit(1) else: page_list = template.blog.pages.published.limit(1) fi = fileinfo.build_archives_fileinfos_by_mappings(template, pages=page_list) test_preview_mapping(len(fi), template) fi = fi[0] archive_pages = fileinfo.generate_archive_context_from_fileinfo( fi.xref.archive_xref, template.blog.pages.published, fi) tags = template_tags(blog=template.blog, archive=archive_pages, archive_context=fi, fileinfo=fi, template=template) elif template.template_type in (template_type.media, template_type.system): from core.error import PreviewException raise PreviewException( 'Template {} is of a type that cannot yet be previewed.'.format( template.for_log)) import time from core.template import tplt tc = time.clock start = tc() tpl_output = tplt(template, tags) end = tc() tpl_output = r'<!-- Produced by template {}. Total render time:{} secs -->{}'.format( template.for_log, end - start, tpl_output) preview_file_path, preview_url = fi.make_preview() from core.cms import queue queue.write_file(tpl_output, template.blog.path, preview_file_path) return ("{}?_={}".format(preview_url, template.modified_date.microsecond))