diff options
-rw-r--r-- | askbot/templatetags/extra_filters_jinja.py | 11 | ||||
-rw-r--r-- | askbot/tests/templatefilter_tests.py | 4 |
2 files changed, 9 insertions, 6 deletions
diff --git a/askbot/templatetags/extra_filters_jinja.py b/askbot/templatetags/extra_filters_jinja.py index 62a41895..ba13166b 100644 --- a/askbot/templatetags/extra_filters_jinja.py +++ b/askbot/templatetags/extra_filters_jinja.py @@ -26,16 +26,19 @@ register = coffin_template.Library() @register.filter def absolutize_urls(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) + #temporal fix for bad regex with wysiwyg editor + 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) - img_replacement = '\g<prefix>"%s\g<url>" style="max-width:500px;"' % askbot_settings.APP_URL + img_replacement = '\g<prefix>"%s/\g<url>" style="max-width:500px;"' % askbot_settings.APP_URL replacement = '\g<prefix>"%s\g<url>"' % askbot_settings.APP_URL text = url_re1.sub(img_replacement, text) text = url_re2.sub(img_replacement, text) text = url_re3.sub(replacement, text) - return url_re4.sub(replacement, text) + #temporal fix for bad regex with wysiwyg editor + return url_re4.sub(replacement, text).replace('%s//' % askbot_settings.APP_URL, + '%s/' % askbot_settings.APP_URL) TIMEZONE_STR = pytz.timezone( diff --git a/askbot/tests/templatefilter_tests.py b/askbot/tests/templatefilter_tests.py index 090be956..3902aad4 100644 --- a/askbot/tests/templatefilter_tests.py +++ b/askbot/tests/templatefilter_tests.py @@ -6,12 +6,12 @@ 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'>""" + text = """<img class="junk" src="/some.gif"> <img class="junk" src="../../cat.gif"> <IMG SRC='/some.png'>""" #jinja register.filter decorator works in a weird way output = filters.absolutize_urls[0](text) self.assertEqual( output, - '<img class="junk" src="http://example.com/some.gif" style="max-width:500px;"> <IMG SRC="http://example.com/some.png" style="max-width:500px;">' + '<img class="junk" src="http://example.com/some.gif" style="max-width:500px;"> <img class="junk" src="http://example.com/../../cat.gif" style="max-width:500px;"> <IMG SRC="http://example.com/some.png" style="max-width:500px;">' ) def test_absolutize_anchor_urls(self): text = """<a class="junk" href="/something">link</a> <A HREF='/something'>link</A>""" |