| from rest_framework.views import APIView | |
| from rest_framework.response import Response | |
| from rest_framework import status, permissions | |
| from rest_framework.parsers import MultiPartParser, FormParser | |
| from .services import parse_and_import_transactions | |
| class TransactionUploadView(APIView): | |
| permission_classes = [permissions.IsAuthenticated] | |
| parser_classes = (MultiPartParser, FormParser) | |
| def post(self, request): | |
| if 'file' not in request.FILES: | |
| return Response({"error": "No file passed"}, status=status.HTTP_400_BAD_REQUEST) | |
| from .utils_mongo import get_user_db_id | |
| file = request.FILES['file'] | |
| count, error = parse_and_import_transactions(file, get_user_db_id(request.user)) | |
| if error: | |
| return Response({"error": error}, status=status.HTTP_400_BAD_REQUEST) | |
| return Response({"message": f"Successfully processed {count} transactions."}, status=status.HTTP_201_CREATED) | |