from allauth.account.adapter import DefaultAccountAdapter
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter


class AccountAdapter(DefaultAccountAdapter):
    def is_open_for_signup(self, request):
        return False


class SocialAccountAdapter(DefaultSocialAccountAdapter):
    def is_open_for_signup(self, request, sociallogin):
        # sociallogin.account is a SocialAccount instance.
        # See https://github.com/pennersr/django-allauth/blob/master/allauth/socialaccount/models.py

        if sociallogin.account.provider == 'clipper':
            return True

        # It returns AccountAdapter.is_open_for_signup().
        # See https://github.com/pennersr/django-allauth/blob/master/allauth/socialaccount/adapter.py
        return super().is_open_for_signup(request, sociallogin)