This commit is contained in:
Iliyan Angelov
2025-09-14 23:24:25 +03:00
commit c67067a2a4
71311 changed files with 6800714 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
"""
Provider for Patreon
"""
from django.conf import settings
from allauth.socialaccount.providers.base import ProviderAccount
from allauth.socialaccount.providers.oauth2.provider import OAuth2Provider
API_VERSION = (
getattr(settings, "SOCIALACCOUNT_PROVIDERS", {})
.get("patreon", {})
.get("VERSION", "v1")
)
USE_API_V2 = True if API_VERSION == "v2" else False
API_URL = "https://www.patreon.com/api/oauth2/" + (API_VERSION if USE_API_V2 else "api")
class PatreonAccount(ProviderAccount):
def get_avatar_url(self):
return self.account.extra_data.get("attributes").get("thumb_url")
class PatreonProvider(OAuth2Provider):
id = "patreon"
name = "Patreon"
account_class = PatreonAccount
def get_default_scope(self):
if USE_API_V2:
return [
"identity",
"identity[email]",
"campaigns",
"campaigns.members",
]
return ["pledges-to-me", "users", "my-campaign"]
def extract_uid(self, data):
return data.get("id")
def extract_common_fields(self, data):
details = data["attributes"]
return {
"email": details.get("email"),
"fullname": details.get("full_name"),
"first_name": details.get("first_name"),
"last_name": details.get("last_name"),
}
provider_classes = [PatreonProvider]