23 lines
745 B
Python
23 lines
745 B
Python
import sys
|
|
|
|
|
|
def import_attribute(import_path, exception_handler=None):
|
|
from django.utils.importlib import import_module
|
|
module_name, object_name = import_path.rsplit('.', 1)
|
|
try:
|
|
module = import_module(module_name)
|
|
except: # pragma: no cover
|
|
if callable(exception_handler):
|
|
exctype, excvalue, tb = sys.exc_info()
|
|
return exception_handler(import_path, exctype, excvalue, tb)
|
|
else:
|
|
raise
|
|
try:
|
|
return getattr(module, object_name)
|
|
except: # pragma: no cover
|
|
if callable(exception_handler):
|
|
exctype, excvalue, tb = sys.exc_info()
|
|
return exception_handler(import_path, exctype, excvalue, tb)
|
|
else:
|
|
raise
|