Introduce new settings: - ACCOUNT_HOME_URL, used by 'Site name' link on templates. - ACCOUNT_DETAILS_URL, used on templates when user is connected. 'username' is registered as extra_data too for Clipper provider. Template tag 'get_accounts_by_providers' is cleaner. Remove useless account/settings view. Its content should be displayed by some profile view. SOCIALACCOUNT_ENABLED settings (of allauth package) doesn't work well. Template tag 'is_socialaccount_enabled' provides a better check.
43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
# -*- coding: utf-8 -*-
|
|
from allauth.account.models import EmailAddress
|
|
from allauth.socialaccount.providers.base import ProviderAccount
|
|
|
|
from allauth_cas.providers import CASProvider
|
|
|
|
|
|
class ClipperAccount(ProviderAccount):
|
|
pass
|
|
|
|
|
|
class ClipperProvider(CASProvider):
|
|
id = 'clipper'
|
|
name = 'Clipper'
|
|
account_class = ClipperAccount
|
|
|
|
def extract_email(self, data):
|
|
username, _, _ = data
|
|
return '{}@clipper.ens.fr'.format(username)
|
|
|
|
def extract_common_fields(self, data):
|
|
common = super(ClipperProvider, self).extract_common_fields(data)
|
|
common['email'] = self.extract_email(data)
|
|
return common
|
|
|
|
def extract_email_addresses(self, data):
|
|
email = self.extract_email(data)
|
|
return [
|
|
EmailAddress(
|
|
email=email,
|
|
verified=True,
|
|
primary=True,
|
|
)
|
|
]
|
|
|
|
def extract_extra_data(self, data):
|
|
extra = super(ClipperProvider, self).extract_extra_data(data)
|
|
extra['username'] = data[0]
|
|
extra['email'] = self.extract_email(data)
|
|
return extra
|
|
|
|
|
|
provider_classes = [ClipperProvider]
|