示例#1
0
def apply_markup(raw_content, markup_no, request, escape_django_tags=False):
    """ render markup content to html. """
    page_msg = FileLikeMessages(request, messages.INFO)

    assemble_tags = markup_no not in (MARKUP_HTML, MARKUP_HTML_EDITOR)
    if assemble_tags:
        # cut out every Django tags from content
        assembler = DjangoTagAssembler()
        raw_content2, cut_data = assembler.cut_out(raw_content)
    else:
        raw_content2 = raw_content

    html_content = convert(raw_content2, markup_no, page_msg)

    if assemble_tags:
        # reassembly cut out django tags into text
        if not isinstance(html_content, unicode):
            if settings.DEBUG:
                markup_name = MARKUP_DICT[markup_no]
                page_msg("Info: Markup converter %r doesn't return unicode!" % markup_name)
            html_content = force_unicode(html_content)

        html_content2 = assembler.reassembly(html_content, cut_data)
    else:
        # html "markup" used
        html_content2 = raw_content

    if escape_django_tags:
        html_content2 = escape_django_template_tags(html_content2)

    return mark_safe(html_content2) # turn Django auto-escaping off
示例#2
0
def apply_markup(raw_content, markup_no, request, escape_django_tags=False):
    """ render markup content to html. """
    page_msg = FileLikeMessages(request, messages.INFO)

    assemble_tags = markup_no not in (MARKUP_HTML, MARKUP_HTML_EDITOR)
    if assemble_tags:
        # cut out every Django tags from content
        assembler = DjangoTagAssembler()
        raw_content2, cut_data = assembler.cut_out(raw_content)
    else:
        raw_content2 = raw_content

    html_content = convert(raw_content2, markup_no, page_msg)

    if assemble_tags:
        # reassembly cut out django tags into text
        if not isinstance(html_content, unicode):
            if settings.DEBUG:
                markup_name = MARKUP_DICT[markup_no]
                page_msg("Info: Markup converter %r doesn't return unicode!" %
                         markup_name)
            html_content = force_unicode(html_content)

        html_content2 = assembler.reassembly(html_content, cut_data)
    else:
        # html "markup" used
        html_content2 = raw_content

    if escape_django_tags:
        html_content2 = escape_django_template_tags(html_content2)

    return mark_safe(html_content2)  # turn Django auto-escaping off
示例#3
0
    def get_search_content(self, request):
        """
        Use this content for display search results:
        * render markup content to html without existing django tags
        """
        content = self.get_html(request)

        # remove django tags
        assembler = DjangoTagAssembler()
        content2, cut_data = assembler.cut_out(content)

        return content2
示例#4
0
    def get_search_content(self, request):
        """
        Use this content for display search results:
        * render markup content to html without existing django tags
        """
        content = self.get_html(request)

        # remove django tags
        assembler = DjangoTagAssembler()
        content2, cut_data = assembler.cut_out(content)

        return content2
示例#5
0
def convert_markup(raw_content, source_markup_no, dest_markup_no, request):
    """
    Convert one markup in a other.
    """
    page_msg = FileLikeMessages(request, messages.INFO)

    html_source = source_markup_no in (MARKUP_HTML, MARKUP_HTML_EDITOR)
    html_dest = dest_markup_no in (MARKUP_HTML, MARKUP_HTML_EDITOR)

    if source_markup_no == dest_markup_no or (html_source and html_dest):
        # Nothing to do ;)
        return raw_content

    if not html_dest and dest_markup_no != MARKUP_CREOLE:
        raise NotImplementedError("Converting into %r not supported." %
                                  dest_markup_no)

    if html_source:  # Source markup is HTML
        html_content = raw_content
    else:
        # cut out every Django tags from content
        assembler = DjangoTagAssembler()
        raw_content2, cut_data = assembler.cut_out(raw_content)

        # convert to html
        html_content = convert(raw_content2, source_markup_no, page_msg)

    if html_dest:  # Destination markup is HTML
        new_content = html_content
    else:
        # Skip: if dest_markup_no == MARKUP_CREOLE: - only creole supported here
        from creole import html2creole
        new_content = html2creole(html_content)

    if not html_source:  # Source markup is not HTML
        # reassembly cut out django tags into text
        new_content = assembler.reassembly(new_content, cut_data)

    return new_content
示例#6
0
def convert_markup(raw_content, source_markup_no, dest_markup_no, request):
    """
    Convert one markup in a other.
    """
    page_msg = FileLikeMessages(request, messages.INFO)

    html_source = source_markup_no in (MARKUP_HTML, MARKUP_HTML_EDITOR)
    html_dest = dest_markup_no in (MARKUP_HTML, MARKUP_HTML_EDITOR)

    if source_markup_no == dest_markup_no or (html_source and html_dest):
        # Nothing to do ;)
        return raw_content

    if not html_dest and dest_markup_no != MARKUP_CREOLE:
        raise NotImplementedError("Converting into %r not supported." % dest_markup_no)

    if html_source: # Source markup is HTML
        html_content = raw_content
    else:
        # cut out every Django tags from content
        assembler = DjangoTagAssembler()
        raw_content2, cut_data = assembler.cut_out(raw_content)

        # convert to html
        html_content = convert(raw_content2, source_markup_no, page_msg)

    if html_dest: # Destination markup is HTML
        new_content = html_content
    else:
        # Skip: if dest_markup_no == MARKUP_CREOLE: - only creole supported here
        from creole import html2creole
        new_content = html2creole(html_content)

    if not html_source: # Source markup is not HTML
        # reassembly cut out django tags into text
        new_content = assembler.reassembly(new_content, cut_data)

    return new_content
示例#7
0
                raise
            messages.error(request, "Can't get plugin view: %s" % err)
            continue

        doc = None
        examples = None
        fallback_example = None

        if lucidtag_view.__name__ == "wrapper":
            messages.info(request,
                _("Info: lucidTag %s used a decorator without functools.wraps!") % plugin_name
            )
        else:
            lucidtag_doc = inspect.getdoc(lucidtag_view)
            if lucidtag_doc: # Cutout lucidTag examples from DocString
                assembler = DjangoTagAssembler()
                cut_data = assembler.cut_out(lucidtag_doc)[1]
                examples = cut_data

                for example in examples:
                    if not (
                        example.startswith("{%% lucidTag %s " % plugin_name) or \
                        example.startswith("{%% lucidTag %s." % plugin_name)
                        ):
                        messages.info(request,
                            _("Info: lucidTag %(plugin_name)s has wrong tag example: %(example)r") % {
                                "plugin_name": plugin_name, "example": example
                            }
                        )

                examples = [escape(example) for example in examples]
 def setUp(self):
     self.assembler = DjangoTagAssembler()
class Test_low_level_DjangoTagAssembler(unittest.TestCase, basetest.MarkupTestHelper):
    def setUp(self):
        self.assembler = DjangoTagAssembler()

    def test1(self):
        test_text = self._prepare_text("""
            {% extends "base_generic.html" %}

            {% block title %}
            The page title: {{ section.title }}
            {% endblock %}
            
            <h1>{{ section.title }}</h1>
            
            Don't match {{{ **this** }}} stuff.
            Or {{/image.jpg| **that** }} it's from creole markup!
            
            <h2>
              <a href="{{ story.get_absolute_url }}">
                {{ story.headline|upper }}
              </a>
            </h2>
            <p>{{ story.tease|truncatewords:"100" }}</p>
        """)

        text2, cut_data = self.assembler.cut_out(test_text)
