Commit b42bd26b authored by John Red Medrano's avatar John Red Medrano

{dev bugfix} added transation.atomic with savepoint_rollback on batchupload

parent 519a43c7
......@@ -40,6 +40,7 @@ from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.pagesizes import A4
from reportlab.lib.enums import TA_JUSTIFY, TA_RIGHT, TA_LEFT, TA_CENTER
from reportlab.lib.colors import red
from django.db import transaction
config = configparser.ConfigParser()
......@@ -274,9 +275,11 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
return self.get_paginated_response(message)
@transaction.atomic
def create(self, request, **kwargs):
csv_file = request.FILES['file']
extension_file = str(csv_file).split('.')[1]
sp1 = transaction.savepoint()
if extension_file.lower() != 'csv':
return Response(
......@@ -322,7 +325,7 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
Q(company=user_company)
)
if not request_department:
etl2.delete()
# etl2.delete()
return Response(
{"message": company_error},
status=status.HTTP_400_BAD_REQUEST
......@@ -330,7 +333,7 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
elif request.user.user_type == enums_department:
if keys['Department_Code'] != request.user.department.code:
etl2.delete()
# etl2.delete()
return Response(
{"message": department_error},
# {"message": str(e)},
......@@ -341,14 +344,28 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
user_department = Department.objects.filter(
name__icontains=keys['Department_Code']
)
default_app = Application.objects.filter(
excel_code=keys['Default_app']
).first()
try:
default_app = Application.objects.filter(
excel_code=keys['Default_app']
).first()
except Exception as e:
transaction.savepoint_rollback(sp1)
return Response(
{"message": f"Invalid Default Application at row {data + 2}"},
status=status.HTTP_400_BAD_REQUEST
)
dept_code = Department.objects.get(
code=keys['Department_Code']
)
try:
dept_code = Department.objects.get(
code=keys['Department_Code']
)
except Exception as e:
transaction.savepoint_rollback(sp1)
return Response(
{"message": f"Invalid Department Code at row {data + 2}"},
status=status.HTTP_400_BAD_REQUEST
)
users = {
"username": keys['Username'],
......@@ -425,37 +442,42 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
AllowedCompany.objects.create(**privilege_object)
except IntegrityError as e:
etl2.delete()
# etl2.delete()
transaction.savepoint_rollback(sp1)
return Response(
{"message": f"Duplicate user privilege at row {data + 2}"},
status=status.HTTP_400_BAD_REQUEST
)
except ObjectDoesNotExist as e:
etl2.delete()
# etl2.delete()
transaction.savepoint_rollback(sp1)
return Response(
{"message": f"Department Does not Exist at Privilege row {data + 2}"},
status=status.HTTP_400_BAD_REQUEST
)
except IntegrityError as e:
etl2.delete()
# etl2.delete()
transaction.savepoint_rollback(sp1)
return Response(
{"message": f"Record already exist at row {data + 2}"},
status=status.HTTP_400_BAD_REQUEST
)
except KeyError as e:
etl2.delete()
# etl2.delete()
transaction.savepoint_rollback(sp1)
return Response(
{"message": f"Missing column {e.args[0]}"},
status=status.HTTP_400_BAD_REQUEST
)
except ObjectDoesNotExist as e:
etl2.delete()
# etl2.delete()
transaction.savepoint_rollback(sp1)
return Response(
{"message": f"Department Does not Exist at row {data + 2}"},
{"message": f"Department Does not Exist at rowaaaa {data + 2}"},
status=status.HTTP_400_BAD_REQUEST
)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment