I'm trying to pass a few arguments form my view to my additional function, but I get error "Object of type 'Request' is not JSON serializable", I don't why is occured with me, cause I didn't pass request object to Response.
@api_view(['POST', ])
@permission_classes([IsAuthenticated])
def users_upload(request):
if request.user.type != 't':
logger.warning(f'Users upload ERROR: -{request.user.username}- not a teacher')
return Response({'message': 'Not a teacher'}, status=403)
try:
user_file = request.FILES['data']
file_format = user_file.name.split('.')[-1]
if file_format not in ['csv', 'xls', 'xlsx']:
logging.error('User upload ERROR: incorrect file format')
return Response({'message': 'Incorrect file format'}, status=400)
auto_file = AutoFile.objects.create(
description='Temp file for user upload',
file=user_file
)
upload_users_from_file.delay(request, auto_file.pk, file_format)
return Response({'message': 'Task created'}, status=200)
except Exception as e:
logging.error(f'User upload ERROR: unable to evaluate file format: {e}')
return Response({'message': 'Error during file check'}, status=400)
What happened?
I can't show function "upload_users_from_file" because it distributes request object to large functions chain, anyway you can see by logger that ERROR occured actually in user_upload function.