aboutsummaryrefslogtreecommitdiffstats
path: root/brevisurl
diff options
context:
space:
mode:
authorVladimir Gorej2012-05-28 13:24:31 +0200
committerVladimir Gorej2012-05-28 13:24:31 +0200
commit8f8d60f4c538e01d5bc496b0c8327af3dcf28062 (patch)
tree2716edf68c199032f0bfeaf24055298119905460 /brevisurl
parent4bd7b72aa0ca3a09ab99e1a3b41753df81de6af9 (diff)
downloaddjango-brevisurl-8f8d60f4c538e01d5bc496b0c8327af3dcf28062.tar.bz2
First beta release
Diffstat (limited to 'brevisurl')
-rw-r--r--brevisurl/templatetags/brevisurltags.py28
-rw-r--r--brevisurl/tests/templatetags/test_brevisurltags.py15
2 files changed, 39 insertions, 4 deletions
diff --git a/brevisurl/templatetags/brevisurltags.py b/brevisurl/templatetags/brevisurltags.py
index 2d883f0..e9cb847 100644
--- a/brevisurl/templatetags/brevisurltags.py
+++ b/brevisurl/templatetags/brevisurltags.py
@@ -1,11 +1,37 @@
+import urlparse
+
from django import template
+from django.template.defaulttags import URLNode, url
+from django.contrib.sites.models import Site
from brevisurl import shorten_url as shorten_url_util, get_connection
+
register = template.Library()
@register.filter
def shorten_url(original_url):
short_url = shorten_url_util(original_url, connection=get_connection(fail_silently=True))
- return short_url.shortened_url if short_url is not None else original_url \ No newline at end of file
+ return short_url.shortened_url if short_url is not None else original_url
+
+
+# Modified copy of django snippet #1518 (http://djangosnippets.org/snippets/1518/)
+class AbsoluteURLNode(URLNode):
+ def render(self, context):
+ path = super(AbsoluteURLNode, self).render(context)
+ domain = "http://{0}".format(Site.objects.get_current().domain)
+ if self.asvar:
+ context[self.asvar]= urlparse.urljoin(domain, context[self.asvar])
+ return ''
+ else:
+ return urlparse.urljoin(domain, path)
+
+def absurl(parser, token, node_cls=AbsoluteURLNode):
+ """Just like {% url %} but ads the domain of the current site."""
+ node_instance = url(parser, token)
+ return node_cls(view_name=node_instance.view_name,
+ args=node_instance.args,
+ kwargs=node_instance.kwargs,
+ asvar=node_instance.asvar)
+absurl = register.tag(absurl) \ No newline at end of file
diff --git a/brevisurl/tests/templatetags/test_brevisurltags.py b/brevisurl/tests/templatetags/test_brevisurltags.py
index de1ed00..38ccfcc 100644
--- a/brevisurl/tests/templatetags/test_brevisurltags.py
+++ b/brevisurl/tests/templatetags/test_brevisurltags.py
@@ -7,7 +7,7 @@ from brevisurl.models import ShortUrl
class TestShortenUrlTag(TestCase):
- def test_shorten_url_tag(self):
+ def test_shorten_url_filter(self):
original_url = 'http://www.codescale.net/'
url = Template("""
{% load brevisurltags %}
@@ -17,11 +17,20 @@ class TestShortenUrlTag(TestCase):
self.assertEqual(ShortUrl.objects.all()[0].original_url, original_url)
self.assertRegexpMatches(url, URLValidator.regex)
- def test_shorten_url_tag_invalid_url(self):
+ def test_shorten_url_filter_invalid_url(self):
original_url = 'www.codescale.'
url = Template("""
{% load brevisurltags %}
{{ url|shorten_url }}
""").render(Context({'url': original_url})).strip()
self.assertEqual(ShortUrl.objects.all().count(), 0)
- self.assertEqual(url, original_url) \ No newline at end of file
+ self.assertEqual(url, original_url)
+
+ def test_absurl_tag(self):
+ url = Template("""
+ {% load brevisurltags %}
+ {% absurl brevisurl_redirect token='12345' as brevis_url %}
+ {{ brevis_url|shorten_url }}
+ """).render(Context()).strip()
+ self.assertEqual(ShortUrl.objects.all().count(), 1)
+ self.assertRegexpMatches(url, URLValidator.regex) \ No newline at end of file