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

68 lines
2.0 KiB
Python

from allauth.socialaccount import app_settings
from allauth.socialaccount.providers.base import (
ProviderAccount,
ProviderException,
)
from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
class QuickBooksAccount(ProviderAccount):
def to_str(self):
dflt = super(QuickBooksAccount, self).to_str()
name = self.account.extra_data.get("name", dflt)
first_name = self.account.extra_data.get("givenName", None)
last_name = self.account.extra_data.get("familyName", None)
if first_name and last_name:
name = first_name + " " + last_name
return name
class QuickBooksOAuth2Provider(OAuth2Provider):
id = "quickbooks"
# Name is displayed to ordinary users -- don't include protocol
name = "QuickBooks"
account_class = QuickBooksAccount
def extract_uid(self, data):
if "sub" not in data:
raise ProviderException("QBO error", data)
return str(data["sub"])
def get_profile_fields(self):
default_fields = [
"address",
"sub",
"phoneNumber",
"givenName",
"familyName",
"email",
"emailVerified",
]
fields = self.get_settings().get("PROFILE_FIELDS", default_fields)
return fields
def get_default_scope(self):
scope = [
"openid",
"com.intuit.quickbooks.accounting",
"profile",
"phone",
]
if app_settings.QUERY_EMAIL:
scope.append("email")
return scope
def extract_common_fields(self, data):
return dict(
email=data.get("email"),
address=data.get("address"),
sub=data.get("sub"),
givenName=data.get("givenName"),
familynName=data.get("familyName"),
emailVerified=data.get("emailVerified"),
phoneNumber=data.get("phoneNumber"),
)
provider_classes = [QuickBooksOAuth2Provider]