Merge pull request #778 from taigaio/fix-project-members-photo
Fix project members photoremotes/origin/issue/4795/notification_even_they_are_disabled
commit
9911bec941
|
@ -1235,3 +1235,15 @@ class LightSerializer(serpy.Serializer):
|
|||
super().__init__(*args, **kwargs)
|
||||
self.context = context
|
||||
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.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")
|
||||
|
@ -46,7 +46,7 @@ class HistoryEntrySerializer(serializers.LightSerializer):
|
|||
def get_user(self, entry):
|
||||
user = {"pk": None, "username": None, "name": None, "photo": None, "is_active": False}
|
||||
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:
|
||||
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.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.permissions.services import calculate_permissions
|
||||
|
@ -97,6 +97,23 @@ class IssueTypeSerializer(serializers.LightSerializer):
|
|||
# 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):
|
||||
id = Field()
|
||||
user = Field(attr="user_id")
|
||||
|
@ -130,7 +147,7 @@ class MembershipSerializer(serializers.LightSerializer):
|
|||
return obj.user.color if obj.user else None
|
||||
|
||||
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):
|
||||
return obj.project.name if obj and obj.project else ""
|
||||
|
@ -369,15 +386,7 @@ class ProjectDetailSerializer(ProjectSerializer):
|
|||
if obj.members_attr is None:
|
||||
return []
|
||||
|
||||
ret = []
|
||||
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
|
||||
return MembershipDictSerializer([m for m in obj.members_attr if m['id'] is not None], many=True).data
|
||||
|
||||
def get_total_memberships(self, obj):
|
||||
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.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
|
||||
|
||||
|
@ -56,7 +56,7 @@ class TimelineSerializer(serializers.LightSerializer):
|
|||
obj.data["user"] = {
|
||||
"id": user.pk,
|
||||
"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),
|
||||
"username": user.username,
|
||||
"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.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 collections import namedtuple
|
||||
|
@ -61,7 +61,7 @@ class UserSerializer(serializers.LightSerializer):
|
|||
return obj.get_full_name() if obj else ""
|
||||
|
||||
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):
|
||||
return get_big_photo_or_gravatar_url(user)
|
||||
|
@ -115,7 +115,7 @@ class UserBasicInfoSerializer(serializers.LightSerializer):
|
|||
return obj.get_full_name()
|
||||
|
||||
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):
|
||||
return get_big_photo_or_gravatar_url(obj)
|
||||
|
@ -237,7 +237,7 @@ class HighLightedContentSerializer(serializers.LightSerializer):
|
|||
|
||||
UserData = namedtuple("UserData", ["photo", "email"])
|
||||
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):
|
||||
tags = getattr(obj, "tags", [])
|
||||
|
|
|
@ -82,7 +82,16 @@ def get_photo_url(photo):
|
|||
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."""
|
||||
if user:
|
||||
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.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()
|
||||
|
||||
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):
|
||||
if instance is None:
|
||||
|
|
Loading…
Reference in New Issue