Skip to content

Commit

Permalink
Alternative templatetag implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
yakky committed Mar 15, 2015
1 parent aedb1ba commit 5dbcdd2
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 9 deletions.
22 changes: 13 additions & 9 deletions aldryn_apphooks_config/templatetags/apphooks_config_tags.py
Expand Up @@ -18,23 +18,27 @@ def namespace_url(context, view_name, *args, **kwargs):
object for the app_config's namespace. If there is still no namespace found,
this tag will act like the normal {% url ... %} tag.
"""

app_name = ''
config = None
namespace = kwargs.pop('namespace', None)

if not namespace:
namespace, __ = get_app_instance(context['request'])
namespace, config = get_app_instance(context['request'])

if namespace:
namespace += ":"
if config:
app_name = config.cmsapp.app_name + ':'
elif namespace:
app_name = namespace + ':'

if kwargs:
return urlresolvers.reverse(
'{0:s}{1:s}'.format(namespace, view_name),
kwargs=kwargs)
'{0:s}{1:s}'.format(app_name, view_name),
kwargs=kwargs, current_app=namespace)
elif args:
return urlresolvers.reverse(
'{0:s}{1:s}'.format(namespace, view_name),
args=args)
'{0:s}{1:s}'.format(app_name, view_name),
args=args, current_app=namespace)
else:
return urlresolvers.reverse(
'{0:s}{1:s}'.format(namespace, view_name))
'{0:s}{1:s}'.format(app_name, view_name),
current_app=namespace)
12 changes: 12 additions & 0 deletions aldryn_apphooks_config/tests/test_config.py
Expand Up @@ -345,4 +345,16 @@ def test_templatetag(self):
context = RequestContext(request, {'object': article, 'current_app': self.ns_app_2.namespace})
template = Template('{% load apphooks_config_tags %}{% namespace_url "example_list" %}')
response = template.render(context)
self.assertEqual(response, self.page_2.get_absolute_url())

request = self.get_page_request(self.page_2, self.user)
context = RequestContext(request, {'object': article})
template = Template('{% load apphooks_config_tags %}{% namespace_url "example_list" namespace="app2" %}')
response = template.render(context)
self.assertEqual(response, self.page_2.get_absolute_url())

request = self.get_page_request(self.page_3, self.user)
context = RequestContext(request, {'object': article})
template = Template('{% load apphooks_config_tags %}{% namespace_url "example:example_list" %}')
response = template.render(context)
self.assertEqual(response, self.page_2.get_absolute_url())

0 comments on commit 5dbcdd2

Please sign in to comment.