Return members' photo in project detail api

remotes/origin/enhancement/email-actions
Anler Hp 2014-07-02 14:51:29 +02:00
parent a2b8a38016
commit 11564a95a6
3 changed files with 14 additions and 9 deletions

View File

@ -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")

View File

@ -15,13 +15,11 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
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):

View File

@ -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)