Commit 5c319792 authored by John Red Medrano's avatar John Red Medrano

Merge pull request #476 in RMS/api-main-service from red-develop to RMSv2

* commit '6a9f2f87':
  added new endpoint download template for batch upload
parents 35ae4bf8 6a9f2f87
from rest_framework import serializers
from app.entities.models import MasterAttachment
class BatchUploadSerializer(serializers.ModelSerializer):
class Meta:
model = MasterAttachment
fields = '__all__'
read_only_fields = (
'created', 'createdby', 'modified', 'modifiedby', 'code',
)
from rest_framework import viewsets, status
from rest_framework.response import Response
from app.entities.models import MasterAttachment
from app.applicationlayer.utils import (
CustomPagination, status_message_response, log_save
)
# from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.download.batch_upload.serializer import (
BatchUploadSerializer
)
import os
import configparser
config = configparser.ConfigParser()
config_file = os.path.join('./', 'env.ini')
config.read(config_file)
class BatchUploadFormatViewSet(viewsets.ModelViewSet):
queryset = MasterAttachment.objects.filter(
url__contains=config['SETTINGS']['BATCH_UPLOAD_FORMAT_FILENAME']
)
serializer_class = BatchUploadSerializer
...@@ -93,7 +93,7 @@ class BatchUploadViewSet(viewsets.ModelViewSet): ...@@ -93,7 +93,7 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
# @decorators.error_safe # @decorators.error_safe
@transaction.atomic @transaction.atomic
def create(self, request, args, *kwargs): def create(self, request, **kwargs):
csv_file = request.FILES['file'] csv_file = request.FILES['file']
df = pd.read_csv(csv_file, sep=',', skiprows=0) df = pd.read_csv(csv_file, sep=',', skiprows=0)
logged_user_type = request.user.user_type logged_user_type = request.user.user_type
...@@ -126,6 +126,7 @@ class BatchUploadViewSet(viewsets.ModelViewSet): ...@@ -126,6 +126,7 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
).first() ).first()
if user_department == None: if user_department == None:
msg = f"company is not the same with the logged user at row {data + 2}" msg = f"company is not the same with the logged user at row {data + 2}"
transaction.set_rollback(True)
return Response( return Response(
{"message": msg}, {"message": msg},
status=status.HTTP_400_BAD_REQUEST status=status.HTTP_400_BAD_REQUEST
...@@ -135,6 +136,7 @@ class BatchUploadViewSet(viewsets.ModelViewSet): ...@@ -135,6 +136,7 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
name__icontains=logged_user_department name__icontains=logged_user_department
) )
elif logged_user_type == enums_user: elif logged_user_type == enums_user:
transaction.set_rollback(True)
return Response( return Response(
{"message": "Logged User is not allowed"}, {"message": "Logged User is not allowed"},
status=status.HTTP_400_BAD_REQUEST status=status.HTTP_400_BAD_REQUEST
...@@ -151,6 +153,7 @@ class BatchUploadViewSet(viewsets.ModelViewSet): ...@@ -151,6 +153,7 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
if keys['user_type'].lower() == 'super user' and logged_user_type == enums_super: if keys['user_type'].lower() == 'super user' and logged_user_type == enums_super:
user_type = enums.UserTypeEnum.SUPER_USER.value user_type = enums.UserTypeEnum.SUPER_USER.value
elif keys['user_type'].lower() == 'super user' and logged_user_type != enums_super: elif keys['user_type'].lower() == 'super user' and logged_user_type != enums_super:
transaction.set_rollback(True)
return Response( return Response(
{"message": f"This user is not allowed to create super user. data error at row {data + 2}"}, {"message": f"This user is not allowed to create super user. data error at row {data + 2}"},
status=status.HTTP_201_CREATED status=status.HTTP_201_CREATED
...@@ -227,12 +230,14 @@ class BatchUploadViewSet(viewsets.ModelViewSet): ...@@ -227,12 +230,14 @@ class BatchUploadViewSet(viewsets.ModelViewSet):
} }
AllowedCompany.objects.create(**privilege_object) AllowedCompany.objects.create(**privilege_object)
except IntegrityError as e: except IntegrityError as e:
transaction.set_rollback(True)
return Response( return Response(
{"message": f"Duplicate user privilege at row {data + 2}"}, {"message": f"Duplicate user privilege at row {data + 2}"},
status=status.HTTP_400_BAD_REQUEST status=status.HTTP_400_BAD_REQUEST
) )
except IntegrityError as e: except IntegrityError as e:
transaction.set_rollback(True)
return Response( return Response(
{"message": f"Record already exist at row {data + 2}"}, {"message": f"Record already exist at row {data + 2}"},
status=status.HTTP_400_BAD_REQUEST status=status.HTTP_400_BAD_REQUEST
......
...@@ -15,6 +15,7 @@ from app.applicationlayer.management.delegation.views import DelegationViewSet ...@@ -15,6 +15,7 @@ from app.applicationlayer.management.delegation.views import DelegationViewSet
from app.applicationlayer.download.accounts.views import UserDownloadRequest from app.applicationlayer.download.accounts.views import UserDownloadRequest
from app.applicationlayer.download.department.views import DepartmentDownloadRequest from app.applicationlayer.download.department.views import DepartmentDownloadRequest
from app.applicationlayer.download.company.views import CompanyDownloadRequest from app.applicationlayer.download.company.views import CompanyDownloadRequest
from app.applicationlayer.download.batch_upload.views import BatchUploadFormatViewSet
router = routers.DefaultRouter() router = routers.DefaultRouter()
...@@ -28,6 +29,7 @@ router.register(r'notifications', NotificationsViewset) ...@@ -28,6 +29,7 @@ router.register(r'notifications', NotificationsViewset)
router.register(r'user-download', UserDownloadRequest) router.register(r'user-download', UserDownloadRequest)
router.register(r'department-download', DepartmentDownloadRequest) router.register(r'department-download', DepartmentDownloadRequest)
router.register(r'company-download', CompanyDownloadRequest) router.register(r'company-download', CompanyDownloadRequest)
router.register(r'batch-upload-format', BatchUploadFormatViewSet)
router.register(r'delegations', DelegationViewSet) router.register(r'delegations', DelegationViewSet)
router.register(r'extract-transform-load', BatchUploadViewSet) router.register(r'extract-transform-load', BatchUploadViewSet)
......
...@@ -82,6 +82,7 @@ CORS_ORIGIN_ALLOW_ALL = True ...@@ -82,6 +82,7 @@ CORS_ORIGIN_ALLOW_ALL = True
[SETTINGS] [SETTINGS]
CONFIG = config.settings.staging CONFIG = config.settings.staging
BATCH_UPLOAD_FORMAT_FILENAME = batch_uploadxxx.xlsx
[NOTIFICATION_EMAIL] [NOTIFICATION_EMAIL]
APPROVER_MESSAGE = has sent you an APPROVAL REQUEST for change request;RMS-ACTIONREQUIRED APPROVER_MESSAGE = has sent you an APPROVAL REQUEST for change request;RMS-ACTIONREQUIRED
......
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