2015-02-25 4 views
1

Я попытался это до сих пор:Джанго allauth - Проверка, если поставщик является активным один в моем проекте

Либо сделать SocialApp.objects.get (поставщик = «поставщик разрешенных в приложении») И это скажет мне, действительно ли провайдер существует. Но оговорка здесь в том, что если у меня установлены разные провайдеры в моих настройках, тогда этот запрос не сможет определить, разрешен ли провайдер активным в моем проекте Django.

In [104]: for app in s.INSTALLED_APPS: .....: if 'google' in app: .....: print(app) .....:
allauth.socialaccount.providers.google

Но я хочу сделать это надлежащим образом. Может быть, есть способ сделать это? Я нашел этот модуль в allauth: allauth.socialaccount.providers

Используя это, я могу это сделать:

providers.registry.get_list() 

Что дает мне что-то вроде этого:

dict_values([<allauth.socialaccount.providers.google.provider.GoogleProvider object at 0x7f5803998470>, <allauth.socialaccount.providers.facebook.provider.FacebookProvider object at 0x7f5803998198>]) 

И это почти что я хочу. Но мне нужен список, как ['google', 'facebook'], так что я могу по крайней мере сделать простой:

registered_proviers = ['google', 'facebook'] if provider in registered_providers:

Но было бы Greate, если я могу использовать некоторые allauth функцию, которая была бы как:

if is_registered_provider(provider):

Спасибо.

ответ

2

Вы можете попробовать что-то вроде:

providers.registry.provider_map.keys() 
+0

Возвращения dict_keys ([]) –

+0

Try загрузка первых: providers.registry.load() – cdvv7788

+0

Это работало. Благодарю. Этого достаточно. –