Commit 6c75a2ea authored by John Red Medrano's avatar John Red Medrano

Merge branch 'RMSv2' of http://42.61.118.105:7990/scm/rms/api-main-service...

Merge branch 'RMSv2' of http://42.61.118.105:7990/scm/rms/api-main-service into core-dev-red-develop
parents 77dc42e7 58f38099
......@@ -2,6 +2,7 @@ from rest_framework import serializers
from app.entities.models import AllowedCompany
from app.applicationlayer.utils import model_to_dict
class AllowedCompanySerializer(serializers.ModelSerializer):
def to_representation(self, instance):
......
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import AllowedCompany
from django.db.models import Q
......
# from rest_framework.views import APIView
from rest_framework import status, viewsets
from rest_framework.response import Response
from app.entities import enums
from app.entities.models import AllowedCompany
from app.applicationlayer.utils import CustomPagination, status_message_response
# from rest_framework.exceptions import ParseError
from app.applicationlayer.utils import (CustomPagination,
status_message_response)
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter
......@@ -20,7 +18,6 @@ from django.db import IntegrityError
class AllowedCompanyViewSet(viewsets.ModelViewSet):
# queryset = AllowedCompany.objects.all()
queryset = AllowedCompany.objects.select_related(
'id_number', 'company_pivot', 'group_pivots'
).all()
......@@ -34,8 +31,7 @@ class AllowedCompanyViewSet(viewsets.ModelViewSet):
'id_number__code', 'company_pivot__code',
'group_pivots__code'
)
# @decorators.rms.user_list
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
......
......@@ -2,11 +2,8 @@ from app.entities import models
from datetime import datetime
from rest_framework.response import Response
from rest_framework import status, views
from django.db.models import Q
import requests
from django.conf import settings
from datetime import timedelta
from app.helper.email_service import sender
from app.applicationlayer.utils import main_threading
from rest_framework.permissions import AllowAny
......@@ -26,7 +23,7 @@ class CancelTriggerAPIView(views.APIView):
list_of_emails = []
for data in today_mail:
if data.is_sent == False and data.form_code.status == 'Pending' and data.frm_approver.is_action == True:
if data.is_sent is False and data.form_code.status == 'Pending' and data.frm_approver.is_action is True:
cr_link = f'{CR_FRONT_LINK}/{data.form_code}'
......@@ -44,7 +41,7 @@ class CancelTriggerAPIView(views.APIView):
requestor_recipient = data.form_code.requested_by_user.email
admin = 'Test'
args_requestor = [requestor_name, auto_cancel_date,
args_requestor = [requestor_name, auto_cancel_date,
date_submitted_last_approver, approver_pending_action,
cr_number, cr_name, company_requestedto,
department_requestedto, priority_level, form_status, url,
......
......@@ -2,11 +2,8 @@ from app.entities import models
from datetime import datetime
from rest_framework.response import Response
from rest_framework import status, views
from django.db.models import Q
import requests
from django.conf import settings
from datetime import timedelta
from app.helper.email_service import sender
from app.applicationlayer.utils import main_threading
from rest_framework.permissions import AllowAny
......@@ -27,7 +24,7 @@ class OverdueTriggerAPIView(views.APIView):
list_of_emails = []
for data in today_mail:
if data.is_sent == False and (data.form_code.status == 'Pending' or
if data.is_sent is False and (data.form_code.status == 'Pending' or
data.form_code.status == 'Approved' or
data.form_code.status == 'Rejected'):
......
......@@ -2,9 +2,7 @@ from app.entities import models
from datetime import datetime
from rest_framework.response import Response
from rest_framework import status, views
from django.db.models import Q
import requests
from django.conf import settings
from datetime import timedelta
from app.helper.email_service import sender
......@@ -29,7 +27,7 @@ class ReminderTriggerAPIView(views.APIView):
list_of_emails = []
for data in today_mail:
if data.frm_approver.is_action == True and data.form_code.status == 'Pending':
if data.frm_approver.is_action is True and data.form_code.status == 'Pending':
# common details
cr_link = f'{CR_FRONT_LINK}/{data.frm_approver.form_code}'
......
from app.entities import models
from rest_framework import serializers
from app.applicationlayer.utils import model_to_dict
class ChangeRequestFormApproversSerializer(
......
......@@ -12,8 +12,7 @@ from app.applicationlayer.utils import (
class ChangeRequestFormApproversViewset(viewsets.ModelViewSet):
# queryset = models.ChangeRequestFormApprovers.objects.all().order_by('level')
queryset = models.ChangeRequestFormApprovers.objects.select_related(
'form_code', 'tmp_approver'
).all().order_by('level')
......
from app.entities import models
from rest_framework import serializers
from app.applicationlayer.utils import model_to_dict
class ChangeRequestFormAttachmentsSerializer(
......
from app.entities import models
from rest_framework import serializers
from app.applicationlayer.utils import model_to_dict
class ChangeRequestFormDetailsSerializer(
......
......@@ -12,8 +12,7 @@ from app.applicationlayer.utils import (
class ChangeRequestFormDetailsViewset(viewsets.ModelViewSet):
# queryset = models.ChangeRequestFormDetails.objects.all()
queryset = models.ChangeRequestFormDetails.objects.select_related(
'form_code'
).all()
......
from rest_framework import viewsets as meviewsets
from rest_framework.viewsets import ReadOnlyModelViewSet
from drf_renderer_xlsx.mixins import XLSXFileMixin
from drf_renderer_xlsx.renderers import XLSXRenderer
from app.entities.models import (
ChangeRequestFormHeader,
ChangeRequestFormApprovers,
ChangeRequestFormStakeHolders,
AllowedCompany
)
# from app.applicationlayer.form_listing_ import headers
from app.applicationlayer.cms.form.download.serializers import headers
from django.db.models import CharField, Value
from django.db.models import Q
from rest_framework.response import Response
from rest_framework.permissions import AllowAny
# from cms.applicationlayer.utilities import logged_user
class DownloadRequest(XLSXFileMixin, ReadOnlyModelViewSet):
......
import configparser
import shutil
import os
from django.shortcuts import render
from rest_framework import viewsets
from rest_framework.views import APIView
from app.entities import models
from datetime import datetime
from datetime import timedelta
from rest_framework.response import Response
from rest_framework import status, views
from rest_framework.decorators import action
from django.http import Http404
from django.db.models import Q
import requests
from django.conf import settings
from rest_framework.exceptions import ValidationError
from django.db import transaction, IntegrityError, connection
from app.applicationlayer.utils import (QuerySetHelper,
status_message_response,
send_broadcast_message)
from django.db import transaction
from app.applicationlayer.utils import (status_message_response,
send_broadcast_message,
CustomPagination,
model_to_dict,
main_threading,
error_message)
from app.businesslayer.changerequest import (change_request,
change_request_template)
from app.applicationlayer.cms.utils_cr import (number_generator,
send_mail_requestor,
next_approver_email,
from app.applicationlayer.cms.utils_cr import (next_approver_email,
crhistory_save,
send_mail_vendor,
get_max_batchno,
generate_template_id,
crhistory_create_save,
entity_log_bulk,
reminder_trigger_save,
overdue_trigger_save,
reset_autoemail_tables,
delete_master_attachment_file)
from app.entities import enums
from app.applicationlayer.utils import model_to_dict
import json
from django.shortcuts import get_object_or_404
from django.db.models import Min
from app.applicationlayer.utils import (CustomPagination,
status_message_response)
from rest_framework.exceptions import ParseError
from app.businesslayer.changerequest.change_request import (
form_add_edit_delete
)
......@@ -66,8 +58,6 @@ from app.applicationlayer.cms.form.header.table_filters import HeaderFilterSet
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
import json
from app.applicationlayer.utils import main_threading
from django.core.files.base import ContentFile
from django.conf import settings
......@@ -76,9 +66,6 @@ from django.http import HttpResponse
from xhtml2pdf import pisa
from app.helper.decorators import *
from app.applicationlayer.utils import error_message
config = configparser.ConfigParser()
config_file = os.path.join('./', 'env.ini')
config.read(config_file)
......@@ -223,22 +210,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
overdue_filtered = change_request.filter_overdue(self.queryset)
overdue = overdue_filtered.count()
# server side computations
# status_total = pending + approved + rejected + cancelled + completed
# close = rejected + cancelled + completed
# opened = pending + approved
# open_percent = round((opened/status_total) * 100)
# close_percent = round((close/status_total) * 100)
# priority_total = high + normal
# high_percent = round((high/priority_total) * 100)
# normal_percent = round((normal/priority_total) * 100)
message = {
'account_no': id_number,
......@@ -251,10 +222,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
'normal': normal,
'awaiting': awaiting,
'overdue': overdue,
# 'open_percent': open_percent,
# 'close_percent': close_percent,
# 'high_percent': high_percent,
# 'normal_percent': normal_percent,
'code': 200,
'status': 'success',
'message': 'Dashboard Summary'
......@@ -579,13 +546,10 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
# shutil.copy(full_file_name, dest)
for file_name in attch:
print(file_name['file_upload__url'])
a = os.path.join(settings.MEDIA_ROOT, file_name['file_upload__url'])
# full_file_name = os.path.join(my_folder, file_name['file_upload__url'])
# print(full_file_name)
if os.path.isfile(a):
print(a)
# print(type(a))
b = open(a, 'r')
shutil.copy(b, my_folder)
else:
......@@ -1192,6 +1156,13 @@ class ChangeRequestFormPost(APIView):
form_header = request.data
try:
# Restrict a requestor to submit a CR without atleast 1 approver
counter = validation_existing_approver(form_header['frm_approvers'])
if form_header['status'].lower() == 'pending' and counter == 0:
return error_message('400', 'Please select at least 1 approver before submitting this request.',
'failed', status.HTTP_400_BAD_REQUEST)
data_list_approver = []
data_list_stake = []
data_list_attach = []
......@@ -1213,10 +1184,6 @@ class ChangeRequestFormPost(APIView):
'template_no': form_header['template_no']
}
# 'company_desc': None,
# 'department_desc': None,
# 'requested_desc': None,
sp1 = transaction.savepoint() # nothing will save to db
serializer = ChangeRequestFormHeaderSerializer(
......
......@@ -12,7 +12,7 @@ from app.applicationlayer.utils import (
class ChangeRequestFormStakeHoldersViewset(viewsets.ModelViewSet):
# queryset = models.ChangeRequestFormStakeHolders.objects.all()
queryset = models.ChangeRequestFormStakeHolders.objects.select_related(
'form_code'
).all()
......
......@@ -4,7 +4,6 @@ from app.applicationlayer.utils import (CustomPagination,
from app.applicationlayer.management.account.serializer import ChangeRequestList
from app.entities import models
from rest_framework.response import Response
from django.db.models import Q
from rest_framework import status
......
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import Company
from django.db.models import Q
......
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from rest_framework.filters import SearchFilter, OrderingFilter
from app.entities.models import (
Company, AllowedCompany,
ChangeRequestFormHeader, AllowedCompany
ChangeRequestFormHeader
)
from rest_framework import viewsets, status
from rest_framework import viewsets
from app.businesslayer.company.serializer import AdminCompanySerializer
from app.applicationlayer.utils import CustomPagination, status_message_response
from app.applicationlayer.utils import (CustomPagination,
status_message_response)
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.management.company import serializer
from app.applicationlayer.cms.master.form.company.table_filters import (
ChangeRequestCompanyFilterSet
)
from app.helper.decorators import rms
from rest_framework.response import Response
from django.db.models import Q
from rest_framework.decorators import action
......
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import Department
from django.db.models import Q
......
from rest_framework import viewsets, status
from rest_framework import viewsets
from rest_framework.response import Response
from app.applicationlayer.utils import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Department, AllowedCompany, Delegation
from app.entities.models import Department, AllowedCompany
from app.applicationlayer.utils import (
CustomPagination, status_message_response
)
from django_filters.rest_framework import DjangoFilterBackend
from app.applicationlayer.master.department import serializer
from app.applicationlayer.cms.master.form.department.table_filters import (
ChangeRequestDepartmentFilterSet
)
from app.helper.decorators import rms
from django.db.models import Q
from rest_framework.exceptions import ParseError
class ChangeRequestDepartmentFormViewSet(viewsets.ModelViewSet):
......
......@@ -3,10 +3,7 @@ from app.applicationlayer.utils import (CustomPagination,
status_message_response)
from app.applicationlayer.management.account.serializer import ChangeRequestList
from app.entities import models
from rest_framework.response import Response
from django.db.models import Q, F
from rest_framework import status
# from django.db.models import F
from django.db.models import Q
class UserListTemplate(APIView):
......
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import Company
from django.db.models import Q
......
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Company, AllowedCompany
from rest_framework import viewsets, status
from rest_framework import viewsets
from app.businesslayer.company.serializer import AdminCompanySerializer
from app.applicationlayer.utils import CustomPagination, status_message_response
from django_filters.rest_framework import DjangoFilterBackend
......@@ -9,7 +9,6 @@ from app.applicationlayer.management.company import serializer
from app.applicationlayer.cms.master.template.company.table_filters import (
ChangeRequestCompanyFilterSet
)
from app.helper.decorators import rms
from rest_framework.response import Response
from django.db.models import Q
......
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import User
from django.db.models import Q
class DefaultApproverFilterSet(filters.FilterSet):
......
from rest_framework import viewsets, status
from rest_framework import viewsets
from rest_framework.response import Response
from app.applicationlayer.utils import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import User, AllowedCompany
......@@ -13,9 +12,7 @@ from app.applicationlayer.cms.master.template.default_approver import serializer
from app.applicationlayer.cms.master.template.default_approver.table_filter import (
DefaultApproverFilterSet
)
from app.helper.decorators import rms
from django.db.models import Q
from rest_framework.exceptions import ParseError
class DefaultApproverViewSet(viewsets.ModelViewSet):
......
......@@ -9,7 +9,7 @@ class AdminDepartmentSerializer(serializers.ModelSerializer):
ret = super().to_representation(instance)
ret['company'] = model_to_dict(instance.company)
return ret
class Meta:
model = Department
fields = '__all__'
......
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import Department
from django.db.models import Q
......
from rest_framework import viewsets, status
from rest_framework import viewsets
from rest_framework.response import Response
from app.applicationlayer.utils import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Department, AllowedCompany
......@@ -13,9 +12,7 @@ from app.applicationlayer.master.department import serializer
from app.applicationlayer.cms.master.template.department.table_filters import (
ChangeRequestDepartmentFilterSet
)
from app.helper.decorators import rms
from django.db.models import Q
from rest_framework.exceptions import ParseError
class ChangeRequestDepartmentTemplateViewSet(viewsets.ModelViewSet):
......
from rest_framework import viewsets, status
from rest_framework import viewsets
from rest_framework.response import Response
from app.entities.models import ChangeRequestTemplateHeader, AllowedCompany
from app.applicationlayer.cms.master.template_list.serializers import ChangeRequestTemplatesSerializer
......
from rest_framework import serializers
from app.entities import models
from app.applicationlayer.utils import model_to_dict
class ChangeRequestTemplateApproversSerializer(
......
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import ChangeRequestTemplateApprovers
from django.db.models import Q
class ApproverFilter(filters.FilterSet):
......
from rest_framework import serializers
from app.entities import models
from app.applicationlayer.utils import model_to_dict
class ChangeRequestTemplateAttachmentsSerializer(
......
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import ChangeRequestTemplateAttachments
from django.db.models import Q
class AttachmentFilter(filters.FilterSet):
......
from rest_framework import serializers
from app.entities import models
from app.applicationlayer.utils import model_to_dict
class ChangeRequestTemplateDetailsSerializer(
......
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import ChangeRequestTemplateDetails
from django.db.models import Q
class DetailsFilter(filters.FilterSet):
......
from app.entities import models
from rest_framework import serializers
from django.db.models import Q
from django.conf import settings
from app.applicationlayer.utils import model_to_dict
from drf_writable_nested import WritableNestedModelSerializer
from app.applicationlayer.cms.utils_cr import (get_account_details,
get_dept_details,
get_companies_details)
from app.applicationlayer.cms.template.approver.serializers import ChangeRequestTemplateApproversSerializer
from app.applicationlayer.cms.template.stakeholder.serializers import ChangeRequestTemplateStakeHoldersSerializer
from app.applicationlayer.cms.template.attachment.serializers import ChangeRequestTemplateAttachmentsSerializer
from app.applicationlayer.cms.template.details.serializers import ChangeRequestTemplateDetailsSerializer
from django.conf import settings
from rest_framework.exceptions import ValidationError
from app.applicationlayer.cms.utils_cr import (
BadRequestException
)
class ChangeRequestTemplatesSerializer(
serializers.ModelSerializer
......
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import ChangeRequestTemplateHeader
from django.db.models import Q
class HeaderFilterSet(filters.FilterSet):
......
from rest_framework.views import APIView
from rest_framework import viewsets
from app.entities import models
from app.entities import enums, models
from rest_framework.response import Response
from rest_framework import status, views
......@@ -11,24 +11,18 @@ from django.db.models import Q
from rest_framework.exceptions import ValidationError
from django.db import transaction
from app.applicationlayer.utils import (CustomPagination,
status_message_response)
status_message_response,
log_save,
model_to_dict)
from app.applicationlayer.cms.utils_cr import (
entity_log_bulk,
delete_master_attachment_file
)
from app.applicationlayer.utils import model_to_dict
from app.entities import enums, models
from django.db.models import Q
from app.applicationlayer.utils import log_save, CustomPagination
from rest_framework.exceptions import ParseError
from app.businesslayer.changerequest.change_request_template import (
tmp_add_edit_delete,
validation_approver_same_level,
validation_existing_vendor_requestor
tmp_add_edit_delete
)
from app.applicationlayer.management.account.serializer import ChangeRequestList
from app.applicationlayer.cms.template.approver.serializers import ChangeRequestTemplateApproversSerializer
from app.applicationlayer.cms.template.stakeholder.serializers import ChangeRequestTemplateStakeHoldersSerializer
from app.applicationlayer.cms.template.details.serializers import ChangeRequestTemplateDetailsSerializer
......@@ -38,11 +32,6 @@ from app.applicationlayer.cms.template.header.serializers import ChangeRequestTe
from app.applicationlayer.cms.template.header.table_filters import HeaderFilterSet
from app.helper.decorators import *
# from django_filters import rest_framework as filters
# from rest_framework.filters import SearchFilter, OrderingFilter
# from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
......
from django_filters import rest_framework as filters
from django.db.models import Count
from app.entities.models import ChangeRequestTemplateStakeHolders
from django.db.models import Q
class StakeHolderFilter(filters.FilterSet):
......
from datetime import datetime
from django.db.models.functions import Lower
from functools import wraps
from django.conf import settings
import requests
from app.entities import models
from datetime import timedelta
from django.db.models import Q
......@@ -11,10 +8,8 @@ from app.helper.email_service import sender
from app.applicationlayer.utils import log_save
from app.entities import enums
from app.applicationlayer.utils import model_to_dict
from rest_framework.exceptions import ParseError
from django.db import IntegrityError
from rest_framework.exceptions import APIException
from django.db.models import Max
import os
......
......@@ -291,34 +291,56 @@ def form_add_edit_delete(form_request_body,
# update or create
for i in form_request_body:
if "id" in i:
frm_instance = queryset.objects.get(
pk=i['id']
)
if not i['id'] is None:
frm_instance = queryset.objects.get(
pk=i['id']
)
frm_code = {
"form_code": form_code
}
data = {**i, **frm_code}
frm_code = {
"form_code": form_code
}
data = {**i, **frm_code}
serializer = serializer_data(frm_instance,
data=data,
partial=partial,
context={"request":self.request})
serializer = serializer_data(frm_instance,
data=data,
partial=partial,
context={"request": self.request})
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(frm_instance)
self.perform_update(serializer)
new_instance = serializer.data
# comment
crhistory_save(
batch_no,
main_action,
enums.CREnum.UPDATE.value,
entity,
form_code,
old_instance,
new_instance
)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(frm_instance)
self.perform_update(serializer)
new_instance = serializer.data
crhistory_save(
batch_no,
main_action,
enums.CREnum.UPDATE.value,
entity,
form_code,
old_instance,
new_instance
)
else:
frm_code = {
"form_code": form_code
}
data = {**i, **frm_code}
serializer = serializer_data(data=data,
context={"request": self.request})
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
new_instance = serializer.data
crhistory_save(
batch_no,
main_action,
enums.CREnum.ADD.value,
entity,
form_code,
None,
new_instance
)
else:
frm_code = {
......@@ -326,7 +348,7 @@ def form_add_edit_delete(form_request_body,
}
data = {**i, **frm_code}
serializer = serializer_data(data=data,
context={"request":self.request})
context={"request": self.request})
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
......@@ -377,54 +399,78 @@ def attachment_add_edit_delete(form_request_body,
# update or create
for i in form_request_body:
if "id" in i:
frm_instance = queryset.objects.get(
pk=i['id']
)
if not i['id'] is None:
frm_instance = queryset.objects.get(
pk=i['id']
)
data_old = {
'id': frm_instance.id,
'attachment_type': frm_instance.attachment_type,
'attachment_name': frm_instance.attachment_name,
'file_name': frm_instance.file_name,
'description': frm_instance.description,
'file_upload': frm_instance.file_upload.id
}
data_old = {
'id': frm_instance.id,
'attachment_type': frm_instance.attachment_type,
'attachment_name': frm_instance.attachment_name,
'file_name': frm_instance.file_name,
'description': frm_instance.description,
'file_upload': frm_instance.file_upload.id
}
data_new = {
'id': i['id'],
'attachment_type': i['attachment_type'],
'attachment_name': i['attachment_name'],
'file_name': i['file_name'],
'description': i['description'],
'file_upload': i['file_upload']
}
frm_code = {
"form_code": form_code,
"uploaded_by": id_number
}
data = {**i, **frm_code}
old_instance = model_to_dict(frm_instance)
if not data_old == data_new:
serializer = serializer_data(frm_instance,
data=data,
partial=partial,
context={"request": self.request})
data_new = {
'id': i['id'],
'attachment_type': i['attachment_type'],
'attachment_name': i['attachment_name'],
'file_name': i['file_name'],
'description': i['description'],
'file_upload': i['file_upload']
}
frm_code = {
"form_code": form_code,
"uploaded_by": id_number
}
data = {**i, **frm_code}
old_instance = model_to_dict(frm_instance)
if not data_old == data_new:
serializer = serializer_data(frm_instance,
data=data,
partial=partial,
context={"request": self.request})
serializer.is_valid(raise_exception=True)
self.perform_update(serializer)
new_instance = serializer.data
crhistory_save(
batch_no,
main_action,
enums.CREnum.UPDATE.value,
entity,
form_code,
old_instance,
new_instance
)
else:
frm_code = {
"form_code": form_code,
"uploaded_by": id_number
}
data = {**i, **frm_code}
serializer = serializer_data(data=data,
context={"request":self.request})
serializer.is_valid(raise_exception=True)
self.perform_update(serializer)
self.perform_create(serializer)
new_instance = serializer.data
crhistory_save(
batch_no,
main_action,
enums.CREnum.UPDATE.value,
enums.CREnum.ADD.value,
entity,
form_code,
old_instance,
None,
new_instance
)
......
......@@ -49,31 +49,60 @@ def tmp_add_edit_delete(tmp_request_body,
# update or create
for i in tmp_request_body:
if "id" in i:
tmp_instance = queryset.objects.get(
pk=i['id']
)
tmp_code = {
"template_no": template_no
}
data = {**i, **tmp_code}
serializer = serializer_data(tmp_instance,
data=data,
partial=partial)
if not i['id'] is None:
tmp_instance = queryset.objects.get(
pk=i['id']
)
tmp_code = {
"template_no": template_no
}
data = {**i, **tmp_code}
serializer = serializer_data(tmp_instance,
data=data,
partial=partial)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(tmp_instance)
self.perform_update(serializer)
new_instance = serializer.data
log_save(
enums.LogEnum.UPDATE.value,
enum_type,
i['id'],
old_instance,
new_instance
)
else:
tmp_code = {
"template_no": template_no
}
data = {**i, **tmp_code}
serializer = serializer_data(data=data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
new_instance = serializer.data
try:
log_save(
enums.LogEnum.ADD.value,
enum_type,
old_instance['id'],
'',
new_instance
)
except Exception as e:
log_save(
enums.LogEnum.ADD.value,
enum_type,
new_instance['id'],
'',
new_instance
)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(tmp_instance)
self.perform_update(serializer)
new_instance = serializer.data
log_save(
enums.LogEnum.UPDATE.value,
enum_type,
i['id'],
old_instance,
new_instance
)
else:
tmp_code = {
"template_no": template_no
......@@ -181,7 +210,7 @@ def validation_vendor_unique_level(approvers):
if 'delegation' in approver:
if approver['delegation'] == 'DELEGATION-20191119-0000002':
data_level.append(approver['level'])
for approver in approvers:
if 'delegation' in approver:
if not approver['delegation'] is None:
......
......@@ -399,12 +399,6 @@ def FormValidation(function):
return error_message('400', validation_result + ' is already exist for the same level of approval.',
'failed', status.HTTP_400_BAD_REQUEST)
# Restrict a requestor to submit a CR without atleast 1 approver
counter = validation_existing_approver(frm_approvers)
if form_header['status'].lower() == 'pending' and counter == 0:
return error_message('400', 'Please select at least 1 approver before submitting this request.',
'failed', status.HTTP_400_BAD_REQUEST)
# Do not allow saving user as Vendor and other delegation
validate = validation_poc_vendor_only(
form_header['requested_to_user'], frm_approvers)
......
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