Skip to content

Instantly share code, notes, and snippets.

@iurisilvio
Created June 24, 2020 09:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iurisilvio/830a48a34e284a8a7370acadf60eca12 to your computer and use it in GitHub Desktop.
Save iurisilvio/830a48a34e284a8a7370acadf60eca12 to your computer and use it in GitHub Desktop.
Django IoC
In [1]: from django.conf import settings
...: from django.utils.module_loading import import_string
...:
...:
...: class ServiceFactory:
...: def __init__(self, django_setting):
...: self._django_setting = django_setting
...:
...: def __call__(self, import_str=None):
...: if import_str is None:
...: import_str = getattr(settings, self._django_setting)
...: return import_string(import_str)
...:
...:
...: # setting SNS_BACKEND='adapters.sns_adapter.sns'
...: get_sns_service = ServiceFactory('SNS_BACKEND')
...:
In [2]: get_sns_service()
Out[2]: <module 'adapters.sns_adapter.sns' from '/code/adapters/sns_adapter/sns.py'>
In [3]: get_sns_service('adapters.sns_adapter.dummy')
Out[3]: <module 'adapters.sns_adapter.dummy' from '/code/adapters/sns_adapter/dummy.py'>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment