Login

Template filter implementing the Trac wiki markup language

Author:
simon
Posted:
September 11, 2008
Language:
Python
Version:
1.0
Score:
1 (after 1 ratings)

I don't know how robust or secure this is, but it's working for me so far.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
"""
Usage:

{% load tracwiki %}

{{ object.body|tracwiki }}

# Logic from http://groups.google.com/group/trac-dev/msg/479decac43883dc0
"""

from trac.test import EnvironmentStub, Mock, MockPerm 
from trac.mimeview import Context 
from trac.wiki.formatter import HtmlFormatter 
from trac.web.href import Href

from django.utils.safestring import mark_safe
from django import template
register = template.Library()

env = EnvironmentStub() 
req = Mock(href=Href('/'), abs_href=Href('http://www.example.com/'), 
           authname='anonymous', perm=MockPerm(), args={})
context = Context.from_request(req, 'wiki')

@register.filter
def tracwiki(s):
    return mark_safe(HtmlFormatter(env, context, s).generate())

More like this

  1. Template tag - list punctuation for a list of items by shapiromatron 10 months, 1 week ago
  2. JSONRequestMiddleware adds a .json() method to your HttpRequests by cdcarter 10 months, 2 weeks ago
  3. Serializer factory with Django Rest Framework by julio 1 year, 5 months ago
  4. Image compression before saving the new model / work with JPG, PNG by Schleidens 1 year, 6 months ago
  5. Help text hyperlinks by sa2812 1 year, 6 months ago

Comments

tutuca (on April 23, 2009):

It fails to use the [Image()] macro. But for works flawlessy rendering text

#

albertorcf (on October 21, 2010):

failed to render a wiki link like

[wiki:DoSomeThing do some thing]

change the next line to correct this

context = Context.from_request(req, id='wiki')

#

albertorcf (on October 21, 2010):

or simply remove the parameter:

context = Context.from_request(req)

tested at Trac version 0.12.1

I will see more about the resource parameter to find how improve these wiki links

#

Please login first before commenting.