Files
Iliyan Angelov c67067a2a4 Mail
2025-09-14 23:24:25 +03:00

58 lines
1.7 KiB
Python

from allauth.socialaccount import providers
from allauth.socialaccount.providers.base import ProviderAccount
from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
class CleverAccount(ProviderAccount):
def get_avatar_url(self):
# return self.account.extra_data.get('user').get('image_192', None)
return None
def to_str(self):
dflt = super(CleverAccount, self).to_str()
return "%s (%s)" % (
self.account.extra_data.get("name", ""),
dflt,
)
class CleverProvider(OAuth2Provider):
id = "clever"
name = "Clever"
account_class = CleverAccount
def extract_uid(self, data):
return data["data"]["id"]
def get_user_type(self, data):
return list(data.get("data", {}).get("roles", {}).keys())[0]
def extract_common_fields(self, data):
return dict(
first_name=data.get("data", {}).get("name", {}).get("first", None),
last_name=data.get("data", {}).get("name", {}).get("last", None),
username=data.get("data", {})
.get("roles", {})
.get(self.get_user_type(data), {})
.get("credentials", {})
.get("district_username", None),
email=data.get("data", {}).get("email", None),
)
def get_default_scope(self):
return [
"read:district_admins",
"read:districts",
"read:resources",
"read:school_admins",
"read:schools",
"read:sections",
"read:student_contacts",
"read:students",
"read:teachers",
"read:user_id",
]
providers.registry.register(CleverProvider)