Commit 309019c0 authored by Gladys Forte's avatar Gladys Forte

Merge pull request #82 in RMS/api-main-service from gladys-dev2 to RMSv2

* commit '2d922195':
  update folder structure cms
  update 2
parents 725a439f 2d922195
from app.entities import models from app.entities import models
from rest_framework import serializers from rest_framework import serializers
from django.db.models import Q from django.db.models import Q
from app.applicationlayer.management.changerequest.utils_cr import logged_user from app.applicationlayer.cms.utils_cr import logged_user
class ChangeRequestTemplatesSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateHeader
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'template_no']
class ChangeRequestTemplateApproversSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateApprovers
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
class ChangeRequestTemplateStakeHoldersSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateStakeHolders
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
class ChangeRequestTemplateAttachmentsSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateAttachments
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
class ChangeRequestTemplateDetailsSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateDetails
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
class ChangeRequestFormHeaderSerializer( class ChangeRequestFormHeaderSerializer(
......
...@@ -2,7 +2,7 @@ from django.shortcuts import render ...@@ -2,7 +2,7 @@ from django.shortcuts import render
from rest_framework import viewsets as meviewsets from rest_framework import viewsets as meviewsets
from rest_framework.views import APIView from rest_framework.views import APIView
from app.applicationlayer.management.changerequest import serializers from app.applicationlayer.cms.form import serializers
from app.entities import models from app.entities import models
from app.applicationlayer import paginators from app.applicationlayer import paginators
...@@ -22,6 +22,7 @@ from rest_framework.exceptions import ValidationError ...@@ -22,6 +22,7 @@ from rest_framework.exceptions import ValidationError
from django.db import transaction, IntegrityError, connection from django.db import transaction, IntegrityError, connection
from app.applicationlayer.utils import QuerySetHelper from app.applicationlayer.utils import QuerySetHelper
from app.businesslayer.changerequest import change_request from app.businesslayer.changerequest import change_request
from app.applicationlayer.cms.utils_cr import number_generator
APPROVER_MESSAGE = settings.APPROVER_MESSAGE APPROVER_MESSAGE = settings.APPROVER_MESSAGE
...@@ -34,256 +35,6 @@ VENDOR_ACCEPTANCE_MESSAGE = settings.VENDOR_ACCEPTANCE_MESSAGE ...@@ -34,256 +35,6 @@ VENDOR_ACCEPTANCE_MESSAGE = settings.VENDOR_ACCEPTANCE_MESSAGE
VENDOR_REJECT_MESSAGE = settings.VENDOR_REJECT_MESSAGE VENDOR_REJECT_MESSAGE = settings.VENDOR_REJECT_MESSAGE
class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateHeader.objects.all()
lookup_field = 'template_no'
serializer_class = serializers.ChangeRequestTemplatesSerializer
pagination_class = paginators.SimplePageNumberPagination
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(
deleted_at=None
)
self.queryset = self.queryset.order_by('-created')
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplatesViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(
deleted_at=None,
template_no=str(self.kwargs.get('template_no'))
).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
def destroy(self, request, *args, **kwargs):
try:
template_no = self.kwargs['template_no']
instance = models.ChangeRequestTemplateHeader.objects.filter(
Q(template_no=template_no) &
Q(deleted_at=None)
).update(deleted_at=datetime.now())
return Response({"message": "Deleted"}, status=status.HTTP_200_OK)
except Exception as e:
return Response(e,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def partial_update(self, request, *args, **kwargs):
try:
kwargs['partial'] = True
template_no = self.kwargs['template_no']
instance = models.ChangeRequestTemplateHeader.objects.filter(
template_no=template_no
).order_by('-deleted_at')
instance.update(deleted_at=None)
message = "Archived Change Request restored"
return Response(message, status=status.HTTP_200_OK)
except Exception as e:
message = {
500, 'failed',
'Request was not able to process' + str(e), []
}
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class ChangeRequestTemplateApproversViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateApprovers.objects.all()
serializer_class = serializers.ChangeRequestTemplateApproversSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code"
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplateApproversViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestTemplateAttachmentsViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateAttachments.objects.all()
serializer_class = serializers.ChangeRequestTemplateAttachmentsSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code"
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(
ChangeRequestTemplateAttachmentsViewset, self
).list(request)
class ChangeRequestTemplateStakeHoldersViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateStakeHolders.objects.all()
serializer_class = serializers.ChangeRequestTemplateStakeHoldersSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code"
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplateStakeHoldersViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestTemplateDetailsViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateDetails.objects.all()
serializer_class = serializers.ChangeRequestTemplateDetailsSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code"
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplateDetailsViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestTemplatePost(APIView):
@transaction.atomic()
def post(self, request):
template_header = request.data
try:
data_list_approver = []
data_list_stake = []
data_list_attach = []
data_list_detail = []
template_header_data = {
'requested_to_template_name': template_header['requested_to_template_name'],
'requested_to_template_id': template_header['requested_to_template_id'],
'requested_to_objective': template_header['requested_to_objective'],
'requested_to_target_date': template_header['requested_to_target_date'],
'requested_to_priority': template_header['requested_to_priority'],
'description': template_header['description'],
'created_by_department': template_header['created_by_department'],
'created_by_user': template_header['created_by_user'],
'requested_to_company': template_header['requested_to_company'],
'requested_to_department': template_header['requested_to_department'],
'requested_to_user': template_header['requested_to_user']
}
tmp_approvers = template_header['tmp_approvers']
tmp_stakes = template_header['tmp_stakes']
tmp_attachments = template_header['tmp_attachments']
tmp_details = template_header['tmp_details']
sp1 = transaction.savepoint() # nothing will save to db
serializer = serializers.ChangeRequestTemplatesSerializer(
data=template_header_data)
if serializer.is_valid(raise_exception=True):
serializer.save()
tmp_id = serializer.data['template_no']
# create template approvers
for tmp_approver in tmp_approvers:
tmp_approver['template_no'] = tmp_id
data_list_approver.append(tmp_approver)
serializerApprover = serializers.ChangeRequestTemplateApproversSerializer(
data=data_list_approver, many=True)
if serializerApprover.is_valid(raise_exception=True):
serializerApprover.save()
# create template stakes
for tmp_stake in tmp_stakes:
tmp_stake['template_no'] = tmp_id
data_list_stake.append(tmp_stake)
serializerStake = serializers.ChangeRequestTemplateStakeHoldersSerializer(
data=data_list_stake, many=True)
if serializerStake.is_valid(raise_exception=True):
serializerStake.save()
# create template attachments
for tmp_attachment in tmp_attachments:
tmp_attachment['template_no'] = tmp_id
data_list_attach.append(tmp_attachment)
serializerAttach = serializers.ChangeRequestTemplateAttachmentsSerializer(
data=data_list_attach, many=True)
if serializerAttach.is_valid(raise_exception=True):
serializerAttach.save()
# create template details
for tmp_detail in tmp_details:
tmp_detail['template_no'] = tmp_id
data_list_detail.append(tmp_detail)
serializerDetail = serializers.ChangeRequestTemplateDetailsSerializer(
data=data_list_detail, many=True)
if serializerDetail.is_valid(raise_exception=True):
serializerDetail.save()
message = {
'code': 201,
'status': 'success',
'message': 'Template Details successfully saved!',
'results': serializer.data
}
return Response(message, status=status.HTTP_201_CREATED)
except ValidationError as e:
transaction.savepoint_rollback(sp1)
message = {
'code': 400,
'status': 'failed',
'message': str(e),
}
return Response(message, status=status.HTTP_400_BAD_REQUEST)
except Exception as e:
transaction.savepoint_rollback(sp1)
message = {
'code': 500,
'status': 'failed',
'message': 'Request was not able to process' + str(e),
}
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
# Change Request Form Views # Change Request Form Views
class ChangeRequestFormsViewset(meviewsets.ModelViewSet): class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
...@@ -328,10 +79,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -328,10 +79,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
url_path='dashboard', url_path='dashboard',
name="Dashboard Summary") name="Dashboard Summary")
def dashboard_view(self, request): def dashboard_view(self, request):
id_number = self.request.user id_number = self.request.user
# id_number = 'Acct-20190813-0000138' print(id_number)
self.queryset = change_request.list_by_user(id_number.code) self.queryset = change_request.list_by_user(id_number.code)
...@@ -395,7 +145,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -395,7 +145,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
overdue = overdue_filtered.count() overdue = overdue_filtered.count()
message = { message = {
'account_no': id_number, 'account_no': id_number.code,
'pending': pending, 'pending': pending,
'approved': approved, 'approved': approved,
'rejected': rejected, 'rejected': rejected,
...@@ -412,7 +162,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -412,7 +162,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
return Response(message, status=status.HTTP_200_OK) return Response(message, status=status.HTTP_200_OK)
@action(detail=False, @action(detail=False,
methods=['get'], methods=['get'],
url_path='status', url_path='status',
...@@ -421,8 +170,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -421,8 +170,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
id_number = self.request.user id_number = self.request.user
# id_number = 'Acct-20190531-0000002'
self.queryset = change_request.list_by_user(id_number.code) self.queryset = change_request.list_by_user(id_number.code)
self.queryset = change_request.filter_status( self.queryset = change_request.filter_status(
...@@ -455,8 +202,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -455,8 +202,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
id_number = self.request.user id_number = self.request.user
# id_number = 'Acct-20190531-0000002'
self.queryset = change_request.list_by_user(id_number.code) self.queryset = change_request.list_by_user(id_number.code)
self.queryset = change_request.filter_overdue(self.queryset) self.queryset = change_request.filter_overdue(self.queryset)
...@@ -485,11 +230,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -485,11 +230,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
id_number = self.request.user id_number = self.request.user
# id_number = 'Acct-20190813-0000137'
self.queryset = change_request.list_by_user(id_number.code) self.queryset = change_request.list_by_user(id_number.code)
self.queryset = change_request.filter_awaiting(self.queryset, id_number) self.queryset = change_request.filter_awaiting(self.queryset, id_number.code)
self.queryset = change_request.filter_base( self.queryset = change_request.filter_base(
self.queryset, self.queryset,
...@@ -502,49 +245,16 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -502,49 +245,16 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
request.query_params.get('form_type'), request.query_params.get('form_type'),
) )
self.queryset = self.queryset.filter(status__ne='Rejected') self.queryset = self.queryset.filter(
~Q(status='Rejected') |
self.queryset = self.queryset.filter(status__ne='Closed') ~Q(status='Closed') |
~Q(status='Cancelled'))
self.queryset = self.queryset.filter(status__ne='Cancelled')
self.queryset = self.queryset.order_by('-created') self.queryset = self.queryset.order_by('-created')
self.queryset = QuerySetHelper.Sort(self) self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestFormsViewset, self).list(request) return super(ChangeRequestFormsViewset, self).list(request)
def destroy(self, request, *args, **kwargs):
# instance = self.get_object()
form_code = self.kwargs['form_code']
instance = models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).first()
if instance.status.lower() == 'draft':
models.ChangeRequestFormApprovers.objects(
form_code=form_code
).delete()
models.ChangeRequestFormDetails.objects(
form_code=form_code
).delete()
models.ChangeRequestFormStakeHolders.objects(
form_code=form_code
).delete()
models.ChangeRequestFormAttachments.objects(
form_code=form_code
).delete()
models.ChangeRequestFormTasks.objects(
form_code=form_code
).delete()
models.ChangeRequestFormHeader.objects(form_code=form_code).delete()
# self.perform_destroy(instance)
return Response({"message": "Change Request Deleted"}, status=status.HTTP_200_OK)
else:
message = {"message": "Cant delete this record, it has an ongoing tansaction"}
return Response(
message,
status=status.HTTP_204_NO_CONTENT
)
def retrieve(self, request, *args, **kwargs): def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter( instance = self.queryset.filter(
deleted_at=None, deleted_at=None,
...@@ -591,60 +301,60 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet): ...@@ -591,60 +301,60 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestFormApprovers.objects.all() queryset = models.ChangeRequestFormApprovers.objects.all()
serializer_class = serializers.ChangeRequestFormApproversSerializer serializer_class = serializers.ChangeRequestFormApproversSerializer
pagination_class = paginators.SimplePageNumberPagination pagination_class = paginators.SimplePageNumberPagination
lookup_field = 'code'
# def create(self, request, *args, **kwargs):
# ObjectId = request.data.get('id')
# sent = False
# if 'form_status' in request.data:
# # for email
# if str(request.data['level']) == '1' and request.data['form_status'].lower() == 'pending':
# user = request.data['user']
# form_code = request.data['form_code']
# delegation = request.data['delegation']
# # initial_email(user, form_code, delegation)
# # EMAIL CODE FOR APPROVER
# notification_msg = APPROVER_MESSAGE.split(';')[0]
# email_code = APPROVER_MESSAGE.split(';')[1]
# next_appover_email(
# user, form_code, delegation,
# notification_msg, 'initial', email_code
# )
# request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
def create(self, request, *args, **kwargs): # request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
ObjectId = request.data.get('id') # sent = True
sent = False
if 'form_status' in request.data: # serializer = self.get_serializer(data=request.data)
# serializer.is_valid(raise_exception=True)
# for email
if str(request.data['level']) == '1' and request.data['form_status'].lower() == 'pending': # if ObjectId:
user = request.data['user'] # dbExisting = models.ChangeRequestFormApprovers.objects.filter(
form_code = request.data['form_code'] # id=ObjectId,
delegation = request.data['delegation'] # deleted_at=None).first()
# initial_email(user, form_code, delegation)
# if dbExisting:
# EMAIL CODE FOR APPROVER # dbExisting.deleted_at = datetime.now()
notification_msg = APPROVER_MESSAGE.split(';')[0] # dbExisting.save()
email_code = APPROVER_MESSAGE.split(';')[1]
# # x = self.perform_create(serializer)
next_appover_email( # serializer.id = None
user, form_code, delegation,
notification_msg, 'initial', email_code # x = serializer.save()
) # if sent == True:
# x.date_sent = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') # x.created = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct # x.save()
sent = True
# headers = self.get_success_headers(serializer.data)
serializer = self.get_serializer(data=request.data) # return Response(
serializer.is_valid(raise_exception=True) # serializer.data,
# status=status.HTTP_201_CREATED,
if ObjectId: # headers=headers
dbExisting = models.ChangeRequestFormApprovers.objects.filter( # )
id=ObjectId,
deleted_at=None).first()
if dbExisting:
dbExisting.deleted_at = datetime.now()
dbExisting.save()
# x = self.perform_create(serializer)
serializer.id = None
x = serializer.save()
if sent == True:
x.date_sent = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
x.created = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
x.save()
headers = self.get_success_headers(serializer.data)
return Response(
serializer.data,
status=status.HTTP_201_CREATED,
headers=headers
)
@action( @action(
methods=['PATCH'], detail=False, methods=['PATCH'], detail=False,
...@@ -656,22 +366,15 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet): ...@@ -656,22 +366,15 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
instance = models.ChangeRequestFormApprovers.objects.filter( instance = models.ChangeRequestFormApprovers.objects.filter(
id=objectid id=objectid
) )
# .update(
# set__deleted_at=datetime.utcnow()
# )
instance = instance.first() instance = instance.first()
current_remarks = instance.remarks current_remarks = instance.remarks
print(current_remarks)
instance.update( instance.update(
set__deleted_at=datetime.utcnow() set__deleted_at=datetime.utcnow()
) )
# request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') # correct request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') # correct
# request.data['remarks'] = current_remarks
print("hello") print("hello")
print(request.data['remarks']) print(request.data['remarks'])
...@@ -1007,9 +710,22 @@ class ChangeRequestFormPost(APIView): ...@@ -1007,9 +710,22 @@ class ChangeRequestFormPost(APIView):
if serializer.is_valid(raise_exception=True): if serializer.is_valid(raise_exception=True):
serializer.save() serializer.save()
template_no = serializer.data['template_no']
tmp_counter = models.ChangeRequestFormHeader.objects.filter(
template_no=template_no).count()
# tmp_counter = tmp_counter + 1
CR_Prefix = serializer.data['requested_to_template_id']
generate_tmp = number_generator(CR_Prefix, tmp_counter)
frm_id = serializer.data['form_code'] frm_id = serializer.data['form_code']
print(frm_id) print(frm_id)
models.ChangeRequestFormHeader.objects.filter(
form_code=frm_id).update(
requested_to_template_id=generate_tmp)
# create template approvers # create template approvers
for frm_approver in frm_approvers: for frm_approver in frm_approvers:
......
from app.entities import models
from rest_framework import serializers
from django.db.models import Q
class ChangeRequestTemplatesSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateHeader
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'template_no']
class ChangeRequestTemplateApproversSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateApprovers
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
class ChangeRequestTemplateStakeHoldersSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateStakeHolders
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
class ChangeRequestTemplateAttachmentsSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateAttachments
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
class ChangeRequestTemplateDetailsSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateDetails
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
\ No newline at end of file
from django.shortcuts import render
from rest_framework import viewsets as meviewsets
from rest_framework.views import APIView
from app.applicationlayer.cms.template import serializers
from app.entities import models
from app.applicationlayer import paginators
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
from app.businesslayer.changerequest import change_request
from app.applicationlayer.cms.utils_cr import number_generator
class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateHeader.objects.all()
lookup_field = 'template_no'
serializer_class = serializers.ChangeRequestTemplatesSerializer
pagination_class = paginators.SimplePageNumberPagination
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.order_by('-created')
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplatesViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(
deleted_at=None,
template_no=str(self.kwargs.get('template_no'))
).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
def destroy(self, request, *args, **kwargs):
try:
template_no = self.kwargs['template_no']
instance = models.ChangeRequestTemplateHeader.objects.filter(
Q(template_no=template_no) &
Q(deleted_at=None)
).update(deleted_at=datetime.now())
return Response({"message": "Deleted"}, status=status.HTTP_200_OK)
except Exception as e:
return Response(e,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def partial_update(self, request, *args, **kwargs):
try:
kwargs['partial'] = True
template_no = self.kwargs['template_no']
instance = models.ChangeRequestTemplateHeader.objects.filter(
template_no=template_no
).order_by('-deleted_at')
instance.update(deleted_at=None)
message = "Archived Change Request restored"
return Response(message, status=status.HTTP_200_OK)
except Exception as e:
message = {
500, 'failed',
'Request was not able to process' + str(e), []
}
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class ChangeRequestTemplateApproversViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateApprovers.objects.all()
serializer_class = serializers.ChangeRequestTemplateApproversSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code"
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplateApproversViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestTemplateAttachmentsViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateAttachments.objects.all()
serializer_class = serializers.ChangeRequestTemplateAttachmentsSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code"
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(
ChangeRequestTemplateAttachmentsViewset, self
).list(request)
class ChangeRequestTemplateStakeHoldersViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateStakeHolders.objects.all()
serializer_class = serializers.ChangeRequestTemplateStakeHoldersSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code"
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplateStakeHoldersViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestTemplateDetailsViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateDetails.objects.all()
serializer_class = serializers.ChangeRequestTemplateDetailsSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code"
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplateDetailsViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestTemplatePost(APIView):
@transaction.atomic()
def post(self, request):
template_header = request.data
try:
data_list_approver = []
data_list_stake = []
data_list_attach = []
data_list_detail = []
template_header_data = {
'requested_to_template_name': template_header['requested_to_template_name'],
'requested_to_template_id': template_header['requested_to_template_id'],
'requested_to_objective': template_header['requested_to_objective'],
'requested_to_target_date': template_header['requested_to_target_date'],
'requested_to_priority': template_header['requested_to_priority'],
'description': template_header['description'],
'created_by_department': template_header['created_by_department'],
'created_by_user': template_header['created_by_user'],
'requested_to_company': template_header['requested_to_company'],
'requested_to_department': template_header['requested_to_department'],
'requested_to_user': template_header['requested_to_user']
}
tmp_approvers = template_header['tmp_approvers']
tmp_stakes = template_header['tmp_stakes']
tmp_attachments = template_header['tmp_attachments']
tmp_details = template_header['tmp_details']
sp1 = transaction.savepoint() # nothing will save to db
serializer = serializers.ChangeRequestTemplatesSerializer(
data=template_header_data)
if serializer.is_valid(raise_exception=True):
serializer.save()
tmp_id = serializer.data['template_no']
# create template approvers
for tmp_approver in tmp_approvers:
tmp_approver['template_no'] = tmp_id
data_list_approver.append(tmp_approver)
serializerApprover = serializers.ChangeRequestTemplateApproversSerializer(
data=data_list_approver, many=True)
if serializerApprover.is_valid(raise_exception=True):
serializerApprover.save()
# create template stakes
for tmp_stake in tmp_stakes:
tmp_stake['template_no'] = tmp_id
data_list_stake.append(tmp_stake)
serializerStake = serializers.ChangeRequestTemplateStakeHoldersSerializer(
data=data_list_stake, many=True)
if serializerStake.is_valid(raise_exception=True):
serializerStake.save()
# create template attachments
for tmp_attachment in tmp_attachments:
tmp_attachment['template_no'] = tmp_id
data_list_attach.append(tmp_attachment)
serializerAttach = serializers.ChangeRequestTemplateAttachmentsSerializer(
data=data_list_attach, many=True)
if serializerAttach.is_valid(raise_exception=True):
serializerAttach.save()
# create template details
for tmp_detail in tmp_details:
tmp_detail['template_no'] = tmp_id
data_list_detail.append(tmp_detail)
serializerDetail = serializers.ChangeRequestTemplateDetailsSerializer(
data=data_list_detail, many=True)
if serializerDetail.is_valid(raise_exception=True):
serializerDetail.save()
message = {
'code': 201,
'status': 'success',
'message': 'Template Details successfully saved!',
'results': serializer.data
}
return Response(message, status=status.HTTP_201_CREATED)
except ValidationError as e:
transaction.savepoint_rollback(sp1)
message = {
'code': 400,
'status': 'failed',
'message': str(e),
}
return Response(message, status=status.HTTP_400_BAD_REQUEST)
except Exception as e:
transaction.savepoint_rollback(sp1)
message = {
'code': 500,
'status': 'failed',
'message': 'Request was not able to process' + str(e),
}
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
\ No newline at end of file
...@@ -3,27 +3,28 @@ from rest_framework import routers ...@@ -3,27 +3,28 @@ from rest_framework import routers
from django.conf.urls import url from django.conf.urls import url
from app.applicationlayer.management.notification.views import NotificationsViewset from app.applicationlayer.management.notification.views import NotificationsViewset
from app.applicationlayer.management.changerequest import views as crviews from app.applicationlayer.cms.template import views as crtemplate_views
from app.applicationlayer.cms.form import views as crform_views
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register(r'notifications', NotificationsViewset) router.register(r'notifications', NotificationsViewset)
router.register(r'template', crviews.ChangeRequestTemplatesViewset) router.register(r'template', crtemplate_views.ChangeRequestTemplatesViewset)
router.register(r'template-approvers', crviews.ChangeRequestTemplateApproversViewset) router.register(r'template-approvers', crtemplate_views.ChangeRequestTemplateApproversViewset)
router.register(r'template-attachments', crviews.ChangeRequestTemplateAttachmentsViewset) router.register(r'template-attachments', crtemplate_views.ChangeRequestTemplateAttachmentsViewset)
router.register(r'template-stakeholders', crviews.ChangeRequestTemplateStakeHoldersViewset) router.register(r'template-stakeholders', crtemplate_views.ChangeRequestTemplateStakeHoldersViewset)
router.register(r'template-details', crviews.ChangeRequestTemplateDetailsViewset) router.register(r'template-details', crtemplate_views.ChangeRequestTemplateDetailsViewset)
router.register(r'form', crviews.ChangeRequestFormsViewset) router.register(r'form', crform_views.ChangeRequestFormsViewset)
router.register(r'form-approvers', crviews.ChangeRequestFormApproversViewset) router.register(r'form-approvers', crform_views.ChangeRequestFormApproversViewset)
router.register(r'form-stakeholders', crviews.ChangeRequestFormStakeHoldersViewset) router.register(r'form-stakeholders', crform_views.ChangeRequestFormStakeHoldersViewset)
router.register(r'form-attachments', crviews.ChangeRequestFormAttachmentsViewset) router.register(r'form-attachments', crform_views.ChangeRequestFormAttachmentsViewset)
router.register(r'form-details', crviews.ChangeRequestFormDetailsViewset) router.register(r'form-details', crform_views.ChangeRequestFormDetailsViewset)
urlpatterns = ( urlpatterns = (
path('', include(router.urls)), path('', include(router.urls)),
path('template-post/', crviews.ChangeRequestTemplatePost.as_view()), path('template-post/', crtemplate_views.ChangeRequestTemplatePost.as_view()),
path('form-post/', crviews.ChangeRequestFormPost.as_view()), path('form-post/', crform_views.ChangeRequestFormPost.as_view()),
) )
...@@ -179,29 +179,13 @@ def filter_overdue(base_queryset): ...@@ -179,29 +179,13 @@ def filter_overdue(base_queryset):
overdue = [] overdue = []
for query in return_queryset: for query in return_queryset:
if (query.requested_to_target_date < now):
try:
if query.requested_to_target_date:
requested_to_target_date = datetime.strptime(query.requested_to_target_date[:-1], "%Y-%m-%dT%H:%M:%S.%f")
if (requested_to_target_date < now):
overdue.append(query.form_code)
except ValueError:
#convert now
if query.requested_to_target_date:
requested_to_target_date = datetime.strptime(query.requested_to_target_date[:-1], "%Y-%m-%d %H:%M:%S")
if (requested_to_target_date < now):
overdue.append(query.form_code) overdue.append(query.form_code)
return_queryset = return_queryset.filter( return_queryset = return_queryset.filter(
form_code__in=overdue form_code__in=overdue
) )
return_queryset
except Exception as e: except Exception as e:
pass pass
...@@ -241,14 +225,20 @@ def filter_awaiting(base_queryset, ...@@ -241,14 +225,20 @@ def filter_awaiting(base_queryset,
current_level = models.ChangeRequestFormApprovers.objects.filter( current_level = models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=query.form_code) & Q(form_code=query.form_code) &
Q(deleted_at=None) &
(Q(action='') | Q(action=None)) (Q(action='') | Q(action=None))
).order_by('level') ).order_by('level')
if current_level: if current_level:
first_level = current_level.first()
first_user = models.ChangeRequestFormApprovers.objects.filter(
code=first_level).values('user')
print(first_user.user)
# if x == user_id_number:
if current_level[0]['user'] == user_id_number: # awaiting_included.append(query.form_code)
awaiting_included.append(query.form_code)
return_queryset = return_queryset.filter(form_code__in=awaiting_included) return_queryset = return_queryset.filter(form_code__in=awaiting_included)
......
# Generated by Django 2.2 on 2019-09-11 11:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0006_emaillogs_is_sent'),
]
operations = [
migrations.AlterField(
model_name='changerequestformheader',
name='requested_to_template_id',
field=models.CharField(max_length=255),
),
]
...@@ -354,7 +354,6 @@ class BaseHeader(models.Model): ...@@ -354,7 +354,6 @@ class BaseHeader(models.Model):
to_field='code') to_field='code')
requested_to_template_name = models.CharField(max_length=255) requested_to_template_name = models.CharField(max_length=255)
requested_to_template_id = models.CharField(max_length=255, unique=True)
requested_to_objective = models.CharField( requested_to_objective = models.CharField(
max_length=255, max_length=255,
...@@ -488,6 +487,10 @@ class ChangeRequestTemplateHeader(BaseHeader): ...@@ -488,6 +487,10 @@ class ChangeRequestTemplateHeader(BaseHeader):
unique=True, unique=True,
max_length=255) max_length=255)
requested_to_template_id = models.CharField(
max_length=255,
unique=True)
created_by_user = models.ForeignKey( created_by_user = models.ForeignKey(
User, User,
on_delete=models.DO_NOTHING, on_delete=models.DO_NOTHING,
...@@ -666,6 +669,8 @@ class ChangeRequestFormHeader(BaseHeader): ...@@ -666,6 +669,8 @@ class ChangeRequestFormHeader(BaseHeader):
max_length=255, max_length=255,
null=True, null=True,
blank=True) blank=True)
requested_to_template_id = models.CharField(
max_length=255)
class Meta: class Meta:
db_table = 'change_request_form_headers' db_table = 'change_request_form_headers'
......
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