Projet

Général

Profil

Télécharger (1,12 ko) Statistiques
| Branche: | Tag: | Révision:

root / uauth / urls_utils.py @ master

1
# Decorating URL includes, <https://djangosnippets.org/snippets/2532/>
2

    
3
from django.core.urlresolvers import RegexURLPattern, RegexURLResolver
4

    
5
class DecoratedURLPattern(RegexURLPattern):
6
    def resolve(self, *args, **kwargs):
7
        result = super(DecoratedURLPattern, self).resolve(*args, **kwargs)
8
        if result:
9
            result.func = self._decorate_with(result.func)
10
        return result
11

    
12
class DecoratedRegexURLResolver(RegexURLResolver):
13
    def resolve(self, *args, **kwargs):
14
        result = super(DecoratedRegexURLResolver, self).resolve(*args, **kwargs)
15
        if result:
16
            result.func = self._decorate_with(result.func)
17
        return result
18

    
19
def decorated_includes(func, includes, *args, **kwargs):
20
    urlconf_module, app_name, namespace = includes
21

    
22
    for item in urlconf_module:
23
        if isinstance(item, RegexURLPattern):
24
            item.__class__ = DecoratedURLPattern
25
            item._decorate_with = func
26

    
27
        elif isinstance(item, RegexURLResolver):
28
            item.__class__ = DecoratedRegexURLResolver
29
            item._decorate_with = func
30

    
31
    return urlconf_module, app_name, namespace
(8-8/11)