summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2011-06-09 04:09:22 -0400
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2011-06-09 04:09:22 -0400
commitf216b563f66cb99f22bb7914072c0526ab882bbc (patch)
tree126886c17d139f8f8c0c54a25ba0aad8c99a360a
parent0ab0073be5a734f98fce70cbd59337a4dbaafb07 (diff)
downloadaskbot-f216b563f66cb99f22bb7914072c0526ab882bbc.tar.gz
askbot-f216b563f66cb99f22bb7914072c0526ab882bbc.tar.bz2
askbot-f216b563f66cb99f22bb7914072c0526ab882bbc.zip
added absolutized urls to images in the instant email alerts
-rw-r--r--askbot/models/__init__.py3
-rw-r--r--askbot/templatetags/extra_filters_jinja.py9
-rw-r--r--askbot/tests/__init__.py1
-rw-r--r--askbot/tests/templatefilter_tests.py14
4 files changed, 26 insertions, 1 deletions
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py
index 1a5295b3..603426f7 100644
--- a/askbot/models/__init__.py
+++ b/askbot/models/__init__.py
@@ -2081,7 +2081,8 @@ def format_instant_notification_email(
)
#todo: remove hardcoded style
else:
- content_preview = post.html
+ from askbot.templatetags.extra_filters_jinja import absolutize_image_urls_func
+ content_preview = absolutize_image_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 8e394345..76b3cf9d 100644
--- a/askbot/templatetags/extra_filters_jinja.py
+++ b/askbot/templatetags/extra_filters_jinja.py
@@ -1,4 +1,5 @@
import datetime
+import re
import time
from coffin import template as coffin_template
from django.core import exceptions as django_exceptions
@@ -17,6 +18,14 @@ from django_countries import settings as countries_settings
register = coffin_template.Library()
+def absolutize_image_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)
+ 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)
+
@register.filter
def country_display_name(country_code):
country_dict = dict(countries.COUNTRIES)
diff --git a/askbot/tests/__init__.py b/askbot/tests/__init__.py
index a2d0bdc0..77989fcb 100644
--- a/askbot/tests/__init__.py
+++ b/askbot/tests/__init__.py
@@ -9,3 +9,4 @@ from askbot.tests.management_command_tests import *
from askbot.tests.search_state_tests import *
from askbot.tests.form_tests import *
from askbot.tests.follow_tests import *
+from askbot.tests.templatefilter_tests import *
diff --git a/askbot/tests/templatefilter_tests.py b/askbot/tests/templatefilter_tests.py
new file mode 100644
index 00000000..c9acb09b
--- /dev/null
+++ b/askbot/tests/templatefilter_tests.py
@@ -0,0 +1,14 @@
+from unittest import TestCase
+from askbot.templatetags import extra_filters_jinja as filters
+from askbot.conf import settings as askbot_settings
+
+class AbsolutizeImageUrlsTests(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)
+ self.assertEqual(
+ output,
+ '<img class="junk" src="http://example.com/some.gif"> <IMG SRC="http://example.com/some.png">'
+ )