Add face_url to serializer

pull/502/head
derneuere 2 years ago
parent c892adb41b
commit c065c52c5f

@ -160,7 +160,10 @@ class PhotoSerializer(serializers.ModelSerializer):
return None
def get_people(self, obj):
return [f.person.name for f in obj.faces.all()]
return [
{"name": f.person.name, "face_url": f.image.url, "face_id": f.id}
for f in obj.faces.all()
]
class PersonSerializer(serializers.ModelSerializer):
@ -254,18 +257,23 @@ class PersonSerializer(serializers.ModelSerializer):
class FaceListSerializer(serializers.ModelSerializer):
person_name = serializers.SerializerMethodField()
face_url = serializers.SerializerMethodField()
class Meta:
model = Face
fields = (
"id",
"image",
"face_url",
"photo",
"person",
"person_label_probability",
"person_name",
)
def get_face_url(self, obj):
return obj.image.url
def get_person_name(self, obj):
return obj.person.name

@ -1,25 +1,17 @@
import uuid
import six
from django.core.cache import cache
from django.db.models import Q
from rest_framework import viewsets
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework_extensions.cache.decorators import cache_response
from api.directory_watcher import scan_faces
from api.drf_optimize import OptimizeRelatedModelViewSetMetaclass
from api.face_classify import train_faces
from api.models import Face
from api.models.person import get_or_create_person
from api.serializers.serializers import FaceListSerializer, FaceSerializer
from api.util import logger
from api.views.caching import (
CACHE_TTL,
CustomListKeyConstructor,
CustomObjectKeyConstructor,
)
from api.views.pagination import HugeResultsSetPagination, StandardResultsSetPagination
@ -45,21 +37,17 @@ class TrainFaceView(APIView):
return Response({"status": False})
@six.add_metaclass(OptimizeRelatedModelViewSetMetaclass)
class FaceListViewSet(viewsets.ModelViewSet):
serializer_class = FaceListSerializer
pagination_class = StandardResultsSetPagination
@cache_response(CACHE_TTL, key_func=CustomObjectKeyConstructor())
def retrieve(self, *args, **kwargs):
return super(FaceListViewSet, self).retrieve(*args, **kwargs)
@cache_response(CACHE_TTL, key_func=CustomListKeyConstructor())
def list(self, *args, **kwargs):
return super(FaceListViewSet, self).list(*args, **kwargs)
@six.add_metaclass(OptimizeRelatedModelViewSetMetaclass)
class FaceInferredListViewSet(viewsets.ModelViewSet):
serializer_class = FaceListSerializer
pagination_class = HugeResultsSetPagination
@ -77,16 +65,13 @@ class FaceInferredListViewSet(viewsets.ModelViewSet):
)
return queryset
@cache_response(CACHE_TTL, key_func=CustomObjectKeyConstructor())
def retrieve(self, *args, **kwargs):
return super(FaceInferredListViewSet, self).retrieve(*args, **kwargs)
@cache_response(CACHE_TTL, key_func=CustomListKeyConstructor())
def list(self, *args, **kwargs):
return super(FaceInferredListViewSet, self).list(*args, **kwargs)
@six.add_metaclass(OptimizeRelatedModelViewSetMetaclass)
class FaceLabeledListViewSet(viewsets.ModelViewSet):
serializer_class = FaceListSerializer
pagination_class = HugeResultsSetPagination
@ -103,16 +88,13 @@ class FaceLabeledListViewSet(viewsets.ModelViewSet):
)
return queryset
@cache_response(CACHE_TTL, key_func=CustomObjectKeyConstructor())
def retrieve(self, *args, **kwargs):
return super(FaceLabeledListViewSet, self).retrieve(*args, **kwargs)
@cache_response(CACHE_TTL, key_func=CustomListKeyConstructor())
def list(self, *args, **kwargs):
return super(FaceLabeledListViewSet, self).list(*args, **kwargs)
@six.add_metaclass(OptimizeRelatedModelViewSetMetaclass)
class FaceViewSet(viewsets.ModelViewSet):
queryset = (
Face.objects.filter(Q(photo__hidden=False))
@ -122,16 +104,13 @@ class FaceViewSet(viewsets.ModelViewSet):
serializer_class = FaceSerializer
pagination_class = StandardResultsSetPagination
@cache_response(CACHE_TTL, key_func=CustomObjectKeyConstructor())
def retrieve(self, *args, **kwargs):
return super(FaceViewSet, self).retrieve(*args, **kwargs)
@cache_response(CACHE_TTL, key_func=CustomListKeyConstructor())
def list(self, *args, **kwargs):
return super(FaceViewSet, self).list(*args, **kwargs)
@six.add_metaclass(OptimizeRelatedModelViewSetMetaclass)
class FaceInferredViewSet(viewsets.ModelViewSet):
serializer_class = FaceSerializer
pagination_class = HugeResultsSetPagination
@ -143,16 +122,13 @@ class FaceInferredViewSet(viewsets.ModelViewSet):
& Q(person_label_is_inferred=True)
).order_by("id")
@cache_response(CACHE_TTL, key_func=CustomObjectKeyConstructor())
def retrieve(self, *args, **kwargs):
return super(FaceInferredViewSet, self).retrieve(*args, **kwargs)
@cache_response(CACHE_TTL, key_func=CustomListKeyConstructor())
def list(self, *args, **kwargs):
return super(FaceInferredViewSet, self).list(*args, **kwargs)
@six.add_metaclass(OptimizeRelatedModelViewSetMetaclass)
class FaceLabeledViewSet(viewsets.ModelViewSet):
serializer_class = FaceSerializer
pagination_class = HugeResultsSetPagination
@ -164,11 +140,9 @@ class FaceLabeledViewSet(viewsets.ModelViewSet):
& Q(person_label_is_inferred=False)
).order_by("id")
@cache_response(CACHE_TTL, key_func=CustomObjectKeyConstructor())
def retrieve(self, *args, **kwargs):
return super(FaceLabeledViewSet, self).retrieve(*args, **kwargs)
@cache_response(CACHE_TTL, key_func=CustomListKeyConstructor())
def list(self, *args, **kwargs):
return super(FaceLabeledViewSet, self).list(*args, **kwargs)

Loading…
Cancel
Save