Return members' photo in project detail api
parent
a2b8a38016
commit
11564a95a6
|
@ -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")
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue