Example #1
0
 def post(self, request, format=None):
     group_photo_serializer = Serializers.ImageBase64(data=request.data)
     if group_photo_serializer.is_valid():
         #print(group_photo_serializer)
         group_photo_serializer = group_photo_serializer.save()
         user_id = request.user.id
         #print('photo: ', group_photo_serializer)
         collection_id = models.UserExtension.objects.get(
             user=request.user).contacts_collection_id
         #print('col: ', collection_id)
         face_ids = RekognitionTools.search_faces_by_image(
             user_id, group_photo_serializer, collection_id)
         print(len(face_ids))
         contacts = []
         for i in face_ids:
             try:
                 contacts.append(models.Contact.objects.get(face_id=i))
                 #print(contacts[-1])
             except ObjectDoesNotExist:
                 pass
         if contacts == None:
             return Response(status=status.HTTP_400_BAD_REQUEST)
         else:
             contact_serializer = Serializers.ContactRekognitionSerializer(
                 contacts, many=True)
             return Response(contact_serializer.data,
                             status=status.HTTP_200_OK)
         #else:
         #   return Response(contact_serializer.errors, status=status.HTTP_400_BAD_REQUEST)
     return Response(status=status.HTTP_400_BAD_REQUEST)
Example #2
0
 def get(self, request, format=None):
     if request.user.is_staff:
         user = models.UserExtension.objects.all()
         serializer = Serializers.UserSerializer(user, many=True)
         return Response(serializer.data)
     else:
         user = models.UserExtension.objects.get(user=request.user)
         serializer = Serializers.UserSerializer(user)
         return Response(serializer.data)
Example #3
0
 def post(self, request, format=None):
     #convert photos from base 64 to jpg and save in photos array
     try:
         photos = []
         for i in request.data.pop('group_photo'):
             photos.append(base64.b64decode(i))
     except Exception as e:
         print(str(e))
         return Response(Serializers.errorMsgSerializer({
             'msg': 'Photo Error'
         }).data,
                         status=status.HTTP_400_BAD_REQUEST)
     #get the user info
     user_id = request.user.id
     collection_id = models.UserExtension.objects.get(
         user=request.user).contacts_collection_id
     removed_doups = []
     image_urls = []
     #run rekognition
     try:
         for photo in photos:
             rek_dict = RekognitionTools.search_faces_by_image_android_batch_upload(
                 user_id, photo, collection_id)
             photo_faces = rek_dict.pop('face_ids')
             image_urls.append(rek_dict.pop('url'))
             for face in photo_faces:
                 if face not in removed_doups:
                     removed_doups.append(face)
     except:
         return Response(Serializers.errorMsgSerializer({
             'msg': 'AWS Error'
         }).data,
                         status=status.HTTP_400_BAD_REQUEST)
     #Return info to users
     try:
         contacts = models.Contact.objects.filter(face_id__in=removed_doups)
         #print(contacts)
     except:
         return Response(
             Serializers.errorMsgSerializer({'msg':
                                             'contacts model error'}))
     try:
         contact_serializer = Serializers.AndroidBatchSerializer({
             'contacts':
             contacts,
             'urls':
             image_urls
         })
         return Response(contact_serializer.data, status=status.HTTP_200_OK)
     except:
         return Response(contact_serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
Example #4
0
    def post(self, request, format=None):
        #convert photos from base 64 to jpg and save in photos array
        try:
            photos = []
            photo_serializer = Serializers.ImageBase64(data=request.data,
                                                       many=True)
            if photo_serializer.is_valid():
                photo_serializer = photo_serializer.save()
                for i in photo_serializer:
                    photos.append(i)
            else:
                return Response(photo_serializer.errors,
                                status=status.HTTP_400_BAD_REQUEST)
        except Exception as e:
            print(str(e))
            return Response(Serializers.errorMsgSerializer({
                'msg': 'Photo Error'
            }).data,
                            status=status.HTTP_400_BAD_REQUEST)

        #get the user info
        user_id = request.user.id
        collection_id = models.UserExtension.objects.get(
            user=request.user).contacts_collection_id
        removed_doups = []

        #run rekognition
        try:
            for photo in photos:
                photo_faces = RekognitionTools.search_faces_by_image(
                    user_id, photo, collection_id)

                for face in photo_faces:
                    if face not in removed_doups:
                        removed_doups.append(face)
        except:
            return Response(Serializers.errorMsgSerializer({
                'msg': 'AWS Error'
            }).data,
                            status=status.HTTP_400_BAD_REQUEST)

        #Return info to users
        try:
            contacts = models.Contact.objects.filter(face_id__in=removed_doups)
            contact_serializer = Serializers.ContactRekognitionSerializer(
                contacts, many=True)
            return Response(contact_serializer.data, status=status.HTTP_200_OK)
        except:
            return Response(contact_serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)
Example #5
0
 def get(self, request, format=None):
     try:
         contacts = models.Contact.objects.get(user=request.user)
         cSerializer = Serializers.ContactSerializer(contacts, many=True)
         return Response(cSerializer, status=status.HTTP_200_OK)
     except:
         return Response(status=status.HTTP_400_BAD_REQUEST)
Example #6
0
 def post(self, request, format=None):
     contact_photo = Serializers.ImageBase64(data=request.data)
     if contact_photo.is_valid():
         user_ext = models.UserExtension.objects.get(user=request.user)
         #dont know if its saving photo
         contact_photo = contact_photo.save()
         face_id = CollectionTools.adding_faces_to_a_collection(
             request.user.id, user_ext.contacts_collection_id,
             contact_photo, True)
         #print('Face ID: ', face_id)
         serializer = Serializers.ContactSerializer(data=request.data)
         if serializer.is_valid() and face_id != -1:
             serializer.save(user=request.user, face_id=str(face_id[0]))
             return Response(serializer.data,
                             status=status.HTTP_201_CREATED)
         return Response(serializer.errors,
                         status=status.HTTP_400_BAD_REQUEST)
     return Response(contact_photo.errors,
                     status=status.HTTP_400_BAD_REQUEST)
Example #7
0
 def put(self, request, id, format=None):
     try:
         contact = models.Contact.objects.get(id=id)
     except:
         return Response(status=status.HTTP_400_BAD_REQUEST)
     contactSerializer = Serializers.ContactSerializer(contact,
                                                       data=request.data)
     if contactSerializer.is_valid():
         contactSerializer.save()
         return Response(contactSerializer.data, status=status.HTTP_200_OK)
     return Response(contactSerializer.errors,
                     status=status.HTTP_400_BAD_REQUEST)
Example #8
0
    def post(self, request, format=None):
        try:
            photos = []
            for i in request.data.pop('group_photo'):
                photos.append(i)
            user_id = request.user.id
            collection_id = models.UserExtension.objects.get(
                user=request.user).contacts_collection_id
            removed_doups = []
            for photo in photos:
                photo_faces = RekognitionTools.search_faces_by_image(
                    user_id, photo, collection_id)

                for face in photo_faces:
                    if face not in removed_doups:
                        removed_doups.append(face)

            contacts = models.Contact.objects.filter(face_id__in=removed_doups)
            print(contacts)
            contact_serializer = Serializers.ContactRekognitionSerializer(
                contacts, many=True)
            return Response(contact_serializer.data, status=status.HTTP_200_OK)
        except:
            return Response(status=status.HTTP_400_BAD_REQUEST)