diff options
Diffstat (limited to 'askbot/utils/html.py')
-rw-r--r-- | askbot/utils/html.py | 20 |
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. |