Exemplo n.º 1
0
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}
                   )
Exemplo n.º 2
0
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})
Exemplo n.º 3
0
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))