Fix project members photo
parent
df2f504125
commit
8896d65136
|
@ -1235,3 +1235,15 @@ class LightSerializer(serpy.Serializer):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.context = context
|
self.context = context
|
||||||
self.view = view
|
self.view = view
|
||||||
|
|
||||||
|
|
||||||
|
class LightDictSerializer(serpy.DictSerializer):
|
||||||
|
def __init__(self, *args, **kwargs):
|
||||||
|
kwargs.pop("read_only", None)
|
||||||
|
kwargs.pop("partial", None)
|
||||||
|
kwargs.pop("files", None)
|
||||||
|
context = kwargs.pop("context", {})
|
||||||
|
view = kwargs.pop("view", {})
|
||||||
|
super().__init__(*args, **kwargs)
|
||||||
|
self.context = context
|
||||||
|
self.view = view
|
||||||
|
|
|
@ -19,7 +19,7 @@
|
||||||
from taiga.base.api import serializers
|
from taiga.base.api import serializers
|
||||||
from taiga.base.fields import I18NJsonField, Field, MethodField
|
from taiga.base.fields import I18NJsonField, Field, MethodField
|
||||||
|
|
||||||
from taiga.users.services import get_photo_or_gravatar_url
|
from taiga.users.services import get_user_photo_or_gravatar_url
|
||||||
|
|
||||||
|
|
||||||
HISTORY_ENTRY_I18N_FIELDS = ("points", "status", "severity", "priority", "type")
|
HISTORY_ENTRY_I18N_FIELDS = ("points", "status", "severity", "priority", "type")
|
||||||
|
@ -46,7 +46,7 @@ class HistoryEntrySerializer(serializers.LightSerializer):
|
||||||
def get_user(self, entry):
|
def get_user(self, entry):
|
||||||
user = {"pk": None, "username": None, "name": None, "photo": None, "is_active": False}
|
user = {"pk": None, "username": None, "name": None, "photo": None, "is_active": False}
|
||||||
user.update(entry.user)
|
user.update(entry.user)
|
||||||
user["photo"] = get_photo_or_gravatar_url(entry.owner)
|
user["photo"] = get_user_photo_or_gravatar_url(entry.owner)
|
||||||
|
|
||||||
if entry.owner:
|
if entry.owner:
|
||||||
user["is_active"] = entry.owner.is_active
|
user["is_active"] = entry.owner.is_active
|
||||||
|
|
|
@ -22,7 +22,7 @@ from taiga.base.api import serializers
|
||||||
from taiga.base.fields import Field, MethodField, I18NField
|
from taiga.base.fields import Field, MethodField, I18NField
|
||||||
|
|
||||||
from taiga.permissions import services as permissions_services
|
from taiga.permissions import services as permissions_services
|
||||||
from taiga.users.services import get_photo_or_gravatar_url
|
from taiga.users.services import get_user_photo_or_gravatar_url, get_photo_or_gravatar_url
|
||||||
from taiga.users.serializers import UserBasicInfoSerializer
|
from taiga.users.serializers import UserBasicInfoSerializer
|
||||||
|
|
||||||
from taiga.permissions.services import calculate_permissions
|
from taiga.permissions.services import calculate_permissions
|
||||||
|
@ -97,6 +97,23 @@ class IssueTypeSerializer(serializers.LightSerializer):
|
||||||
# Members
|
# Members
|
||||||
######################################################
|
######################################################
|
||||||
|
|
||||||
|
class MembershipDictSerializer(serializers.LightDictSerializer):
|
||||||
|
role_name = Field()
|
||||||
|
full_name = Field()
|
||||||
|
full_name_display = MethodField()
|
||||||
|
is_active = Field()
|
||||||
|
id = Field()
|
||||||
|
color = Field()
|
||||||
|
username = Field()
|
||||||
|
photo = MethodField()
|
||||||
|
|
||||||
|
def get_full_name_display(self, obj):
|
||||||
|
return obj["full_name"] or obj["username"] or obj["email"]
|
||||||
|
|
||||||
|
def get_photo(self, obj):
|
||||||
|
return get_photo_or_gravatar_url(obj['photo'], obj['email'])
|
||||||
|
|
||||||
|
|
||||||
class MembershipSerializer(serializers.LightSerializer):
|
class MembershipSerializer(serializers.LightSerializer):
|
||||||
id = Field()
|
id = Field()
|
||||||
user = Field(attr="user_id")
|
user = Field(attr="user_id")
|
||||||
|
@ -130,7 +147,7 @@ class MembershipSerializer(serializers.LightSerializer):
|
||||||
return obj.user.color if obj.user else None
|
return obj.user.color if obj.user else None
|
||||||
|
|
||||||
def get_photo(self, obj):
|
def get_photo(self, obj):
|
||||||
return get_photo_or_gravatar_url(obj.user)
|
return get_user_photo_or_gravatar_url(obj.user)
|
||||||
|
|
||||||
def get_project_name(self, obj):
|
def get_project_name(self, obj):
|
||||||
return obj.project.name if obj and obj.project else ""
|
return obj.project.name if obj and obj.project else ""
|
||||||
|
@ -369,15 +386,7 @@ class ProjectDetailSerializer(ProjectSerializer):
|
||||||
if obj.members_attr is None:
|
if obj.members_attr is None:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
ret = []
|
return MembershipDictSerializer([m for m in obj.members_attr if m['id'] is not None], many=True).data
|
||||||
for m in obj.members_attr:
|
|
||||||
m["full_name_display"] = m["full_name"] or m["username"] or m["email"]
|
|
||||||
del(m["email"])
|
|
||||||
del(m["complete_user_name"])
|
|
||||||
if not m["id"] is None:
|
|
||||||
ret.append(m)
|
|
||||||
|
|
||||||
return ret
|
|
||||||
|
|
||||||
def get_total_memberships(self, obj):
|
def get_total_memberships(self, obj):
|
||||||
if obj.members_attr is None:
|
if obj.members_attr is None:
|
||||||
|
|
|
@ -20,7 +20,7 @@ from django.contrib.auth import get_user_model
|
||||||
|
|
||||||
from taiga.base.api import serializers
|
from taiga.base.api import serializers
|
||||||
from taiga.base.fields import Field, MethodField
|
from taiga.base.fields import Field, MethodField
|
||||||
from taiga.users.services import get_photo_or_gravatar_url, get_big_photo_or_gravatar_url
|
from taiga.users.services import get_user_photo_or_gravatar_url, get_big_photo_or_gravatar_url
|
||||||
|
|
||||||
from . import models
|
from . import models
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ class TimelineSerializer(serializers.LightSerializer):
|
||||||
obj.data["user"] = {
|
obj.data["user"] = {
|
||||||
"id": user.pk,
|
"id": user.pk,
|
||||||
"name": user.get_full_name(),
|
"name": user.get_full_name(),
|
||||||
"photo": get_photo_or_gravatar_url(user),
|
"photo": get_user_photo_or_gravatar_url(user),
|
||||||
"big_photo": get_big_photo_or_gravatar_url(user),
|
"big_photo": get_big_photo_or_gravatar_url(user),
|
||||||
"username": user.username,
|
"username": user.username,
|
||||||
"is_profile_visible": user.is_active and not user.is_system,
|
"is_profile_visible": user.is_active and not user.is_system,
|
||||||
|
|
|
@ -24,7 +24,7 @@ from taiga.base.fields import PgArrayField, Field, MethodField, I18NField
|
||||||
from taiga.base.utils.thumbnails import get_thumbnail_url
|
from taiga.base.utils.thumbnails import get_thumbnail_url
|
||||||
|
|
||||||
from taiga.projects.models import Project
|
from taiga.projects.models import Project
|
||||||
from .services import get_photo_or_gravatar_url, get_big_photo_or_gravatar_url
|
from .services import get_user_photo_or_gravatar_url, get_big_photo_or_gravatar_url
|
||||||
from .gravatar import get_gravatar_url
|
from .gravatar import get_gravatar_url
|
||||||
|
|
||||||
from collections import namedtuple
|
from collections import namedtuple
|
||||||
|
@ -61,7 +61,7 @@ class UserSerializer(serializers.LightSerializer):
|
||||||
return obj.get_full_name() if obj else ""
|
return obj.get_full_name() if obj else ""
|
||||||
|
|
||||||
def get_photo(self, user):
|
def get_photo(self, user):
|
||||||
return get_photo_or_gravatar_url(user)
|
return get_user_photo_or_gravatar_url(user)
|
||||||
|
|
||||||
def get_big_photo(self, user):
|
def get_big_photo(self, user):
|
||||||
return get_big_photo_or_gravatar_url(user)
|
return get_big_photo_or_gravatar_url(user)
|
||||||
|
@ -115,7 +115,7 @@ class UserBasicInfoSerializer(serializers.LightSerializer):
|
||||||
return obj.get_full_name()
|
return obj.get_full_name()
|
||||||
|
|
||||||
def get_photo(self, obj):
|
def get_photo(self, obj):
|
||||||
return get_photo_or_gravatar_url(obj)
|
return get_user_photo_or_gravatar_url(obj)
|
||||||
|
|
||||||
def get_big_photo(self, obj):
|
def get_big_photo(self, obj):
|
||||||
return get_big_photo_or_gravatar_url(obj)
|
return get_big_photo_or_gravatar_url(obj)
|
||||||
|
@ -237,7 +237,7 @@ class HighLightedContentSerializer(serializers.LightSerializer):
|
||||||
|
|
||||||
UserData = namedtuple("UserData", ["photo", "email"])
|
UserData = namedtuple("UserData", ["photo", "email"])
|
||||||
user_data = UserData(photo=obj.assigned_to_photo, email=obj.assigned_to_email or "")
|
user_data = UserData(photo=obj.assigned_to_photo, email=obj.assigned_to_email or "")
|
||||||
return get_photo_or_gravatar_url(user_data)
|
return get_user_photo_or_gravatar_url(user_data)
|
||||||
|
|
||||||
def get_tags_colors(self, obj):
|
def get_tags_colors(self, obj):
|
||||||
tags = getattr(obj, "tags", [])
|
tags = getattr(obj, "tags", [])
|
||||||
|
|
|
@ -82,7 +82,16 @@ def get_photo_url(photo):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
def get_photo_or_gravatar_url(user):
|
def get_photo_or_gravatar_url(photo=None, email=None):
|
||||||
|
"""Get the user's photo/gravatar url."""
|
||||||
|
if photo:
|
||||||
|
return get_photo_url(photo)
|
||||||
|
if email:
|
||||||
|
return get_gravatar_url(email)
|
||||||
|
return settings.GRAVATAR_DEFAULT_AVATAR
|
||||||
|
|
||||||
|
|
||||||
|
def get_user_photo_or_gravatar_url(user):
|
||||||
"""Get the user's photo/gravatar url."""
|
"""Get the user's photo/gravatar url."""
|
||||||
if user:
|
if user:
|
||||||
return get_photo_url(user.photo) if user.photo else get_gravatar_url(user.email)
|
return get_photo_url(user.photo) if user.photo else get_gravatar_url(user.email)
|
||||||
|
|
|
@ -25,7 +25,7 @@ from taiga.front.templatetags.functions import resolve as resolve_front_url
|
||||||
from taiga.projects.services import get_logo_big_thumbnail_url
|
from taiga.projects.services import get_logo_big_thumbnail_url
|
||||||
|
|
||||||
from taiga.users.gravatar import get_gravatar_url
|
from taiga.users.gravatar import get_gravatar_url
|
||||||
from taiga.users.services import get_photo_or_gravatar_url
|
from taiga.users.services import get_user_photo_or_gravatar_url
|
||||||
|
|
||||||
|
|
||||||
########################################################################
|
########################################################################
|
||||||
|
@ -82,7 +82,7 @@ class UserSerializer(serializers.LightSerializer):
|
||||||
return obj.get_full_name()
|
return obj.get_full_name()
|
||||||
|
|
||||||
def get_photo(self, obj):
|
def get_photo(self, obj):
|
||||||
return get_photo_or_gravatar_url(obj)
|
return get_user_photo_or_gravatar_url(obj)
|
||||||
|
|
||||||
def to_value(self, instance):
|
def to_value(self, instance):
|
||||||
if instance is None:
|
if instance is None:
|
||||||
|
|
Loading…
Reference in New Issue