utils.py 826 B

12345678910111213141516171819202122232425
  1. import sys
  2. def import_attribute(import_path, exception_handler=None):
  3. try:
  4. from importlib import import_module
  5. except ImportError:
  6. from django.utils.importlib import import_module
  7. module_name, object_name = import_path.rsplit('.', 1)
  8. try:
  9. module = import_module(module_name)
  10. except: # pragma: no cover
  11. if callable(exception_handler):
  12. exctype, excvalue, tb = sys.exc_info()
  13. return exception_handler(import_path, exctype, excvalue, tb)
  14. else:
  15. raise
  16. try:
  17. return getattr(module, object_name)
  18. except: # pragma: no cover
  19. if callable(exception_handler):
  20. exctype, excvalue, tb = sys.exc_info()
  21. return exception_handler(import_path, exctype, excvalue, tb)
  22. else:
  23. raise