summaryrefslogtreecommitdiffstats
path: root/askbot/utils/html.py
diff options
context:
space:
mode:
Diffstat (limited to 'askbot/utils/html.py')
-rw-r--r--askbot/utils/html.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/askbot/utils/html.py b/askbot/utils/html.py
index f6c168fb..2e3c1913 100644
--- a/askbot/utils/html.py
+++ b/askbot/utils/html.py
@@ -1,7 +1,11 @@
"""Utilities for working with HTML."""
import html5lib
from html5lib import sanitizer, serializer, tokenizer, treebuilders, treewalkers
-import re, htmlentitydefs
+import re
+import htmlentitydefs
+from urlparse import urlparse
+from django.core.urlresolvers import reverse
+from django.utils.html import escape
class HTMLSanitizerMixin(sanitizer.HTMLSanitizerMixin):
acceptable_elements = ('a', 'abbr', 'acronym', 'address', 'b', 'big',
@@ -28,10 +32,10 @@ class HTMLSanitizerMixin(sanitizer.HTMLSanitizerMixin):
class HTMLSanitizer(tokenizer.HTMLTokenizer, HTMLSanitizerMixin):
def __init__(self, stream, encoding=None, parseMeta=True, useChardet=True,
- lowercaseElementName=True, lowercaseAttrName=True):
+ lowercaseElementName=True, lowercaseAttrName=True, **kwargs):
tokenizer.HTMLTokenizer.__init__(self, stream, encoding, parseMeta,
useChardet, lowercaseElementName,
- lowercaseAttrName)
+ lowercaseAttrName, **kwargs)
def __iter__(self):
for token in tokenizer.HTMLTokenizer.__iter__(self):
@@ -51,6 +55,16 @@ def sanitize_html(html):
output_generator = s.serialize(stream)
return u''.join(output_generator)
+def site_link(url_name, title):
+ """returns html for the link to the given url
+ todo: may be improved to process url parameters, keyword
+ and other arguments
+ """
+ from askbot.conf import settings
+ base_url = urlparse(settings.APP_URL)
+ url = base_url.scheme + '://' + base_url.netloc + reverse(url_name)
+ return '<a href="%s">%s</a>' % (url, escape(title))
+
def unescape(text):
"""source: http://effbot.org/zone/re-sub.htm#unescape-html
Removes HTML or XML character references and entities from a text string.