﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
4319	urlresolvers.RegexURLPattern._get_callback doesn't handle ValueError	django@…	Adrian Holovaty	"It seems __import__ raises a ValueError if the module name is empty. This can occur in _get_callback and isn't handled properly:

Using a named URL pattern ""blog-post"" in a permalink-decorated get_absolute_url method causes the exception detailed below.

Switching the name to ""blog.post"" instead fools the reverse functions into allowing it because _get_callback receives a non-empty module name.

Traceback (most recent call last):
File ""d:\python25\Lib\site-packages\django\template\__init__.py"" in render_node
  741. result = node.render(context)
File ""d:\python25\Lib\site-packages\django\template\defaulttags.py"" in render
  125. nodelist.append(node.render(context))
File ""d:\python25\Lib\site-packages\django\template\__init__.py"" in render
  791. output = self.filter_expression.resolve(context)
File ""d:\python25\Lib\site-packages\django\template\__init__.py"" in resolve
  576. obj = resolve_variable(self.var, context)
File ""d:\python25\Lib\site-packages\django\template\__init__.py"" in resolve_variable
  674. current = current()
File ""d:\python25\Lib\site-packages\django\utils\functional.py"" in _curried
  3. return _curried_func(*(args+moreargs), **dict(kwargs, **morekwargs))
File ""d:\python25\Lib\site-packages\django\db\models\base.py"" in get_absolute_url
  453. return settings.ABSOLUTE_URL_OVERRIDES.get('%s.%s' % (opts.app_label, opts.module_name), func)(self)
File ""d:\python25\Lib\site-packages\django\db\models\__init__.py"" in inner
  27. return reverse(bits[0], None, *bits[1:3])
File ""d:\python25\Lib\site-packages\django\core\urlresolvers.py"" in reverse
  251. return '/' + resolver.reverse(viewname, *args, **kwargs)
File ""d:\python25\Lib\site-packages\django\core\urlresolvers.py"" in reverse
  222. return pattern.reverse_helper(lookup_view, *args, **kwargs)
File ""d:\python25\Lib\site-packages\django\core\urlresolvers.py"" in reverse_helper
  233. sub_match = self.reverse(lookup_view, *args, **kwargs)
File ""d:\python25\Lib\site-packages\django\core\urlresolvers.py"" in reverse
  225. elif pattern.callback == lookup_view or pattern.name == lookup_view:
File ""d:\python25\Lib\site-packages\django\core\urlresolvers.py"" in _get_callback
  134. self._callback = getattr(__import__(mod_name, {}, {}, ['']), func_name)

  ValueError at /blog/articles/
  Empty module name"		new	Core (Other)	dev			url resolver _get_callback		Unreviewed	0	0	0	0	0	0
