Django

Code

Ticket #3530: urlresolvers_reverse_urlconf_func.diff

File urlresolvers_reverse_urlconf_func.diff, 1.0 kB (added by neoj, 2 years ago)

allows the user to specify a function in settings.py that returns the urlconf to be used in reverse.

  • django/core/urlresolvers.py

    old new  
    291291def resolve(path, urlconf=None): 
    292292    return get_resolver(urlconf).resolve(path) 
    293293 
     294def urlconf_func(): 
     295    from django.conf import settings 
     296    if not hasattr(settings, 'DYNAMIC_URLCONF_FUNCTION'): 
     297        return None 
     298    try: 
     299        mod_name, func_name = get_mod_func(getattr(settings, 'DYNAMIC_URLCONF_FUNCTION')) 
     300        return getattr(__import__(mod_name, {}, {}, ['']), func_name) 
     301    except Exception, e: 
     302        raise ImproperlyConfigured, "Error while importing DYNAMIC_URLCONF_FUNCTION from settings.py: %s" % (e) 
     303urlconf_func = urlconf_func() 
     304 
    294305def reverse(viewname, urlconf=None, args=None, kwargs=None): 
     306    if urlconf_func and urlconf is None: 
     307        urlconf = urlconf_func() 
    295308    args = args or [] 
    296309    kwargs = kwargs or {} 
    297310    return iri_to_uri(u'/' + get_resolver(urlconf).reverse(viewname, *args, **kwargs)) 
    298