64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
from django.urls import reverse
|
|
from django.utils.http import urlencode
|
|
|
|
from allauth.socialaccount.providers.base import Provider, ProviderAccount
|
|
|
|
|
|
class DraugiemAccount(ProviderAccount):
|
|
def get_avatar_url(self):
|
|
ret = None
|
|
pic_small_url = self.account.extra_data.get("img")
|
|
pic_icon_url = self.account.extra_data.get("imgi")
|
|
pic_medium_url = self.account.extra_data.get("imgm")
|
|
pic_large_url = self.account.extra_data.get("imgl")
|
|
if pic_large_url:
|
|
return pic_large_url
|
|
elif pic_medium_url:
|
|
return pic_medium_url
|
|
elif pic_icon_url:
|
|
return pic_icon_url
|
|
elif pic_small_url:
|
|
return pic_small_url
|
|
else:
|
|
return ret
|
|
|
|
def to_str(self):
|
|
default = super(DraugiemAccount, self).to_str()
|
|
name = self.account.extra_data.get("name")
|
|
surname = self.account.extra_data.get("surnname")
|
|
|
|
if name and surname:
|
|
return "%s %s" % (name, surname)
|
|
|
|
return default
|
|
|
|
|
|
class DraugiemProvider(Provider):
|
|
id = "draugiem"
|
|
name = "Draugiem"
|
|
account_class = DraugiemAccount
|
|
|
|
def get_login_url(self, request, **kwargs):
|
|
url = reverse(self.id + "_login")
|
|
if kwargs:
|
|
url = url + "?" + urlencode(kwargs)
|
|
return url
|
|
|
|
def extract_uid(self, data):
|
|
return str(data["uid"])
|
|
|
|
def extract_common_fields(self, data):
|
|
uid = self.extract_uid(data)
|
|
user_data = data["users"][uid]
|
|
return dict(
|
|
first_name=user_data.get("name"),
|
|
last_name=user_data.get("surname"),
|
|
)
|
|
|
|
def extract_extra_data(self, data):
|
|
uid = self.extract_uid(data)
|
|
return data["users"][uid]
|
|
|
|
|
|
provider_classes = [DraugiemProvider]
|