48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
from allauth.account.models import EmailAddress
|
|
from allauth.socialaccount import app_settings
|
|
from allauth.socialaccount.providers.base import ProviderAccount
|
|
from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
|
|
|
|
|
|
class WahooAccount(ProviderAccount):
|
|
def get_profile_url(self):
|
|
return "https://api.wahooligan.com/v1/user"
|
|
|
|
|
|
class WahooProvider(OAuth2Provider):
|
|
id = "wahoo"
|
|
name = "Wahoo"
|
|
account_class = WahooAccount
|
|
|
|
def extract_uid(self, data):
|
|
return str(data["id"])
|
|
|
|
def extract_common_fields(self, data):
|
|
extra_common = super(WahooProvider, self).extract_common_fields(data)
|
|
extra_common.update(
|
|
# Additional properties we ignore: gender, created_at, updated_at
|
|
height=data.get("height"),
|
|
weight=data.get("weight"),
|
|
first=data.get("first"),
|
|
last=data.get("last"),
|
|
birth=data.get("birth"),
|
|
)
|
|
return extra_common
|
|
|
|
def extract_email_addresses(self, data):
|
|
email = EmailAddress(
|
|
email=data.get("email"),
|
|
primary=True,
|
|
verified=False,
|
|
)
|
|
return [email]
|
|
|
|
def get_default_scope(self):
|
|
scope = ["user_read"]
|
|
if app_settings.QUERY_EMAIL:
|
|
scope.append("email")
|
|
return scope
|
|
|
|
|
|
provider_classes = [WahooProvider]
|