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)
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)
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)
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)
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)
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)
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)
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)