diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2011-06-10 03:44:41 -0400 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2011-06-10 03:44:41 -0400 |
commit | 2a061a70c148081ea03809092421d3be2bcec7ed (patch) | |
tree | ea2e0fa9a742a3d0d260f22ac27ad5b5af396f94 | |
parent | f216b563f66cb99f22bb7914072c0526ab882bbc (diff) | |
download | askbot-2a061a70c148081ea03809092421d3be2bcec7ed.tar.gz askbot-2a061a70c148081ea03809092421d3be2bcec7ed.tar.bz2 askbot-2a061a70c148081ea03809092421d3be2bcec7ed.zip |
added absolutization of relative urls in anchors for the instant email alerts
-rw-r--r-- | askbot/__init__.py | 2 | ||||
-rw-r--r-- | askbot/models/__init__.py | 4 | ||||
-rw-r--r-- | askbot/templatetags/extra_filters_jinja.py | 10 | ||||
-rw-r--r-- | askbot/tests/templatefilter_tests.py | 11 |
4 files changed, 19 insertions, 8 deletions
diff --git a/askbot/__init__.py b/askbot/__init__.py index b0397ee3..5d245db7 100644 --- a/askbot/__init__.py +++ b/askbot/__init__.py @@ -9,7 +9,7 @@ import smtplib import sys import logging -VERSION = (0, 6, 95) +VERSION = (0, 6, 96) #necessary for interoperability of django and coffin try: diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py index 603426f7..74211c23 100644 --- a/askbot/models/__init__.py +++ b/askbot/models/__init__.py @@ -2081,8 +2081,8 @@ def format_instant_notification_email( ) #todo: remove hardcoded style else: - from askbot.templatetags.extra_filters_jinja import absolutize_image_urls_func - content_preview = absolutize_image_urls_func(post.html) + from askbot.templatetags.extra_filters_jinja import absolutize_urls_func + content_preview = absolutize_urls_func(post.html) tag_style = "white-space: nowrap; " \ + "font-size: 11px; color: #333;" \ + "background-color: #EEE;" \ diff --git a/askbot/templatetags/extra_filters_jinja.py b/askbot/templatetags/extra_filters_jinja.py index 76b3cf9d..94bd304c 100644 --- a/askbot/templatetags/extra_filters_jinja.py +++ b/askbot/templatetags/extra_filters_jinja.py @@ -18,13 +18,17 @@ from django_countries import settings as countries_settings register = coffin_template.Library() -def absolutize_image_urls_func(text): +def absolutize_urls_func(text): url_re1 = re.compile(r'(?P<prefix><img[^<]+src=)"(?P<url>/[^"]+)"', re.I) url_re2 = re.compile(r"(?P<prefix><img[^<]+src=)'(?P<url>/[^']+)'", re.I) + url_re3 = re.compile(r'(?P<prefix><a[^<]+href=)"(?P<url>/[^"]+)"', re.I) + url_re4 = re.compile(r"(?P<prefix><a[^<]+href=)'(?P<url>/[^']+)'", re.I) replacement = '\g<prefix>"%s\g<url>"' % askbot_settings.APP_URL text = url_re1.sub(replacement, text) - return url_re2.sub(replacement, text) -absolutize_image_urls = register.filter(absolutize_image_urls_func) + text = url_re2.sub(replacement, text) + text = url_re3.sub(replacement, text) + return url_re4.sub(replacement, text) +absolutize_urls = register.filter(absolutize_urls_func) @register.filter def country_display_name(country_code): diff --git a/askbot/tests/templatefilter_tests.py b/askbot/tests/templatefilter_tests.py index c9acb09b..a82737a4 100644 --- a/askbot/tests/templatefilter_tests.py +++ b/askbot/tests/templatefilter_tests.py @@ -2,13 +2,20 @@ from unittest import TestCase from askbot.templatetags import extra_filters_jinja as filters from askbot.conf import settings as askbot_settings -class AbsolutizeImageUrlsTests(TestCase): +class AbsolutizeUrlsTests(TestCase): def setUp(self): askbot_settings.update('APP_URL', 'http://example.com') def test_absolutize_image_urls(self): text = """<img class="junk" src="/some.gif"> <IMG SRC='/some.png'>""" - output = filters.absolutize_image_urls_func(text) + output = filters.absolutize_urls_func(text) self.assertEqual( output, '<img class="junk" src="http://example.com/some.gif"> <IMG SRC="http://example.com/some.png">' ) + def test_absolutize_anchor_urls(self): + text = """<a class="junk" href="/something">link</a> <A HREF='/something'>link</A>""" + output = filters.absolutize_urls_func(text) + self.assertEqual( + output, + '<a class="junk" href="http://example.com/something">link</a> <A HREF="http://example.com/something">link</A>' + ) |