diff --git a/allauth/socialaccount/admin.py b/allauth/socialaccount/admin.py index 30fd56e3ee..2233c9574f 100644 --- a/allauth/socialaccount/admin.py +++ b/allauth/socialaccount/admin.py @@ -3,8 +3,8 @@ from allauth import app_settings from allauth.account.adapter import get_adapter - -from .models import SocialAccount, SocialApp, SocialToken +from allauth.socialaccount import providers +from allauth.socialaccount.models import SocialAccount, SocialApp, SocialToken class SocialAppForm(forms.ModelForm): @@ -17,6 +17,12 @@ class Meta: "secret": forms.TextInput(attrs={"size": "100"}), } + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.fields["provider"] = forms.ChoiceField( + choices=providers.registry.as_choices() + ) + class SocialAppAdmin(admin.ModelAdmin): form = SocialAppForm diff --git a/allauth/socialaccount/apps.py b/allauth/socialaccount/apps.py index 26ee42fc3a..edf02870d5 100644 --- a/allauth/socialaccount/apps.py +++ b/allauth/socialaccount/apps.py @@ -8,3 +8,8 @@ class SocialAccountConfig(AppConfig): name = "allauth.socialaccount" verbose_name = _("Social Accounts") default_auto_field = app_settings.DEFAULT_AUTO_FIELD or "django.db.models.AutoField" + + def ready(self): + from allauth.socialaccount.providers import registry + + registry.load() diff --git a/allauth/socialaccount/migrations/0001_initial.py b/allauth/socialaccount/migrations/0001_initial.py index 325539384d..10507a9e14 100644 --- a/allauth/socialaccount/migrations/0001_initial.py +++ b/allauth/socialaccount/migrations/0001_initial.py @@ -5,7 +5,6 @@ from django.db import migrations, models from allauth import app_settings -from allauth.socialaccount.providers import registry class Migration(migrations.Migration): @@ -37,7 +36,6 @@ class Migration(migrations.Migration): models.CharField( max_length=30, verbose_name="provider", - choices=registry.as_choices(), ), ), ( @@ -91,7 +89,6 @@ class Migration(migrations.Migration): models.CharField( max_length=30, verbose_name="provider", - choices=registry.as_choices(), ), ), ("name", models.CharField(max_length=40, verbose_name="name")), diff --git a/allauth/socialaccount/models.py b/allauth/socialaccount/models.py index c46812cdaf..0a958dee67 100644 --- a/allauth/socialaccount/models.py +++ b/allauth/socialaccount/models.py @@ -36,7 +36,6 @@ class SocialApp(models.Model): provider = models.CharField( verbose_name=_("provider"), max_length=30, - choices=providers.registry.as_choices(), ) # For providers that support subproviders, such as OpenID Connect and SAML, # this ID identifies that instance. SocialAccount's originating from app