utils.py 861 B

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