providers.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. class Providers:
  2. def __init__(self):
  3. self._dict = {}
  4. self._list = []
  5. def dict(self):
  6. return self._dict
  7. def list(self):
  8. return self._list
  9. def is_registered(self, provider):
  10. return provider in self._dict
  11. def add(
  12. self, *, provider, name, auth_backend, settings=None, admin_form, admin_template
  13. ):
  14. data = {
  15. "provider": provider,
  16. "name": name,
  17. "auth_backend": auth_backend,
  18. "settings": settings or {},
  19. "admin_form": admin_form,
  20. "admin_template": admin_template,
  21. }
  22. if provider != auth_backend.name:
  23. raise ValueError(
  24. f"Provider's key '{provider}' is not the same as backend's name "
  25. f"attribute: '{auth_backend.name}'"
  26. )
  27. self._dict[provider] = data
  28. self._list.append(data)
  29. self._list = sorted(self._list, key=lambda k: k["name"])
  30. def get_name(self, provider):
  31. return self._dict.get(provider)["name"]
  32. def get_auth_backend(self, provider):
  33. return self._dict.get(provider)["auth_backend"]
  34. def get_settings(self, provider):
  35. return self._dict.get(provider)["settings"]
  36. def get_admin_form_class(self, provider):
  37. return self._dict.get(provider)["admin_form"]
  38. def get_admin_template_name(self, provider):
  39. return self._dict.get(provider)["admin_template"]
  40. providers = Providers()