core: add avatars to user api

This commit is contained in:
Jens Langhammer
2020-11-22 19:36:40 +01:00
parent bc02fb04f8
commit 3c311ca527
4 changed files with 72 additions and 6 deletions

View File

@ -1,22 +1,32 @@
"""User API Views"""
from rest_framework.serializers import BooleanField, ModelSerializer
from rest_framework.viewsets import ModelViewSet
from rest_framework.decorators import action
from rest_framework.request import Request
from rest_framework.response import Response
from rest_framework.serializers import (
BooleanField,
ModelSerializer,
SerializerMethodField,
)
from rest_framework.viewsets import ModelViewSet
from passbook.core.models import User
from passbook.lib.templatetags.passbook_utils import avatar
class UserSerializer(ModelSerializer):
"""User Serializer"""
is_superuser = BooleanField(read_only=True)
avatar = SerializerMethodField()
def get_avatar(self, user: User) -> str:
"""Add user's avatar as URL"""
return avatar(user)
class Meta:
model = User
fields = ["pk", "username", "name", "is_superuser", "email"]
fields = ["pk", "username", "name", "is_superuser", "email", "avatar"]
class UserViewSet(ModelViewSet):
@ -26,6 +36,7 @@ class UserViewSet(ModelViewSet):
serializer_class = UserSerializer
@action(detail=False)
# pylint: disable=invalid-name
def me(self, request: Request) -> Response:
"""Get information about current user"""
return Response(UserSerializer(request.user).data)