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,42 @@
from allauth.socialaccount.providers.base import ProviderAccount
from allauth.socialaccount.providers.oauth.provider import OAuthProvider
class TrelloAccount(ProviderAccount):
def get_profile_url(self):
return None
def get_avatar_url(self):
return None
class TrelloProvider(OAuthProvider):
id = "trello"
name = "Trello"
account_class = TrelloAccount
def get_default_scope(self):
return ["read"]
def extract_uid(self, data):
return data["id"]
def extract_common_fields(self, data):
return dict(
email=data.get("email"),
username=data.get("username"),
name=data.get("name"),
)
def get_auth_params(self, request, action):
data = super(TrelloProvider, self).get_auth_params(request, action)
data["type"] = "web_server"
data["name"] = self.app.name
data["scope"] = self.get_scope(request)
# define here for how long it will be, this can be configured on the
# social app
data["expiration"] = "never"
return data
provider_classes = [TrelloProvider]

View File

@@ -0,0 +1,11 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from allauth.socialaccount.tests import OAuthTestsMixin
from allauth.tests import TestCase
from .provider import TrelloProvider
class TrelloTests(OAuthTestsMixin, TestCase):
provider_id = TrelloProvider.id

View File

@@ -0,0 +1,6 @@
from allauth.socialaccount.providers.oauth.urls import default_urlpatterns
from .provider import TrelloProvider
urlpatterns = default_urlpatterns(TrelloProvider)

View File

@@ -0,0 +1,34 @@
import requests
from django.utils.http import urlencode
from allauth.socialaccount.providers.oauth.views import (
OAuthAdapter,
OAuthCallbackView,
OAuthLoginView,
)
from .provider import TrelloProvider
class TrelloOAuthAdapter(OAuthAdapter):
provider_id = TrelloProvider.id
request_token_url = "https://trello.com/1/OAuthGetRequestToken"
authorize_url = "https://trello.com/1/OAuthAuthorizeToken"
access_token_url = "https://trello.com/1/OAuthGetAccessToken"
def complete_login(self, request, app, token, response):
# we need to get the member id and the other information
info_url = "{base}?{query}".format(
base="https://api.trello.com/1/members/me",
query=urlencode({"key": app.key, "token": response.get("oauth_token")}),
)
resp = requests.get(info_url)
resp.raise_for_status()
extra_data = resp.json()
result = self.get_provider().sociallogin_from_response(request, extra_data)
return result
oauth_login = OAuthLoginView.adapter_view(TrelloOAuthAdapter)
oauth_callback = OAuthCallbackView.adapter_view(TrelloOAuthAdapter)