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.base.serializers import PickleField, JsonField
|
||||||
from taiga.users.models import Role, User
|
from taiga.users.models import Role, User
|
||||||
|
from taiga.users.services import get_photo_or_gravatar_url
|
||||||
|
|
||||||
from . import models
|
from . import models
|
||||||
|
|
||||||
|
@ -77,10 +78,14 @@ class ProjectMembershipSerializer(serializers.ModelSerializer):
|
||||||
role_name = serializers.CharField(source='role.name', required=False)
|
role_name = serializers.CharField(source='role.name', required=False)
|
||||||
full_name = serializers.CharField(source='user.get_full_name', required=False)
|
full_name = serializers.CharField(source='user.get_full_name', required=False)
|
||||||
color = serializers.CharField(source='user.color', required=False)
|
color = serializers.CharField(source='user.color', required=False)
|
||||||
|
photo = serializers.SerializerMethodField("get_photo")
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Membership
|
model = models.Membership
|
||||||
|
|
||||||
|
def get_photo(self, project):
|
||||||
|
return get_photo_or_gravatar_url(project.user)
|
||||||
|
|
||||||
|
|
||||||
class ProjectSerializer(serializers.ModelSerializer):
|
class ProjectSerializer(serializers.ModelSerializer):
|
||||||
stars = serializers.SerializerMethodField("get_stars_number")
|
stars = serializers.SerializerMethodField("get_stars_number")
|
||||||
|
|
|
@ -15,13 +15,11 @@
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
from django.utils.translation import ugettext_lazy as _
|
from django.utils.translation import ugettext_lazy as _
|
||||||
from django.conf import settings
|
|
||||||
|
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from .models import User
|
from .models import User
|
||||||
from .services import get_photo_url
|
from .services import get_photo_or_gravatar_url
|
||||||
from .gravatar import get_gravatar_url
|
|
||||||
|
|
||||||
|
|
||||||
class UserSerializer(serializers.ModelSerializer):
|
class UserSerializer(serializers.ModelSerializer):
|
||||||
|
@ -38,12 +36,7 @@ class UserSerializer(serializers.ModelSerializer):
|
||||||
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 the user photo or her gravatar"
|
return get_photo_or_gravatar_url(user)
|
||||||
if user.photo:
|
|
||||||
url = get_photo_url(user.photo)
|
|
||||||
else:
|
|
||||||
url = get_gravatar_url(user.email)
|
|
||||||
return url
|
|
||||||
|
|
||||||
|
|
||||||
class RecoverySerializer(serializers.Serializer):
|
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 import exceptions as exc
|
||||||
from taiga.base.utils.urls import get_absolute_url
|
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:
|
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."""
|
"""Get a photo absolute url and the photo automatically cropped."""
|
||||||
url = get_thumbnailer(photo)['avatar'].url
|
url = get_thumbnailer(photo)['avatar'].url
|
||||||
return get_absolute_url(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