#        pprint(cut_data)
#        print text2
        self.failUnlessEqual(cut_data, ['{% extends "base_generic.html" %}',
             '{% block title %}\nThe page title: {{ section.title }}\n{% endblock %}',
             '{{ section.title }}',
             '{{ story.get_absolute_url }}',
             '{{ story.headline|upper }}',
             '{{ story.tease|truncatewords:"100" }}'
        ])
        self.failUnlessEqual(text2, self._prepare_text("""
            DjangoTag0Assembly

            DjangoTag1Assembly
            
            <h1>DjangoTag2Assembly</h1>
            
            Don't match {{{ **this** }}} stuff.
            Or {{/image.jpg| **that** }} it's from creole markup!
            
            <h2>
              <a href="DjangoTag3Assembly">
                DjangoTag4Assembly
              </a>
            </h2>
            <p>DjangoTag5Assembly</p>
        """))
        text = self.assembler.reassembly(text2, cut_data)
        self.failUnlessEqual(test_text, text)

    def test_multilinepre(self):
        test_text = u'start paragraph\n{{{\none\ntwo\n}}}\nthe end...'
        text2, cut_data = self.assembler.cut_out(test_text)
#        pprint(cut_data)
#        print text2
        self.failUnlessEqual(cut_data, [])
        self.failUnlessEqual(text2, test_text)

    def test_creole_image(self):
        test_text = u'a {{/image.jpg}} {{image.jpeg|text}}...'
        text2, cut_data = self.assembler.cut_out(test_text)
        self.failUnlessEqual(cut_data, [])
        self.failUnlessEqual(text2, test_text)

    def test_creole_image_upcase(self):
        test_text = u'a {{/IMAGE.PNG}}...'
        text2, cut_data = self.assembler.cut_out(test_text)
#        pprint(cut_data)
#        print text2
        self.failUnlessEqual(cut_data, [])
        self.failUnlessEqual(text2, test_text)

    def test_not_a_creole_image(self):
        test_text = u'a {{ variable|filter:"/" }}...'
        text2, cut_data = self.assembler.cut_out(test_text)
        self.failUnlessEqual(cut_data, [u'{{ variable|filter:"/" }}'])
        self.failUnlessEqual(text2, u"a DjangoTag0Assembly...")

    def test_unicode(self):
        input_text = u"äöü {{ test }} äöü"
        text2, cut_data = self.assembler.cut_out(input_text)
        self.failUnlessEqual(cut_data, [u'{{ test }}'])
        self.failUnlessEqual(text2, u"äöü DjangoTag0Assembly äöü")

        text3 = self.assembler.reassembly(text2, cut_data)
        self.failUnlessEqual(text3, input_text)

    def test_escaping(self):
        test_text = "FooDjangoTag0AssemblyBar {{ Tag }} - {% lucidTag auth %}"

        text2, cut_data = self.assembler.cut_out(test_text)
#        pprint(cut_data)
#        print text2

        self.failUnlessEqual(cut_data, ["{{ Tag }}", "{% lucidTag auth %}"])
        self.failUnlessEqual(text2,
            "FooDjangoTagTag0AssemblyBar DjangoTag0Assembly - DjangoTag1Assembly"
        )

        text = self.assembler.reassembly(text2, cut_data)
        self.failUnlessEqual(test_text, text)


    def test_more_than_ten(self):
        test_text = "\n".join(["{{ %i }}" % no for no in xrange(12)])

        text2, cut_data = self.assembler.cut_out(test_text)
#        pprint(cut_data)
#        print text2

        self.failUnlessEqual(cut_data, ["{{ %i }}" % no for no in xrange(12)])
        self.failUnlessEqual(text2,
            "\n".join(["DjangoTag%iAssembly" % no for no in xrange(12)])
        )

        text = self.assembler.reassembly(text2, cut_data)
        self.failUnlessEqual(test_text, text)
 def setUp(self):
     self.assembler = DjangoTagAssembler()
class Test_low_level_DjangoTagAssembler(unittest.TestCase,
                                        basetest.MarkupTestHelper):
    def setUp(self):
        self.assembler = DjangoTagAssembler()

    def test1(self):
        test_text = self._prepare_text("""
            {% extends "base_generic.html" %}

            {% block title %}
            The page title: {{ section.title }}
            {% endblock %}
            
            <h1>{{ section.title }}</h1>
            
            Don't match {{{ **this** }}} stuff.
            Or {{/image.jpg| **that** }} it's from creole markup!
            
            <h2>
              <a href="{{ story.get_absolute_url }}">
                {{ story.headline|upper }}
              </a>
            </h2>
            <p>{{ story.tease|truncatewords:"100" }}</p>
        """)

        text2, cut_data = self.assembler.cut_out(test_text)
        #        pprint(cut_data)
        #        print text2
        self.failUnlessEqual(cut_data, [
            '{% extends "base_generic.html" %}',
            '{% block title %}\nThe page title: {{ section.title }}\n{% endblock %}',
            '{{ section.title }}', '{{ story.get_absolute_url }}',
            '{{ story.headline|upper }}',
            '{{ story.tease|truncatewords:"100" }}'
        ])
        self.failUnlessEqual(
            text2,
            self._prepare_text("""
            DjangoTag0Assembly

            DjangoTag1Assembly
            
            <h1>DjangoTag2Assembly</h1>
            
            Don't match {{{ **this** }}} stuff.
            Or {{/image.jpg| **that** }} it's from creole markup!
            
            <h2>
              <a href="DjangoTag3Assembly">
                DjangoTag4Assembly
              </a>
            </h2>
            <p>DjangoTag5Assembly</p>
        """))
        text = self.assembler.reassembly(text2, cut_data)
        self.failUnlessEqual(test_text, text)

    def test_multilinepre(self):
        test_text = u'start paragraph\n{{{\none\ntwo\n}}}\nthe end...'
        text2, cut_data = self.assembler.cut_out(test_text)
        #        pprint(cut_data)
        #        print text2
        self.failUnlessEqual(cut_data, [])
        self.failUnlessEqual(text2, test_text)

    def test_creole_image(self):
        test_text = u'a {{/image.jpg}} {{image.jpeg|text}}...'
        text2, cut_data = self.assembler.cut_out(test_text)
        self.failUnlessEqual(cut_data, [])
        self.failUnlessEqual(text2, test_text)

    def test_creole_image_upcase(self):
        test_text = u'a {{/IMAGE.PNG}}...'
        text2, cut_data = self.assembler.cut_out(test_text)
        #        pprint(cut_data)
        #        print text2
        self.failUnlessEqual(cut_data, [])
        self.failUnlessEqual(text2, test_text)

    def test_not_a_creole_image(self):
        test_text = u'a {{ variable|filter:"/" }}...'
        text2, cut_data = self.assembler.cut_out(test_text)
        self.failUnlessEqual(cut_data, [u'{{ variable|filter:"/" }}'])
        self.failUnlessEqual(text2, u"a DjangoTag0Assembly...")

    def test_unicode(self):
        input_text = u"äöü {{ test }} äöü"
        text2, cut_data = self.assembler.cut_out(input_text)
        self.failUnlessEqual(cut_data, [u'{{ test }}'])
        self.failUnlessEqual(text2, u"äöü DjangoTag0Assembly äöü")

        text3 = self.assembler.reassembly(text2, cut_data)
        self.failUnlessEqual(text3, input_text)

    def test_escaping(self):
        test_text = "FooDjangoTag0AssemblyBar {{ Tag }} - {% lucidTag auth %}"

        text2, cut_data = self.assembler.cut_out(test_text)
        #        pprint(cut_data)
        #        print text2

        self.failUnlessEqual(cut_data, ["{{ Tag }}", "{% lucidTag auth %}"])
        self.failUnlessEqual(
            text2,
            "FooDjangoTagTag0AssemblyBar DjangoTag0Assembly - DjangoTag1Assembly"
        )

        text = self.assembler.reassembly(text2, cut_data)
        self.failUnlessEqual(test_text, text)

    def test_more_than_ten(self):
        test_text = "\n".join(["{{ %i }}" % no for no in xrange(12)])

        text2, cut_data = self.assembler.cut_out(test_text)
        #        pprint(cut_data)
        #        print text2

        self.failUnlessEqual(cut_data, ["{{ %i }}" % no for no in xrange(12)])
        self.failUnlessEqual(
            text2,
            "\n".join(["DjangoTag%iAssembly" % no for no in xrange(12)]))

        text = self.assembler.reassembly(text2, cut_data)
        self.failUnlessEqual(test_text, text)