Use the namespace from the current url

This commit is contained in:
Tim Watts 2013-09-24 17:55:21 +00:00
parent 57a51f790b
commit 3a529d4af3

View File

@ -4,6 +4,9 @@ Provide reverse functions that return fully qualified URLs
from __future__ import unicode_literals from __future__ import unicode_literals
from django.core.urlresolvers import reverse as django_reverse from django.core.urlresolvers import reverse as django_reverse
from django.utils.functional import lazy from django.utils.functional import lazy
from django.core.urlresolvers import resolve
from django.http import Http404
def reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra): def reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra):
@ -14,7 +17,19 @@ def reverse(viewname, args=None, kwargs=None, request=None, format=None, **extra
if format is not None: if format is not None:
kwargs = kwargs or {} kwargs = kwargs or {}
kwargs['format'] = format kwargs['format'] = format
url = django_reverse(viewname, args=args, kwargs=kwargs, **extra)
try:
namespace=resolve(request.path).namespace
except Http404:
namespace=None
if namespace:
viewname = '{namespace}:{viewname}'.format(namespace=namespace,
viewname=viewname)
url = django_reverse(viewname, args=args, kwargs=kwargs,
#current_app=resolve(request.path).app_name,
**extra)
if request: if request:
return request.build_absolute_uri(url) return request.build_absolute_uri(url)
return url return url