Files
GNX-mailEnterprise/venv/lib/python3.12/site-packages/allauth/socialaccount/providers/pinterest/provider.py
Iliyan Angelov c67067a2a4 Mail
2025-09-14 23:24:25 +03:00

62 lines
1.9 KiB
Python

from allauth.socialaccount.providers.base import ProviderAccount
from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
class PinterestAccount(ProviderAccount):
def get_username(self):
return self.account.extra_data.get("username")
def get_profile_url(self):
# v5 extra_data not same as v1
username = self.get_username()
if username:
return "https://www.pinterest.com/{}/".format(username)
return self.account.extra_data.get("url")
def get_avatar_url(self):
return self.account.extra_data.get("profile_image")
def to_str(self):
dflt = super(PinterestAccount, self).to_str()
return self.account.extra_data.get("username", dflt)
class PinterestProvider(OAuth2Provider):
id = "pinterest"
name = "Pinterest"
account_class = PinterestAccount
@property
def api_version(self):
return self.get_settings().get("API_VERSION", "v1")
def get_default_scope(self):
# See: https://developers.pinterest.com/docs/api/overview/#scopes
if self.api_version == "v5":
# See: https://developers.pinterest.com/docs/getting-started/scopes/
return ["user_accounts:read"]
elif self.api_version == "v3":
return ["read_users"]
return ["read_public"]
def extract_extra_data(self, data):
if self.api_version == "v5":
return data
return data.get("data", {})
def extract_uid(self, data):
if self.api_version == "v5":
return data["username"]
return str(data["data"]["id"])
def extract_common_fields(self, data):
if self.api_version == "v5":
return dict(username=data["username"])
return dict(
first_name=data.get("data", {}).get("first_name"),
last_name=data.get("data", {}).get("last_name"),
)
provider_classes = [PinterestProvider]