enabledproviders.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. from .cache import get_socialauth_cache, set_socialauth_cache
  2. from .models import SocialAuthProvider
  3. from .providers import providers
  4. def get_enabled_providers(cache_versions):
  5. data = get_socialauth_cache(cache_versions)
  6. if data is None:
  7. data = get_providers_from_db()
  8. set_socialauth_cache(cache_versions, data)
  9. for provider, options in data.items():
  10. options["auth_backend"] = providers.get_auth_backend(provider)
  11. return data
  12. def get_providers_from_db():
  13. data = {}
  14. for provider in SocialAuthProvider.objects.filter(is_active=True):
  15. data[provider.pk] = {
  16. "pk": provider.pk,
  17. "name": providers.get_name(provider.pk),
  18. "settings": get_provider_settings(provider),
  19. "auth_backend": None,
  20. "button_text": provider.button_text,
  21. "button_color": provider.button_color,
  22. }
  23. return data
  24. def get_provider_settings(provider):
  25. settings = {}
  26. if providers.get_settings(provider.pk):
  27. for key, value in providers.get_settings(provider.pk).items():
  28. settings[key.upper()] = value
  29. if provider.settings:
  30. for key, value in provider.settings.items():
  31. settings[key.upper()] = value
  32. return settings