From 11564a95a668e01b8ffcc4d1e387b2e3bba894d8 Mon Sep 17 00:00:00 2001 From: Anler Hp Date: Wed, 2 Jul 2014 14:51:29 +0200 Subject: [PATCH] Return members' photo in project detail api --- taiga/projects/serializers.py | 5 +++++ taiga/users/serializers.py | 11 ++--------- taiga/users/services.py | 7 +++++++ 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/taiga/projects/serializers.py b/taiga/projects/serializers.py index bfb2a159..09b54aea 100644 --- a/taiga/projects/serializers.py +++ b/taiga/projects/serializers.py @@ -20,6 +20,7 @@ from django.utils.translation import ugettext_lazy as _ from taiga.base.serializers import PickleField, JsonField from taiga.users.models import Role, User +from taiga.users.services import get_photo_or_gravatar_url from . import models @@ -77,10 +78,14 @@ class ProjectMembershipSerializer(serializers.ModelSerializer): role_name = serializers.CharField(source='role.name', required=False) full_name = serializers.CharField(source='user.get_full_name', required=False) color = serializers.CharField(source='user.color', required=False) + photo = serializers.SerializerMethodField("get_photo") class Meta: model = models.Membership + def get_photo(self, project): + return get_photo_or_gravatar_url(project.user) + class ProjectSerializer(serializers.ModelSerializer): stars = serializers.SerializerMethodField("get_stars_number") diff --git a/taiga/users/serializers.py b/taiga/users/serializers.py index a82c95d5..2286de4a 100644 --- a/taiga/users/serializers.py +++ b/taiga/users/serializers.py @@ -15,13 +15,11 @@ # along with this program. If not, see . from django.utils.translation import ugettext_lazy as _ -from django.conf import settings from rest_framework import serializers from .models import User -from .services import get_photo_url -from .gravatar import get_gravatar_url +from .services import get_photo_or_gravatar_url class UserSerializer(serializers.ModelSerializer): @@ -38,12 +36,7 @@ class UserSerializer(serializers.ModelSerializer): return obj.get_full_name() if obj else "" def get_photo(self, user): - "Return the user photo or her gravatar" - if user.photo: - url = get_photo_url(user.photo) - else: - url = get_gravatar_url(user.email) - return url + return get_photo_or_gravatar_url(user) class RecoverySerializer(serializers.Serializer): diff --git a/taiga/users/services.py b/taiga/users/services.py index a7da3473..801eae55 100644 --- a/taiga/users/services.py +++ b/taiga/users/services.py @@ -26,6 +26,8 @@ from easy_thumbnails.files import get_thumbnailer from taiga.base import exceptions as exc from taiga.base.utils.urls import get_absolute_url +from .gravatar import get_gravatar_url + def get_and_validate_user(*, username:str, password:str) -> bool: """ @@ -53,3 +55,8 @@ def get_photo_url(photo): """Get a photo absolute url and the photo automatically cropped.""" url = get_thumbnailer(photo)['avatar'].url return get_absolute_url(url) + + +def get_photo_or_gravatar_url(user): + """Get the user's photo/gravatar url.""" + return get_photo_url(user.photo) if user.photo else get_gravatar_url(user.email)