Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.core.urlresolvers import RegexURLResolver, RegexURLPattern, Resolver404, get_resolver
- __all__ = ('resolve_to_name',)
- def _pattern_resolve_to_name(self, path):
- match = self.regex.search(path)
- if match:
- name = ""
- if self.name:
- name = self.name
- elif hasattr(self, '_callback_str'):
- name = self._callback_str
- else:
- name = "%s.%s" % (self.callback.__module__, self.callback.func_name)
- return name
- def _resolver_resolve_to_name(self, path):
- tried = []
- match = self.regex.search(path)
- if match:
- new_path = path[match.end():]
- for pattern in self.url_patterns:
- try:
- name = _pattern_resolve_to_name(pattern,new_path)
- except Resolver404, e:
- tried.extend([(pattern.regex.pattern + ' ' + t) for t in e.args[0]['tried']])
- else:
- if name:
- return name
- tried.append(pattern.regex.pattern)
- raise Resolver404, {'tried': tried, 'path': new_path}
- def resolve_to_name(path, urlconf=None):
- r = get_resolver(urlconf)
- if isinstance(r,RegexURLPattern):
- return _pattern_resolve_to_name(r,path)
- else:
- return _resolver_resolve_to_name(r,path)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement