Commit 4695d626 authored by John Red Medrano's avatar John Red Medrano

pulled cms

parent 4e294247
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
from drf_writable_nested import WritableNestedModelSerializer
class ChangeRequestTemplatesSerializer(
serializers.ModelSerializer class ChangeRequestFormApproversSerializer(
): serializers.ModelSerializer
class Meta: ):
model = models.ChangeRequestTemplateHeader # def to_representation(self, instance):
fields = '__all__' # ret = super().to_representation(instance)
read_only_fields = ['created', 'deleted_at', 'template_no'] # try:
# user = instance.user
class ChangeRequestTemplateApproversSerializer( # user_details = get_account_details(user)
serializers.ModelSerializer # name = user_details['name']
): # group = user_details['groups'][0]['name']
class Meta: # company = user_details['groups'][0]['company__name']
model = models.ChangeRequestTemplateApprovers
fields = '__all__' # ret['name'] = name
read_only_fields = ['created', 'deleted_at', 'code'] # ret['department'] = group
# ret['company'] = company
# return ret
class ChangeRequestTemplateStakeHoldersSerializer(
serializers.ModelSerializer # except Exception as e:
): # ret['name'] = "none"
class Meta: # ret['department'] = "none"
model = models.ChangeRequestTemplateStakeHolders # ret['company'] = "none"
fields = '__all__' # return ret
read_only_fields = ['created', 'deleted_at', 'code']
class Meta:
model = models.ChangeRequestFormApprovers
class ChangeRequestTemplateAttachmentsSerializer( fields = '__all__'
serializers.ModelSerializer read_only_fields = ['created', 'archived_at', 'code']
):
class Meta:
model = models.ChangeRequestTemplateAttachments class ChangeRequestFormStakeHoldersSerializer(
fields = '__all__' serializers.ModelSerializer
read_only_fields = ['created', 'deleted_at', 'code'] ):
class Meta:
model = models.ChangeRequestFormStakeHolders
class ChangeRequestTemplateDetailsSerializer( fields = '__all__'
serializers.ModelSerializer read_only_fields = ['created', 'archived_at', 'code']
):
class Meta:
model = models.ChangeRequestTemplateDetails class ChangeRequestFormAttachmentsSerializer(
fields = '__all__' serializers.ModelSerializer
read_only_fields = ['created', 'deleted_at', 'code'] ):
class Meta:
model = models.ChangeRequestFormAttachments
class ChangeRequestFormHeaderSerializer( fields = '__all__'
serializers.ModelSerializer read_only_fields = ['created', 'archived_at', 'code']
):
def to_representation(self, instance):
ret = super().to_representation(instance) class ChangeRequestFormDetailsSerializer(
try: serializers.ModelSerializer
# id_number = self.context.get('request').META.get('user') ):
class Meta:
id_number = "USER-20190909-0000005" model = models.ChangeRequestFormDetails
current_level = models.ChangeRequestFormApprovers.objects.filter( fields = '__all__'
Q(form_code=ret['form_code']) & read_only_fields = ['created', 'archived_at', 'code']
Q(deleted_at=None) &
(Q(action='') | Q(action=None))
).order_by('level') class ChangeRequestFormHeaderSerializer(
WritableNestedModelSerializer
if current_level.first()['user'] == id_number: ):
if instance.status.lower() == 'rejected': frm_approvers = ChangeRequestFormApproversSerializer(
approver = 'No' many=True, required=False)
elif instance.status.lower() == 'cancelled': frm_stakes = ChangeRequestFormStakeHoldersSerializer(
approver = 'No' many=True, required=False)
elif instance.status.lower() == 'closed': frm_attachments = ChangeRequestFormAttachmentsSerializer(
approver = 'No' many=True, required=False)
else: frm_details = ChangeRequestFormDetailsSerializer(
approver = 'Yes' many=True, required=False)
else:
approver = 'No' def to_representation(self, instance):
ret['action'] = approver ret = super().to_representation(instance)
return ret try:
except Exception as e: # id_number = self.context.get('request').META.get('user')
ret['action'] = "No" user = self.context['request'].user
return ret print(user)
class Meta: # id_number = "USER-20190909-0000005"
model = models.ChangeRequestFormHeader current_level = models.ChangeRequestFormApprovers.objects.filter(
fields = '__all__' Q(form_code=ret['form_code']) &
read_only_fields = ['created', 'deleted_at', 'form_code'] Q(archived_at=None) &
(Q(action='') | Q(action=None))
).order_by('level')
class ChangeRequestFormApproversSerializer(
serializers.ModelSerializer if current_level.first()['user'] == id_number:
): if instance.status.lower() == 'rejected':
# def to_representation(self, instance): approver = 'No'
# ret = super().to_representation(instance) elif instance.status.lower() == 'cancelled':
# try: approver = 'No'
# user = instance.user elif instance.status.lower() == 'closed':
approver = 'No'
# user_details = get_account_details(user) else:
# name = user_details['name'] approver = 'Yes'
# group = user_details['groups'][0]['name'] else:
# company = user_details['groups'][0]['company__name'] approver = 'No'
ret['action'] = approver
# ret['name'] = name return ret
# ret['department'] = group except Exception as e:
# ret['company'] = company ret['action'] = "No"
# return ret return ret
# except Exception as e: class Meta:
# ret['name'] = "none" model = models.ChangeRequestFormHeader
# ret['department'] = "none" # fields = '__all__'
# ret['company'] = "none" fields = ('form_code', 'requested_to_template_name', 'requested_to_objective',
# return ret 'requested_to_target_date', 'requested_to_priority',
'description', 'created', 'cancel_date', 'status',
class Meta: 'company_desc', 'department_desc', 'requested_desc',
model = models.ChangeRequestFormApprovers 'requested_to_template_id', 'requested_to_company',
fields = '__all__' 'requested_to_department', 'requested_to_user',
read_only_fields = ['created', 'deleted_at', 'code'] 'requested_by_user', 'requested_by_department',
'template_no', 'frm_approvers', 'frm_stakes',
'frm_attachments', 'frm_details')
class ChangeRequestFormStakeHoldersSerializer(
serializers.ModelSerializer read_only_fields = ['created', 'archived_at', 'form_code']
):
class Meta:
model = models.ChangeRequestFormStakeHolders
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
class ChangeRequestFormAttachmentsSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestFormAttachments
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
class ChangeRequestFormDetailsSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestFormDetails
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
from django.shortcuts import render 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
from datetime import datetime from datetime import datetime
from datetime import timedelta from datetime import timedelta
from rest_framework.response import Response from rest_framework.response import Response
from rest_framework import status, views from rest_framework import status, views
from rest_framework.decorators import action from rest_framework.decorators import action
from django.http import Http404 from django.http import Http404
from django.db.models import Q from django.db.models import Q
import requests import requests
from django.conf import settings from django.conf import settings
from rest_framework.exceptions import ValidationError 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
from app.entities import enums
APPROVER_MESSAGE = settings.APPROVER_MESSAGE from django.forms.models import model_to_dict
REQUESTOR_MESSAGE = settings.REQUESTOR_MESSAGE
REQUESTOR_REJECT_MESSAGE = settings.REQUESTOR_REJECT_MESSAGE
VENDOR_ACKNOWLEDGE_MESSAGE = settings.VENDOR_ACKNOWLEDGE_MESSAGE APPROVER_MESSAGE = settings.APPROVER_MESSAGE
REQUESTOR_ACKNOWLEDGE_MESSAGE = settings.REQUESTOR_ACKNOWLEDGE_MESSAGE REQUESTOR_MESSAGE = settings.REQUESTOR_MESSAGE
REQUESTOR_COMPLETION_MESSAGE = settings.REQUESTOR_COMPLETION_MESSAGE REQUESTOR_REJECT_MESSAGE = settings.REQUESTOR_REJECT_MESSAGE
VENDOR_ACCEPTANCE_MESSAGE = settings.VENDOR_ACCEPTANCE_MESSAGE VENDOR_ACKNOWLEDGE_MESSAGE = settings.VENDOR_ACKNOWLEDGE_MESSAGE
VENDOR_REJECT_MESSAGE = settings.VENDOR_REJECT_MESSAGE REQUESTOR_ACKNOWLEDGE_MESSAGE = settings.REQUESTOR_ACKNOWLEDGE_MESSAGE
REQUESTOR_COMPLETION_MESSAGE = settings.REQUESTOR_COMPLETION_MESSAGE
VENDOR_ACCEPTANCE_MESSAGE = settings.VENDOR_ACCEPTANCE_MESSAGE
class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet): VENDOR_REJECT_MESSAGE = settings.VENDOR_REJECT_MESSAGE
queryset = models.ChangeRequestTemplateHeader.objects.all()
lookup_field = 'template_no' # Change Request Form Views
serializer_class = serializers.ChangeRequestTemplatesSerializer
pagination_class = paginators.SimplePageNumberPagination class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
def list(self, request, *args, **kwargs): serializer_class = serializers.ChangeRequestFormHeaderSerializer
pagination_class = paginators.SimplePageNumberPagination
self.queryset = self.queryset.filter( queryset = models.ChangeRequestFormHeader.objects.all()
deleted_at=None lookup_field = 'form_code'
)
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.order_by('-created') id_number = self.request.user
self.queryset = QuerySetHelper.Sort(self)
# print(id_number.code)
return super(ChangeRequestTemplatesViewset, self).list(request) self.queryset = change_request.list_by_user(id_number.code)
def retrieve(self, request, *args, **kwargs): self.queryset = change_request.filter_base(
instance = self.queryset.filter( self.queryset,
deleted_at=None, request.query_params.get('company_requested_to'),
template_no=str(self.kwargs.get('template_no')) request.query_params.get('department_requested_to'),
).first() request.query_params.get('date_modified_from'),
request.query_params.get('date_modified_to'),
serializer = self.get_serializer(instance) request.query_params.get('date_required_from'),
return Response(serializer.data) request.query_params.get('date_required_to'),
request.query_params.get('form_type'),
def destroy(self, request, *args, **kwargs): )
try:
template_no = self.kwargs['template_no'] if self.request.query_params.get('search'):
instance = models.ChangeRequestTemplateHeader.objects.filter( search_key = self.request.query_params.get('search')
Q(template_no=template_no) &
Q(deleted_at=None) self.queryset = self.queryset.filter(
).update(deleted_at=datetime.now()) Q(requested_to_template_name__icontains=search_key.lower()) |
return Response({"message": "Deleted"}, status=status.HTTP_200_OK) Q(requested_to_template_id__icontains=search_key.lower())
except Exception as e: )
return Response(e,
status=status.HTTP_500_INTERNAL_SERVER_ERROR) self.queryset = self.queryset.order_by('-created')
self.queryset = QuerySetHelper.Sort(self)
def partial_update(self, request, *args, **kwargs):
try: return super(ChangeRequestFormsViewset, self).list(request)
kwargs['partial'] = True
template_no = self.kwargs['template_no'] @action(detail=False,
instance = models.ChangeRequestTemplateHeader.objects.filter( methods=['get'],
template_no=template_no url_path='dashboard',
).order_by('-deleted_at') name="Dashboard Summary")
instance.update(deleted_at=None) def dashboard_view(self, request):
message = "Archived Change Request restored" id_number = self.request.user
return Response(message, status=status.HTTP_200_OK)
print(id_number)
except Exception as e:
message = { self.queryset = change_request.list_by_user(id_number.code)
500, 'failed',
'Request was not able to process' + str(e), [] self.queryset = change_request.filter_base(
} self.queryset,
return Response(message, request.query_params.get('company_requested_to'),
status=status.HTTP_500_INTERNAL_SERVER_ERROR) request.query_params.get('department_requested_to'),
request.query_params.get('date_modified_from'),
request.query_params.get('date_modified_to'),
class ChangeRequestTemplateApproversViewset(meviewsets.ModelViewSet): request.query_params.get('date_required_from'),
request.query_params.get('date_required_to'),
queryset = models.ChangeRequestTemplateApprovers.objects.all() request.query_params.get('form_type'),
serializer_class = serializers.ChangeRequestTemplateApproversSerializer )
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code" pending = self.queryset.filter(
status__iexact='Pending'
def list(self, request, *args, **kwargs): ).count()
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self) approved = self.queryset.filter(
status__iexact='Approved'
return super(ChangeRequestTemplateApproversViewset, self).list(request) ).count()
def retrieve(self, request, *args, **kwargs): rejected = self.queryset.filter(
instance = self.queryset.filter(deleted_at=None).first() status__iexact='Rejected'
serializer = self.get_serializer(instance) ).count()
return Response(serializer.data)
cancelled = self.queryset.filter(
status__iexact='Cancelled'
class ChangeRequestTemplateAttachmentsViewset(meviewsets.ModelViewSet): ).count()
queryset = models.ChangeRequestTemplateAttachments.objects.all() completed = self.queryset.filter(
serializer_class = serializers.ChangeRequestTemplateAttachmentsSerializer status__iexact='Closed' #Completed
pagination_class = paginators.SimplePageNumberPagination ).count()
lookup_field = "code"
high = self.queryset.filter(
def list(self, request, *args, **kwargs): requested_to_priority='High'
self.queryset = self.queryset.filter(deleted_at=None) ).count()
self.queryset = QuerySetHelper.Sort(self)
normal = self.queryset.filter(
return super( requested_to_priority='Normal'
ChangeRequestTemplateAttachmentsViewset, self ).count()
).list(request)
awaiting_filtered = change_request.filter_awaiting(self.queryset, id_number)
class ChangeRequestTemplateStakeHoldersViewset(meviewsets.ModelViewSet): # awaiting = awaiting_filtered.count()
awaiting = 0
queryset = models.ChangeRequestTemplateStakeHolders.objects.all()
serializer_class = serializers.ChangeRequestTemplateStakeHoldersSerializer for awaits in awaiting_filtered:
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code" if awaits.status.lower() == 'rejected':
print("rejected")
def list(self, request, *args, **kwargs): elif awaits.status.lower() == 'closed':
self.queryset = self.queryset.filter(deleted_at=None) print("closed")
self.queryset = QuerySetHelper.Sort(self) elif awaits.status.lower() == 'cancelled':
print("cancelled")
return super(ChangeRequestTemplateStakeHoldersViewset, self).list(request) else:
awaiting = awaiting + 1
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first() overdue_filtered = change_request.filter_overdue(self.queryset)
serializer = self.get_serializer(instance)
return Response(serializer.data) overdue = overdue_filtered.count()
message = {
class ChangeRequestTemplateDetailsViewset(meviewsets.ModelViewSet): 'account_no': id_number.code,
'pending': pending,
queryset = models.ChangeRequestTemplateDetails.objects.all() 'approved': approved,
serializer_class = serializers.ChangeRequestTemplateDetailsSerializer 'rejected': rejected,
pagination_class = paginators.SimplePageNumberPagination 'cancelled': cancelled,
lookup_field = "code" 'completed': completed,
'high': high,
def list(self, request, *args, **kwargs): 'normal': normal,
self.queryset = self.queryset.filter(deleted_at=None) 'awaiting': awaiting,
self.queryset = QuerySetHelper.Sort(self) 'overdue': overdue,
'code': 200,
return super(ChangeRequestTemplateDetailsViewset, self).list(request) 'status': 'success',
'message': 'Dashboard Summary'
def retrieve(self, request, *args, **kwargs): }
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance) return Response(message, status=status.HTTP_200_OK)
return Response(serializer.data)
@action(detail=False,
methods=['get'],
class ChangeRequestTemplatePost(APIView): url_path='status',
name="Dashboard Summary Status")
@transaction.atomic() def list_by_status_view(self, request):
def post(self, request):
template_header = request.data id_number = self.request.user
try: self.queryset = change_request.list_by_user(id_number.code)
data_list_approver = []
data_list_stake = [] self.queryset = change_request.filter_status(
data_list_attach = [] self.queryset,
data_list_detail = [] request.query_params.get('status')
)
template_header_data = {
'requested_to_template_name': template_header['requested_to_template_name'], self.queryset = change_request.filter_base(
'requested_to_template_id': template_header['requested_to_template_id'], self.queryset,
'requested_to_objective': template_header['requested_to_objective'], request.query_params.get('company_requested_to'),
'requested_to_target_date': template_header['requested_to_target_date'], request.query_params.get('department_requested_to'),
'requested_to_priority': template_header['requested_to_priority'], request.query_params.get('date_modified_from'),
'description': template_header['description'], request.query_params.get('date_modified_to'),
'created_by_department': template_header['created_by_department'], request.query_params.get('date_required_from'),
'created_by_user': template_header['created_by_user'], request.query_params.get('date_required_to'),
'requested_to_company': template_header['requested_to_company'], request.query_params.get('form_type'),
'requested_to_department': template_header['requested_to_department'], )
'requested_to_user': template_header['requested_to_user']
} self.queryset = self.queryset.order_by('-created')
self.queryset = QuerySetHelper.Sort(self)
tmp_approvers = template_header['tmp_approvers'] # self.queryset = QuerySetHelper.Filter(self)
tmp_stakes = template_header['tmp_stakes'] return super(ChangeRequestFormsViewset, self).list(request)
tmp_attachments = template_header['tmp_attachments']
tmp_details = template_header['tmp_details']
@action(detail=False,
sp1 = transaction.savepoint() # nothing will save to db methods=['get'],
url_path='overdue',
serializer = serializers.ChangeRequestTemplatesSerializer( name="Dashboard Summary Overdue")
data=template_header_data) def list_by_overdue_view(self, request):
if serializer.is_valid(raise_exception=True): id_number = self.request.user
serializer.save()
self.queryset = change_request.list_by_user(id_number.code)
tmp_id = serializer.data['template_no']
self.queryset = change_request.filter_overdue(self.queryset)
# create template approvers
self.queryset = change_request.filter_base(
for tmp_approver in tmp_approvers: self.queryset,
tmp_approver['template_no'] = tmp_id request.query_params.get('company_requested_to'),
data_list_approver.append(tmp_approver) request.query_params.get('department_requested_to'),
request.query_params.get('date_modified_from'),
serializerApprover = serializers.ChangeRequestTemplateApproversSerializer( request.query_params.get('date_modified_to'),
data=data_list_approver, many=True) request.query_params.get('date_required_from'),
request.query_params.get('date_required_to'),
if serializerApprover.is_valid(raise_exception=True): request.query_params.get('form_type'),
serializerApprover.save() )
# create template stakes self.queryset = self.queryset.order_by('-created')
self.queryset = QuerySetHelper.Sort(self)
for tmp_stake in tmp_stakes: return super(ChangeRequestFormsViewset, self).list(request)
tmp_stake['template_no'] = tmp_id
data_list_stake.append(tmp_stake)
@action(detail=False,
serializerStake = serializers.ChangeRequestTemplateStakeHoldersSerializer( methods=['get'],
data=data_list_stake, many=True) url_path='awaiting',
name="Dashboard Summary Awaiting")
if serializerStake.is_valid(raise_exception=True): def list_by_awaiting_view(self, request):
serializerStake.save()
id_number = self.request.user
# create template attachments
self.queryset = change_request.list_by_user(id_number.code)
for tmp_attachment in tmp_attachments:
tmp_attachment['template_no'] = tmp_id self.queryset = change_request.filter_awaiting(self.queryset, id_number.code)
data_list_attach.append(tmp_attachment)
self.queryset = change_request.filter_base(
serializerAttach = serializers.ChangeRequestTemplateAttachmentsSerializer( self.queryset,
data=data_list_attach, many=True) request.query_params.get('company_requested_to'),
request.query_params.get('department_requested_to'),
if serializerAttach.is_valid(raise_exception=True): request.query_params.get('date_modified_from'),
serializerAttach.save() request.query_params.get('date_modified_to'),
request.query_params.get('date_required_from'),
# create template details request.query_params.get('date_required_to'),
request.query_params.get('form_type'),
for tmp_detail in tmp_details: )
tmp_detail['template_no'] = tmp_id
data_list_detail.append(tmp_detail) self.queryset = self.queryset.filter(
~Q(status='Rejected') |
serializerDetail = serializers.ChangeRequestTemplateDetailsSerializer( ~Q(status='Closed') |
data=data_list_detail, many=True) ~Q(status='Cancelled'))
if serializerDetail.is_valid(raise_exception=True): self.queryset = self.queryset.order_by('-created')
serializerDetail.save() self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestFormsViewset, self).list(request)
message = {
'code': 201,
'status': 'success', def retrieve(self, request, *args, **kwargs):
'message': 'Template Details successfully saved!', instance = self.queryset.filter(
'results': serializer.data archived_at=None,
} form_code=str(self.kwargs.get('form_code'))
).first()
return Response(message, status=status.HTTP_201_CREATED) serializer = self.get_serializer(instance)
return Response(serializer.data)
except ValidationError as e:
transaction.savepoint_rollback(sp1) @action(
message = { methods=['PATCH'], detail=True,
'code': 400, url_path='re_route', url_name='re_route'
'status': 'failed', )
'message': str(e), def re_route(self, request, *args, **kwargs):
}
return Response(message, status=status.HTTP_400_BAD_REQUEST) form_code = kwargs['form_code']
print(form_code)
except Exception as e:
transaction.savepoint_rollback(sp1) models.ChangeRequestFormHeader.objects.filter(
message = { form_code=form_code).update(status='Pending')
'code': 500,
'status': 'failed', models.ChangeRequestFormApprovers.objects.filter(
'message': 'Request was not able to process' + str(e), form_code=form_code).update(action=None, remarks=None,
} date_sent=None)
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR) return Response(
"Change request form successfully re routed",
status=status.HTTP_200_OK
# Change Request Form Views )
class ChangeRequestFormsViewset(meviewsets.ModelViewSet): @action(
methods=['PATCH'], detail=True,
serializer_class = serializers.ChangeRequestFormHeaderSerializer url_path='re_submit', url_name='re_submit'
pagination_class = paginators.SimplePageNumberPagination )
queryset = models.ChangeRequestFormHeader.objects.all() def re_submit(self, request, *args, **kwargs):
lookup_field = 'form_code'
# get form code to be re created
def list(self, request, *args, **kwargs): form_code = kwargs['form_code']
id_number = self.request.user
frm_id = models.ChangeRequestFormHeader.objects.get(
# print(id_number.code) form_code=form_code)
self.queryset = change_request.list_by_user(id_number.code)
obj = models.ChangeRequestFormHeader.objects.get(pk=frm_id.pk)
self.queryset = change_request.filter_base( obj.pk = None
self.queryset, obj.form_code = "Temp-Form-Code"
request.query_params.get('company_requested_to'), obj.old_form_code = form_code
request.query_params.get('department_requested_to'), obj.status = 'Draft'
request.query_params.get('date_modified_from'), obj.save()
request.query_params.get('date_modified_to'),
request.query_params.get('date_required_from'), new_frmheader_code = number_generator(
request.query_params.get('date_required_to'), enums.GenerateCode.FORM.value, obj.id)
request.query_params.get('form_type'),
) models.ChangeRequestFormHeader.objects.filter(
pk=obj.id).update(form_code=new_frmheader_code)
if self.request.query_params.get('search'):
search_key = self.request.query_params.get('search') # re create approvers
approvers = models.ChangeRequestFormApprovers.objects.filter(
self.queryset = self.queryset.filter( form_code=form_code)
Q(requested_to_template_name__icontains=search_key.lower()) |
Q(requested_to_template_id__icontains=search_key.lower()) counter = 0
)
for approver in approvers:
self.queryset = self.queryset.order_by('-created') to_delete = approver.pk
self.queryset = QuerySetHelper.Sort(self) counter = counter + 1
approver.pk = None
return super(ChangeRequestFormsViewset, self).list(request) approver.code = counter
approver.remarks =None
@action(detail=False, approver.action = None
methods=['get'], approver.date_sent = None
url_path='dashboard', approver.save()
name="Dashboard Summary")
def dashboard_view(self, request): new_frmapp_code = number_generator(
enums.GenerateCode.FORM_APPROVER.value, approver.id)
id_number = self.request.user
models.ChangeRequestFormApprovers.objects.filter(
# id_number = 'Acct-20190813-0000138' pk=approver.id).update(code=new_frmapp_code,
form_code=new_frmheader_code)
self.queryset = change_request.list_by_user(id_number.code)
# delete old data
self.queryset = change_request.filter_base( models.ChangeRequestFormApprovers.objects.filter(
self.queryset, pk=to_delete).delete()
request.query_params.get('company_requested_to'),
request.query_params.get('department_requested_to'), # re create stakeholders
request.query_params.get('date_modified_from'), stakes = models.ChangeRequestFormStakeHolders.objects.filter(
request.query_params.get('date_modified_to'), form_code=form_code)
request.query_params.get('date_required_from'),
request.query_params.get('date_required_to'), counter = 0
request.query_params.get('form_type'),
) for stake in stakes:
to_delete = stake.pk
pending = self.queryset.filter( counter = counter + 1
status__iexact='Pending' stake.pk = None
).count() stake.code = counter
stake.save()
approved = self.queryset.filter(
status__iexact='Approved' new_frmstake_code = number_generator(
).count() enums.GenerateCode.FORM_STAKE.value, stake.id)
rejected = self.queryset.filter( models.ChangeRequestFormStakeHolders.objects.filter(
status__iexact='Rejected' pk=stake.id).update(code=new_frmstake_code,
).count() form_code=new_frmheader_code)
cancelled = self.queryset.filter( # delete old data
status__iexact='Cancelled' models.ChangeRequestFormStakeHolders.objects.filter(
).count() pk=to_delete).delete()
completed = self.queryset.filter(
status__iexact='Closed' #Completed # re create details
).count() details = models.ChangeRequestFormDetails.objects.filter(
form_code=form_code)
high = self.queryset.filter(
requested_to_priority='High' counter = 0
).count()
for detail in details:
normal = self.queryset.filter( to_delete = detail.pk
requested_to_priority='Normal' counter = counter + 1
).count() detail.pk = None
detail.code = counter
awaiting_filtered = change_request.filter_awaiting(self.queryset, id_number) detail.save()
# awaiting = awaiting_filtered.count() new_frmdetail_code = number_generator(
awaiting = 0 enums.GenerateCode.FORM_DETAIL.value, detail.id)
for awaits in awaiting_filtered: models.ChangeRequestFormDetails.objects.filter(
pk=detail.id).update(code=new_frmdetail_code,
if awaits.status.lower() == 'rejected': form_code=new_frmheader_code)
print("rejected")
elif awaits.status.lower() == 'closed': # delete old data
print("closed") models.ChangeRequestFormDetails.objects.filter(
elif awaits.status.lower() == 'cancelled': pk=to_delete).delete()
print("cancelled")
else: # re create attachments
awaiting = awaiting + 1 attachments = models.ChangeRequestFormAttachments.objects.filter(
form_code=form_code)
overdue_filtered = change_request.filter_overdue(self.queryset)
counter = 0
overdue = overdue_filtered.count()
for attachment in attachments:
message = { to_delete = attachment.pk
'account_no': id_number, counter = counter + 1
'pending': pending, attachment.pk = None
'approved': approved, attachment.code = counter
'rejected': rejected, attachment.save()
'cancelled': cancelled,
'completed': completed, new_frmattach_code = number_generator(
'high': high, enums.GenerateCode.FORM_ATTACH.value, attachment.id)
'normal': normal,
'awaiting': awaiting, models.ChangeRequestFormAttachments.objects.filter(
'overdue': overdue, pk=attachment.id).update(code=new_frmattach_code,
'code': 200, form_code=new_frmheader_code)
'status': 'success',
'message': 'Dashboard Summary' # delete old data
} models.ChangeRequestFormAttachments.objects.filter(
pk=to_delete).delete()
return Response(message, status=status.HTTP_200_OK)
# delete old data form header
models.ChangeRequestFormHeader.objects.filter(
@action(detail=False, form_code=form_code).delete()
methods=['get'],
url_path='status', return Response(
name="Dashboard Summary Status") "Change request form successfully resubmitted",
def list_by_status_view(self, request): status=status.HTTP_200_OK
)
id_number = self.request.user
# actions
# id_number = 'Acct-20190531-0000002' @action(
methods=['PATCH'], detail=True,
self.queryset = change_request.list_by_user(id_number.code) url_path='actions', url_name='actions'
)
self.queryset = change_request.filter_status( def actions(self, request, *args, **kwargs):
self.queryset,
request.query_params.get('status') form_code = kwargs['form_code']
) print(form_code)
self.queryset = change_request.filter_base( models.ChangeRequestFormHeader.objects.filter(
self.queryset, form_code=form_code).update(status='Pending')
request.query_params.get('company_requested_to'),
request.query_params.get('department_requested_to'), models.ChangeRequestFormApprovers.objects.filter(
request.query_params.get('date_modified_from'), form_code=form_code).update(action=None, remarks=None,
request.query_params.get('date_modified_to'), date_sent=None)
request.query_params.get('date_required_from'),
request.query_params.get('date_required_to'), return Response(
request.query_params.get('form_type'), "Change request form successfully re routed",
) status=status.HTTP_200_OK
)
self.queryset = self.queryset.order_by('-created')
self.queryset = QuerySetHelper.Sort(self)
# self.queryset = QuerySetHelper.Filter(self) class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
return super(ChangeRequestFormsViewset, self).list(request)
queryset = models.ChangeRequestFormApprovers.objects.all()
serializer_class = serializers.ChangeRequestFormApproversSerializer
@action(detail=False, pagination_class = paginators.SimplePageNumberPagination
methods=['get'], lookup_field = 'code'
url_path='overdue',
name="Dashboard Summary Overdue") # def create(self, request, *args, **kwargs):
def list_by_overdue_view(self, request): # ObjectId = request.data.get('id')
# sent = False
id_number = self.request.user # if 'form_status' in request.data:
# id_number = 'Acct-20190531-0000002' # # for email
# if str(request.data['level']) == '1' and request.data['form_status'].lower() == 'pending':
self.queryset = change_request.list_by_user(id_number.code) # user = request.data['user']
# form_code = request.data['form_code']
self.queryset = change_request.filter_overdue(self.queryset) # delegation = request.data['delegation']
# # initial_email(user, form_code, delegation)
self.queryset = change_request.filter_base(
self.queryset, # # EMAIL CODE FOR APPROVER
request.query_params.get('company_requested_to'), # notification_msg = APPROVER_MESSAGE.split(';')[0]
request.query_params.get('department_requested_to'), # email_code = APPROVER_MESSAGE.split(';')[1]
request.query_params.get('date_modified_from'),
request.query_params.get('date_modified_to'), # next_appover_email(
request.query_params.get('date_required_from'), # user, form_code, delegation,
request.query_params.get('date_required_to'), # notification_msg, 'initial', email_code
request.query_params.get('form_type'), # )
)
# request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
self.queryset = self.queryset.order_by('-created') # request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
self.queryset = QuerySetHelper.Sort(self) # sent = True
return super(ChangeRequestFormsViewset, self).list(request)
# serializer = self.get_serializer(data=request.data)
# serializer.is_valid(raise_exception=True)
@action(detail=False,
methods=['get'], # if ObjectId:
url_path='awaiting', # dbExisting = models.ChangeRequestFormApprovers.objects.filter(
name="Dashboard Summary Awaiting") # id=ObjectId,
def list_by_awaiting_view(self, request): # archived_at=None).first()
id_number = self.request.user # if dbExisting:
# dbExisting.archived_at = datetime.now()
# id_number = 'Acct-20190813-0000137' # dbExisting.save()
self.queryset = change_request.list_by_user(id_number.code) # # x = self.perform_create(serializer)
# serializer.id = None
self.queryset = change_request.filter_awaiting(self.queryset, id_number)
# x = serializer.save()
self.queryset = change_request.filter_base( # if sent == True:
self.queryset, # x.date_sent = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
request.query_params.get('company_requested_to'), # x.created = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
request.query_params.get('department_requested_to'), # x.save()
request.query_params.get('date_modified_from'),
request.query_params.get('date_modified_to'), # headers = self.get_success_headers(serializer.data)
request.query_params.get('date_required_from'), # return Response(
request.query_params.get('date_required_to'), # serializer.data,
request.query_params.get('form_type'), # status=status.HTTP_201_CREATED,
) # headers=headers
# )
self.queryset = self.queryset.filter(status__ne='Rejected')
@action(
self.queryset = self.queryset.filter(status__ne='Closed') methods=['PATCH'], detail=False,
url_path='approved', url_name='approved'
self.queryset = self.queryset.filter(status__ne='Cancelled') )
def approved(self, request, *args, **kwargs):
self.queryset = self.queryset.order_by('-created') objectid = request.data['id']
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestFormsViewset, self).list(request) instance = models.ChangeRequestFormApprovers.objects.filter(
id=objectid
)
def destroy(self, request, *args, **kwargs):
# instance = self.get_object() instance = instance.first()
form_code = self.kwargs['form_code'] current_remarks = instance.remarks
instance = models.ChangeRequestFormHeader.objects.filter(
form_code=form_code instance.update(
).first() set__archived_at=datetime.utcnow()
if instance.status.lower() == 'draft': )
models.ChangeRequestFormApprovers.objects(
form_code=form_code request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') # correct
).delete()
models.ChangeRequestFormDetails.objects( print("hello")
form_code=form_code print(request.data['remarks'])
).delete()
models.ChangeRequestFormStakeHolders.objects( serializer = self.get_serializer(data=request.data)
form_code=form_code serializer.is_valid(raise_exception=True)
).delete() self.perform_create(serializer)
models.ChangeRequestFormAttachments.objects(
form_code=form_code #------------
).delete()
models.ChangeRequestFormTasks.objects( id = serializer.data['id']
form_code=form_code
).delete() current_user = request.data['user']
models.ChangeRequestFormHeader.objects(form_code=form_code).delete() form_code = request.data['form_code']
# self.perform_destroy(instance) delegation = request.data['delegation']
return Response({"message": "Change Request Deleted"}, status=status.HTTP_200_OK) action = request.data['action']
else: level = request.data['level']
message = {"message": "Cant delete this record, it has an ongoing tansaction"} next_level = int(request.data['level']) + 1
return Response( remarks = request.data['remarks']
message,
status=status.HTTP_204_NO_CONTENT next_approver = models.ChangeRequestFormApprovers.objects.filter(
) level=str(next_level),
form_code=form_code,
def retrieve(self, request, *args, **kwargs): archived_at=None
instance = self.queryset.filter( )
deleted_at=None,
form_code=str(self.kwargs.get('form_code')) if action.lower() == 'approved':
).first()
serializer = self.get_serializer(instance) models.ChangeRequestFormApprovers.objects.filter(
return Response(serializer.data) Q(archived_at=None) & Q(level=str(next_level))
).update(
@action(detail=True, date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
methods=['get'], )
url_path='history',
name="CR History") # EMAIL CODE FOR REQUESTOR
def list_cr_history(self, request, form_code=None, **kwargs): requestor_notification_msg = REQUESTOR_MESSAGE.split(';')[0]
requestor_email_code = REQUESTOR_MESSAGE.split(';')[1]
form_code = self.kwargs['form_code']
form_code_list = [] # EMAIL CODE FOR APPROVER
form_code_list.append(form_code) notification_msg = APPROVER_MESSAGE.split(';')[0]
email_code = APPROVER_MESSAGE.split(';')[1]
for frmitem in models.ChangeRequestFormHeader.objects.filter(old_form_code__ne=None).order_by('created'):
send_mail_requestor(
if frmitem.form_code == form_code: current_user, form_code, delegation,
form_code_list.append(frmitem.old_form_code) requestor_notification_msg, action, requestor_email_code,
form_code = frmitem.old_form_code remarks, level
)
# remove duplicates
mylist = list(dict.fromkeys(form_code_list)) for n_approver in next_approver:
print(mylist) print(n_approver.user)
queryset = models.ChangeRequestFormApprovers.objects.filter( if n_approver.delegation.lower() == 'vendor/implementor':
(Q(action__ne=None) & Q(action__ne='')), notification_msg = VENDOR_ACKNOWLEDGE_MESSAGE.split(';')[0]
form_code__in=mylist).order_by('created') email_code = VENDOR_ACKNOWLEDGE_MESSAGE.split(';')[1]
self.serializer_class = serializers.ChangeRequestFormApproversSerializer next_appover_email(
n_approver.user, form_code, delegation,
page = self.paginate_queryset(queryset) notification_msg, action, email_code
if page is not None: )
serializer = self.get_serializer(page, many=True)
elif action.lower() == 'rejected':
return self.get_paginated_response(serializer.data)
if delegation.lower() == 'requestor':
notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0]
class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet): email_code = VENDOR_REJECT_MESSAGE.split(';')[1]
queryset = models.ChangeRequestFormApprovers.objects.all() send_mail_vendor(
serializer_class = serializers.ChangeRequestFormApproversSerializer current_user, form_code, delegation,
pagination_class = paginators.SimplePageNumberPagination requestor_notification_msg, action, requestor_email_code,
remarks, level
)
def create(self, request, *args, **kwargs):
ObjectId = request.data.get('id') else:
sent = False # EMAIL CODE FOR REQUESTOR
if 'form_status' in request.data: requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
requestor_email_code = REQUESTOR_REJECT_MESSAGE.split(';')[1]
# for email
if str(request.data['level']) == '1' and request.data['form_status'].lower() == 'pending': send_mail_requestor(
user = request.data['user'] current_user, form_code, delegation,
form_code = request.data['form_code'] requestor_notification_msg, action, requestor_email_code,
delegation = request.data['delegation'] remarks, level
# initial_email(user, form_code, delegation) )
# EMAIL CODE FOR APPROVER elif action.lower() == 'completed':
notification_msg = APPROVER_MESSAGE.split(';')[0]
email_code = APPROVER_MESSAGE.split(';')[1] models.ChangeRequestFormApprovers.objects.filter(
Q(archived_at=None) & Q(level=str(next_level))
next_appover_email( ).update(
user, form_code, delegation, date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
notification_msg, 'initial', email_code )
)
# EMAIL CODE FOR REQUESTOR
request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') requestor_notification_msg = REQUESTOR_COMPLETION_MESSAGE.split(';')[0]
request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct requestor_email_code = REQUESTOR_COMPLETION_MESSAGE.split(';')[1]
sent = True
send_mail_requestor(
serializer = self.get_serializer(data=request.data) current_user, form_code, delegation,
serializer.is_valid(raise_exception=True) requestor_notification_msg, action, requestor_email_code,
remarks, level
if ObjectId: )
dbExisting = models.ChangeRequestFormApprovers.objects.filter(
id=ObjectId, elif action.lower() == 'acknowledged':
deleted_at=None).first()
# models.ChangeRequestFormApprovers.objects.filter(
if dbExisting: # level=str(next_level)
dbExisting.deleted_at = datetime.now() # ).update(
dbExisting.save() # date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
# )
# x = self.perform_create(serializer)
serializer.id = None # EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_ACKNOWLEDGE_MESSAGE.split(';')[0]
x = serializer.save() requestor_email_code = REQUESTOR_ACKNOWLEDGE_MESSAGE.split(';')[1]
if sent == True:
x.date_sent = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') send_mail_requestor(
x.created = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct current_user, form_code, delegation,
x.save() requestor_notification_msg, action, requestor_email_code,
remarks, level
headers = self.get_success_headers(serializer.data) )
return Response(
serializer.data, elif action.lower() == 'accepted':
status=status.HTTP_201_CREATED,
headers=headers # EMAIL CODE FOR VENDOR
) requestor_notification_msg = VENDOR_ACCEPTANCE_MESSAGE.split(';')[0]
requestor_email_code = VENDOR_ACCEPTANCE_MESSAGE.split(';')[1]
@action(
methods=['PATCH'], detail=False, send_mail_vendor(
url_path='approved', url_name='approved' current_user, form_code, delegation,
) requestor_notification_msg, action, requestor_email_code,
def approved(self, request, *args, **kwargs): remarks, level
objectid = request.data['id'] )
instance = models.ChangeRequestFormApprovers.objects.filter( # elif action.lower() == 'cancelled':
id=objectid
) # action_cancelled(self, request, *args, **kwargs)
# .update(
# set__deleted_at=datetime.utcnow() headers = self.get_success_headers(serializer.data)
# )
return Response(
instance = instance.first() serializer.data, status=status.HTTP_201_CREATED
current_remarks = instance.remarks )
print(current_remarks) #------------
instance.update( def list(self, request, *args, **kwargs):
set__deleted_at=datetime.utcnow() self.queryset = self.queryset.filter(archived_at=None)
) self.queryset = QuerySetHelper.Sort(self)
self.queryset = QuerySetHelper.Filter(self)
# request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') return super(ChangeRequestFormApproversViewset, self).list(request)
request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') # correct
# request.data['remarks'] = current_remarks def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(archived_at=None).first()
print("hello") serializer = self.get_serializer(instance)
print(request.data['remarks']) return Response(serializer.data)
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True) class ChangeRequestFormAttachmentsViewset(meviewsets.ModelViewSet):
self.perform_create(serializer) queryset = models.ChangeRequestFormAttachments.objects.all()
serializer_class = serializers.ChangeRequestFormAttachmentsSerializer
#------------ pagination_class = paginators.SimplePageNumberPagination
id = serializer.data['id'] def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(archived_at=None)
current_user = request.data['user'] self.queryset = QuerySetHelper.Sort(self)
form_code = request.data['form_code'] self.queryset = QuerySetHelper.Filter(self)
delegation = request.data['delegation'] return super(
action = request.data['action'] ChangeRequestFormAttachmentsViewset, self
level = request.data['level'] ).list(request)
next_level = int(request.data['level']) + 1
remarks = request.data['remarks'] def create(self, request, *args, **kwargs):
attachment_no = request.data.get('attachment_no')
next_approver = models.ChangeRequestFormApprovers.objects.filter( ObjectId = request.data.get('id')
level=str(next_level), serializer = self.get_serializer(data=request.data)
form_code=form_code, serializer.is_valid(raise_exception=True)
deleted_at=None
) if ObjectId:
dbExisting = models.ChangeRequestFormAttachments.objects.filter(
if action.lower() == 'approved': id=ObjectId,
archived_at=None).first()
models.ChangeRequestFormApprovers.objects.filter(
Q(deleted_at=None) & Q(level=str(next_level)) if dbExisting:
).update( dbExisting.archived_at = datetime.now()
date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S') dbExisting.save()
)
self.perform_create(serializer)
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_MESSAGE.split(';')[0] if not attachment_no:
requestor_email_code = REQUESTOR_MESSAGE.split(';')[1] id = serializer.data['id']
db_counter = models.ChangeRequestFormAttachments.objects.all().count()
# EMAIL CODE FOR APPROVER db_counter = db_counter + 1
notification_msg = APPROVER_MESSAGE.split(';')[0] models.ChangeRequestFormAttachments.objects.filter(id=id).update(
email_code = APPROVER_MESSAGE.split(';')[1] set__attachment_no=number_generator(
"ATCH", db_counter
send_mail_requestor( )
current_user, form_code, delegation, )
requestor_notification_msg, action, requestor_email_code,
remarks, level headers = self.get_success_headers(serializer.data)
) return Response(
serializer.data,
for n_approver in next_approver: status=status.HTTP_201_CREATED,
print(n_approver.user) headers=headers
)
if n_approver.delegation.lower() == 'vendor/implementor':
notification_msg = VENDOR_ACKNOWLEDGE_MESSAGE.split(';')[0] def retrieve(self, request, *args, **kwargs):
email_code = VENDOR_ACKNOWLEDGE_MESSAGE.split(';')[1] instance = self.queryset.filter(archived_at=None).first()
serializer = self.get_serializer(instance)
next_appover_email( return Response(serializer.data)
n_approver.user, form_code, delegation,
notification_msg, action, email_code
) class ChangeRequestFormStakeHoldersViewset(meviewsets.ModelViewSet):
elif action.lower() == 'rejected': queryset = models.ChangeRequestFormStakeHolders.objects.all()
serializer_class = serializers.ChangeRequestFormStakeHoldersSerializer
if delegation.lower() == 'requestor': pagination_class = paginators.SimplePageNumberPagination
notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0]
email_code = VENDOR_REJECT_MESSAGE.split(';')[1] def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(archived_at=None)
send_mail_vendor( self.queryset = QuerySetHelper.Sort(self)
current_user, form_code, delegation, self.queryset = QuerySetHelper.Filter(self)
requestor_notification_msg, action, requestor_email_code, return super(ChangeRequestFormStakeHoldersViewset, self).list(request)
remarks, level
) def create(self, request, *args, **kwargs):
ObjectId = request.data.get('id')
else: serializer = self.get_serializer(data=request.data)
# EMAIL CODE FOR REQUESTOR serializer.is_valid(raise_exception=True)
requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
requestor_email_code = REQUESTOR_REJECT_MESSAGE.split(';')[1] if ObjectId:
dbExisting = models.ChangeRequestFormStakeHolders.objects.filter(
send_mail_requestor( id=ObjectId,
current_user, form_code, delegation, archived_at=None).first()
requestor_notification_msg, action, requestor_email_code,
remarks, level if dbExisting:
) dbExisting.archived_at = datetime.now()
dbExisting.save()
elif action.lower() == 'completed':
self.perform_create(serializer)
models.ChangeRequestFormApprovers.objects.filter(
Q(deleted_at=None) & Q(level=str(next_level)) headers = self.get_success_headers(serializer.data)
).update( return Response(
date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S') serializer.data,
) status=status.HTTP_201_CREATED,
headers=headers
# EMAIL CODE FOR REQUESTOR )
requestor_notification_msg = REQUESTOR_COMPLETION_MESSAGE.split(';')[0]
requestor_email_code = REQUESTOR_COMPLETION_MESSAGE.split(';')[1] def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(archived_at=None).first()
send_mail_requestor( serializer = self.get_serializer(instance)
current_user, form_code, delegation, return Response(serializer.data)
requestor_notification_msg, action, requestor_email_code,
remarks, level
) class ChangeRequestFormDetailsViewset(meviewsets.ModelViewSet):
elif action.lower() == 'acknowledged': queryset = models.ChangeRequestFormDetails.objects.all()
serializer_class = serializers.ChangeRequestFormDetailsSerializer
# models.ChangeRequestFormApprovers.objects.filter( pagination_class = paginators.SimplePageNumberPagination
# level=str(next_level)
# ).update( def list(self, request, *args, **kwargs):
# date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S') self.queryset = self.queryset.filter(archived_at=None)
# ) self.queryset = QuerySetHelper.Sort(self)
self.queryset = QuerySetHelper.Filter(self)
# EMAIL CODE FOR REQUESTOR return super(ChangeRequestFormDetailsViewset, self).list(request)
requestor_notification_msg = REQUESTOR_ACKNOWLEDGE_MESSAGE.split(';')[0]
requestor_email_code = REQUESTOR_ACKNOWLEDGE_MESSAGE.split(';')[1] def create(self, request, *args, **kwargs):
ObjectId = request.data.get('id')
send_mail_requestor( serializer = self.get_serializer(data=request.data)
current_user, form_code, delegation, serializer.is_valid(raise_exception=True)
requestor_notification_msg, action, requestor_email_code,
remarks, level if ObjectId:
) dbExisting = models.ChangeRequestFormDetails.objects.filter(
id=ObjectId,
elif action.lower() == 'accepted': archived_at=None).first()
# EMAIL CODE FOR VENDOR if dbExisting:
requestor_notification_msg = VENDOR_ACCEPTANCE_MESSAGE.split(';')[0] dbExisting.archived_at = datetime.now()
requestor_email_code = VENDOR_ACCEPTANCE_MESSAGE.split(';')[1] dbExisting.save()
send_mail_vendor( self.perform_create(serializer)
current_user, form_code, delegation,
requestor_notification_msg, action, requestor_email_code, headers = self.get_success_headers(serializer.data)
remarks, level return Response(
) serializer.data,
status=status.HTTP_201_CREATED,
# elif action.lower() == 'cancelled': headers=headers
)
# action_cancelled(self, request, *args, **kwargs)
def retrieve(self, request, *args, **kwargs):
headers = self.get_success_headers(serializer.data) instance = self.queryset.filter(archived_at=None).first()
serializer = self.get_serializer(instance)
return Response( return Response(serializer.data)
serializer.data, status=status.HTTP_201_CREATED
)
class ChangeRequestFormPost(APIView):
#------------
# @transaction.atomic()
def list(self, request, *args, **kwargs): def post(self, request):
self.queryset = self.queryset.filter(deleted_at=None) form_header = request.data
self.queryset = QuerySetHelper.Sort(self)
self.queryset = QuerySetHelper.Filter(self) try:
return super(ChangeRequestFormApproversViewset, self).list(request) data_list_approver = []
data_list_stake = []
def retrieve(self, request, *args, **kwargs): data_list_attach = []
instance = self.queryset.filter(deleted_at=None).first() data_list_detail = []
serializer = self.get_serializer(instance)
return Response(serializer.data) form_header_data = {
'requested_to_template_name': form_header['requested_to_template_name'],
'requested_to_template_id': form_header['requested_to_template_id'],
class ChangeRequestFormAttachmentsViewset(meviewsets.ModelViewSet): 'requested_to_objective': form_header['requested_to_objective'],
queryset = models.ChangeRequestFormAttachments.objects.all() 'requested_to_target_date': form_header['requested_to_target_date'],
serializer_class = serializers.ChangeRequestFormAttachmentsSerializer 'requested_to_priority': form_header['requested_to_priority'],
pagination_class = paginators.SimplePageNumberPagination 'description': form_header['description'],
'status': form_header['status'],
def list(self, request, *args, **kwargs): 'company_desc': form_header['company_desc'],
self.queryset = self.queryset.filter(deleted_at=None) 'department_desc': form_header['department_desc'],
self.queryset = QuerySetHelper.Sort(self) 'requested_desc': form_header['requested_desc'],
self.queryset = QuerySetHelper.Filter(self) 'old_form_code': form_header['old_form_code'],
return super( 'requested_by_department': form_header['requested_by_department'],
ChangeRequestFormAttachmentsViewset, self 'requested_by_user': form_header['requested_by_user'],
).list(request) 'requested_to_company': form_header['requested_to_company'],
'requested_to_department': form_header['requested_to_department'],
def create(self, request, *args, **kwargs): 'requested_to_user': form_header['requested_to_user'],
attachment_no = request.data.get('attachment_no') 'template_no': form_header['template_no']
ObjectId = request.data.get('id') }
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True) frm_approvers = form_header['frm_approvers']
frm_stakes = form_header['frm_stakes']
if ObjectId: frm_attachments = form_header['frm_attachments']
dbExisting = models.ChangeRequestFormAttachments.objects.filter( frm_details = form_header['frm_details']
id=ObjectId,
deleted_at=None).first() # sp1 = transaction.savepoint() # nothing will save to db
if dbExisting: serializer = serializers.ChangeRequestFormHeaderSerializer(
dbExisting.deleted_at = datetime.now() data=form_header_data)
dbExisting.save()
if serializer.is_valid(raise_exception=True):
self.perform_create(serializer) serializer.save()
if not attachment_no: template_no = serializer.data['template_no']
id = serializer.data['id']
db_counter = models.ChangeRequestFormAttachments.objects.all().count() tmp_counter = models.ChangeRequestFormHeader.objects.filter(
db_counter = db_counter + 1 template_no=template_no).count()
models.ChangeRequestFormAttachments.objects.filter(id=id).update( # tmp_counter = tmp_counter + 1
set__attachment_no=number_generator( CR_Prefix = serializer.data['requested_to_template_id']
"ATCH", db_counter
) generate_tmp = number_generator(CR_Prefix, tmp_counter)
)
frm_id = serializer.data['form_code']
headers = self.get_success_headers(serializer.data) print(frm_id)
return Response(
serializer.data, models.ChangeRequestFormHeader.objects.filter(
status=status.HTTP_201_CREATED, form_code=frm_id).update(
headers=headers requested_to_template_id=generate_tmp)
)
# create template approvers
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first() for frm_approver in frm_approvers:
serializer = self.get_serializer(instance) frm_approver['form_code'] = frm_id
return Response(serializer.data) data_list_approver.append(frm_approver)
serializerApprover = serializers.ChangeRequestFormApproversSerializer(
class ChangeRequestFormStakeHoldersViewset(meviewsets.ModelViewSet): data=data_list_approver, many=True)
queryset = models.ChangeRequestFormStakeHolders.objects.all() if serializerApprover.is_valid(raise_exception=True):
serializer_class = serializers.ChangeRequestFormStakeHoldersSerializer serializerApprover.save()
pagination_class = paginators.SimplePageNumberPagination
# create template stakes
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None) for frm_stake in frm_stakes:
self.queryset = QuerySetHelper.Sort(self) frm_stake['form_code'] = frm_id
self.queryset = QuerySetHelper.Filter(self) data_list_stake.append(frm_stake)
return super(ChangeRequestFormStakeHoldersViewset, self).list(request)
serializerStake = serializers.ChangeRequestFormStakeHoldersSerializer(
def create(self, request, *args, **kwargs): data=data_list_stake, many=True)
ObjectId = request.data.get('id')
serializer = self.get_serializer(data=request.data) if serializerStake.is_valid(raise_exception=True):
serializer.is_valid(raise_exception=True) serializerStake.save()
if ObjectId: # create template attachments
dbExisting = models.ChangeRequestFormStakeHolders.objects.filter(
id=ObjectId, for frm_attachment in frm_attachments:
deleted_at=None).first() frm_attachment['form_code'] = frm_id
data_list_attach.append(frm_attachment)
if dbExisting:
dbExisting.deleted_at = datetime.now() serializerAttach = serializers.ChangeRequestFormAttachmentsSerializer(
dbExisting.save() data=data_list_attach, many=True)
self.perform_create(serializer) if serializerAttach.is_valid(raise_exception=True):
serializerAttach.save()
headers = self.get_success_headers(serializer.data)
return Response( # create template details
serializer.data,
status=status.HTTP_201_CREATED, for frm_detail in frm_details:
headers=headers frm_detail['form_code'] = frm_id
) data_list_detail.append(frm_detail)
def retrieve(self, request, *args, **kwargs): serializerDetail = serializers.ChangeRequestFormDetailsSerializer(
instance = self.queryset.filter(deleted_at=None).first() data=data_list_detail, many=True)
serializer = self.get_serializer(instance)
return Response(serializer.data) if serializerDetail.is_valid(raise_exception=True):
serializerDetail.save()
class ChangeRequestFormDetailsViewset(meviewsets.ModelViewSet): message = {
'code': 201,
queryset = models.ChangeRequestFormDetails.objects.all() 'status': 'success',
serializer_class = serializers.ChangeRequestFormDetailsSerializer 'message': 'Form Details successfully saved!',
pagination_class = paginators.SimplePageNumberPagination 'results': serializer.data
}
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None) return Response(message, status=status.HTTP_201_CREATED)
self.queryset = QuerySetHelper.Sort(self)
self.queryset = QuerySetHelper.Filter(self) except ValidationError as e:
return super(ChangeRequestFormDetailsViewset, self).list(request) # transaction.savepoint_rollback(sp1)
message = {
def create(self, request, *args, **kwargs): 'code': 400,
ObjectId = request.data.get('id') 'status': 'failed',
serializer = self.get_serializer(data=request.data) 'message': str(e),
serializer.is_valid(raise_exception=True) }
return Response(message, status=status.HTTP_400_BAD_REQUEST)
if ObjectId:
dbExisting = models.ChangeRequestFormDetails.objects.filter( except Exception as e:
id=ObjectId, # transaction.savepoint_rollback(sp1)
deleted_at=None).first() message = {
'code': 500,
if dbExisting: 'status': 'failed',
dbExisting.deleted_at = datetime.now() 'message': 'Request was not able to process' + str(e),
dbExisting.save() }
return Response(message,
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(
serializer.data,
status=status.HTTP_201_CREATED,
headers=headers
)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestFormPost(APIView):
# @transaction.atomic()
def post(self, request):
form_header = request.data
try:
data_list_approver = []
data_list_stake = []
data_list_attach = []
data_list_detail = []
form_header_data = {
'requested_to_template_name': form_header['requested_to_template_name'],
'requested_to_template_id': form_header['requested_to_template_id'],
'requested_to_objective': form_header['requested_to_objective'],
'requested_to_target_date': form_header['requested_to_target_date'],
'requested_to_priority': form_header['requested_to_priority'],
'description': form_header['description'],
'status': form_header['status'],
'company_desc': form_header['company_desc'],
'department_desc': form_header['department_desc'],
'requested_desc': form_header['requested_desc'],
'old_form_code': form_header['old_form_code'],
'requested_by_department': form_header['requested_by_department'],
'requested_by_user': form_header['requested_by_user'],
'requested_to_company': form_header['requested_to_company'],
'requested_to_department': form_header['requested_to_department'],
'requested_to_user': form_header['requested_to_user'],
'template_no': form_header['template_no']
}
frm_approvers = form_header['frm_approvers']
frm_stakes = form_header['frm_stakes']
frm_attachments = form_header['frm_attachments']
frm_details = form_header['frm_details']
# sp1 = transaction.savepoint() # nothing will save to db
serializer = serializers.ChangeRequestFormHeaderSerializer(
data=form_header_data)
if serializer.is_valid(raise_exception=True):
serializer.save()
frm_id = serializer.data['form_code']
print(frm_id)
# create template approvers
for frm_approver in frm_approvers:
frm_approver['form_code'] = frm_id
data_list_approver.append(frm_approver)
serializerApprover = serializers.ChangeRequestFormApproversSerializer(
data=data_list_approver, many=True)
if serializerApprover.is_valid(raise_exception=True):
serializerApprover.save()
# create template stakes
for frm_stake in frm_stakes:
frm_stake['form_code'] = frm_id
data_list_stake.append(frm_stake)
serializerStake = serializers.ChangeRequestFormStakeHoldersSerializer(
data=data_list_stake, many=True)
if serializerStake.is_valid(raise_exception=True):
serializerStake.save()
# create template attachments
for frm_attachment in frm_attachments:
frm_attachment['form_code'] = frm_id
data_list_attach.append(frm_attachment)
serializerAttach = serializers.ChangeRequestFormAttachmentsSerializer(
data=data_list_attach, many=True)
if serializerAttach.is_valid(raise_exception=True):
serializerAttach.save()
# create template details
for frm_detail in frm_details:
frm_detail['form_code'] = frm_id
data_list_detail.append(frm_detail)
serializerDetail = serializers.ChangeRequestFormDetailsSerializer(
data=data_list_detail, many=True)
if serializerDetail.is_valid(raise_exception=True):
serializerDetail.save()
message = {
'code': 201,
'status': 'success',
'message': 'Form 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) status=status.HTTP_500_INTERNAL_SERVER_ERROR)
\ No newline at end of file
from app.entities import models
from rest_framework import serializers
from django.db.models import Q
from drf_writable_nested import WritableNestedModelSerializer
class ChangeRequestTemplateApproversSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateApprovers
fields = '__all__'
read_only_fields = ['created', 'archived_at', 'code']
class ChangeRequestTemplateStakeHoldersSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateStakeHolders
fields = '__all__'
read_only_fields = ['created', 'archived_at', 'code']
class ChangeRequestTemplateAttachmentsSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateAttachments
fields = '__all__'
read_only_fields = ['created', 'archived_at', 'code']
class ChangeRequestTemplateDetailsSerializer(
serializers.ModelSerializer
):
class Meta:
model = models.ChangeRequestTemplateDetails
fields = '__all__'
read_only_fields = ['created', 'archived_at', 'code']
# comment
class ChangeRequestTemplatesSerializer(
WritableNestedModelSerializer
):
tmp_approvers = ChangeRequestTemplateApproversSerializer(
many=True, required=False)
tmp_stakes = ChangeRequestTemplateStakeHoldersSerializer(
many=True, required=False)
tmp_attachments = ChangeRequestTemplateAttachmentsSerializer(
many=True, required=False)
tmp_details = ChangeRequestTemplateDetailsSerializer(
many=True, required=False)
class Meta:
model = models.ChangeRequestTemplateHeader
# fields = '__all__'
fields = ('template_no', 'requested_to_template_name',
'requested_to_objective', 'requested_to_target_date',
'requested_to_priority', 'description', 'created',
'requested_to_template_id', 'requested_to_company',
'requested_to_department', 'requested_to_user',
'created_by_user', 'created_by_department', 'tmp_approvers',
'tmp_stakes', 'tmp_attachments', 'tmp_details')
read_only_fields = ['created', 'archived_at', 'template_no']
\ 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, crhistory_save
from django.shortcuts import get_object_or_404
from rest_framework.generics import GenericAPIView
from rest_framework.mixins import UpdateModelMixin
from django.forms.models import model_to_dict
from app.entities import enums
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(
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(archived_at=None)
).update(archived_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)
@transaction.atomic
def partial_update(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False)
instance = self.get_object()
template_no = kwargs['template_no']
tmp_no_exists = models.ChangeRequestFormHeader.objects.filter(
template_no=template_no)
if not tmp_no_exists:
serializer = self.get_serializer(instance, data=request.data, partial=partial)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(instance)
self.perform_update(serializer)
new_instance = serializer.data
# print(new_instance)
crhistory_save(
enums.LogEnum.UPDATE.value,
enums.CREntitiesEnum.CR_TMP_HEADER.value,
new_instance['template_no'],
old_instance,
new_instance
)
return Response(serializer.data)
return Response(
"Unable to edit due to existing transaction",
status=status.HTTP_400_BAD_REQUEST
)
@action(
methods=['PATCH'], detail=True,
url_path='archived', url_name='archived'
)
def archived(self, request, *args, **kwargs):
template_no = kwargs['template_no']
tmp_no_exists = models.ChangeRequestFormHeader.objects.filter(
template_no=template_no)
if not tmp_no_exists:
models.ChangeRequestTemplateDetails.objects.filter(
template_no=template_no
).update(archived_at=datetime.now())
models.ChangeRequestTemplateAttachments.objects.filter(
template_no=template_no
).update(archived_at=datetime.now())
models.ChangeRequestTemplateHeader.objects.filter(
template_no=template_no
).update(archived_at=datetime.now())
models.ChangeRequestTemplateApprovers.objects.filter(
template_no=template_no
).update(archived_at=datetime.now())
models.ChangeRequestTemplateStakeHolders.objects.filter(
template_no=template_no
).update(archived_at=datetime.now())
return Response(
"Template successfully archived",
status=status.HTTP_200_OK
)
return Response(
"Unable to archive due to existing transaction",
status=status.HTTP_400_BAD_REQUEST
)
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)
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(archived_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplateApproversViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(archived_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(archived_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(
ChangeRequestTemplateAttachmentsViewset, self
).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(archived_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
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(archived_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplateStakeHoldersViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(archived_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(archived_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplateDetailsViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(archived_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
\ No newline at end of file
from datetime import datetime from datetime import datetime
from django.db.models.functions import Lower from django.db.models.functions import Lower
from functools import wraps from functools import wraps
from django.conf import settings from django.conf import settings
import requests import requests
from app.entities import models from app.entities import models
from datetime import timedelta from datetime import timedelta
from django.db.models import Q from django.db.models import Q
# from dateutil import parser # from dateutil import parser
# EMAIL = settings.EMAIL # EMAIL = settings.EMAIL
# ACCOUNTS = settings.ACCOUNTS # ACCOUNTS = settings.ACCOUNTS
# GROUPS = settings.GROUPS # GROUPS = settings.GROUPS
# COMPANIES = settings.COMPANIES # COMPANIES = settings.COMPANIES
# ALLOWED_COMPANY = settings.ALLOWED_COMPANY # ALLOWED_COMPANY = settings.ALLOWED_COMPANY
# CR_FRONT_LINK = settings.CR_FRONT_LINK # CR_FRONT_LINK = settings.CR_FRONT_LINK
# NOTIFICATION = settings.NOTIFICATION # NOTIFICATION = settings.NOTIFICATION
def get_group_details(group_no): def get_group_details(group_no):
return requests.get(f'{GROUPS}?group_no={group_no}').json()['results'][0] return requests.get(f'{GROUPS}?group_no={group_no}').json()['results'][0]
def get_companies_details(slug): def get_companies_details(slug):
return requests.get(f'{COMPANIES}?slug={slug}').json()['results'][0] return requests.get(f'{COMPANIES}?slug={slug}').json()['results'][0]
def get_account_details(id_number): def get_account_details(id_number):
return requests.get(f'{ACCOUNTS}?id_number={id_number}').json()['results'][0] return requests.get(f'{ACCOUNTS}?id_number={id_number}').json()['results'][0]
def get_allowed_company(id_number): def get_allowed_company(id_number):
return requests.get(f'{ALLOWED_COMPANY}?id_number={id_number}') return requests.get(f'{ALLOWED_COMPANY}?id_number={id_number}')
class QuerySetHelper: class QuerySetHelper:
@staticmethod @staticmethod
def Sort(context): def Sort(context):
sort_field = context.request.query_params.get('sort_field') sort_field = context.request.query_params.get('sort_field')
sort_order = context.request.query_params.get('sort_order') sort_order = context.request.query_params.get('sort_order')
if sort_field and sort_order: if sort_field and sort_order:
if sort_order.lower() == 'asc': if sort_order.lower() == 'asc':
context.queryset = context.queryset.order_by(sort_field) context.queryset = context.queryset.order_by(sort_field)
else: else:
context.queryset = context.queryset.order_by(f"-{sort_field}") context.queryset = context.queryset.order_by(f"-{sort_field}")
return context.queryset return context.queryset
@staticmethod @staticmethod
def Search(context): def Search(context):
search_field = context.request.query_params.get('search-field') search_field = context.request.query_params.get('search-field')
search_key = context.request.query_params.get('search-key') search_key = context.request.query_params.get('search-key')
if search_field and search_key: if search_field and search_key:
context.queryset = context.queryset( context.queryset = context.queryset(
__raw__={f"{search_field}" : {"$regex" : f".*{search_key.lower()}.*"}} __raw__={f"{search_field}" : {"$regex" : f".*{search_key.lower()}.*"}}
) )
return context.queryset return context.queryset
@staticmethod @staticmethod
def SearchDynamic(base_queryset, def SearchDynamic(base_queryset,
): ):
search_field = context.request.query_params.get('search-field') search_field = context.request.query_params.get('search-field')
search_key = context.request.query_params.get('search-key') search_key = context.request.query_params.get('search-key')
if search_field and search_key: if search_field and search_key:
context.queryset = context.queryset( context.queryset = context.queryset(
__raw__={f"{search_field}" : {"$regex" : f".*{search_key.lower()}.*"}} __raw__={f"{search_field}" : {"$regex" : f".*{search_key.lower()}.*"}}
) )
return context.queryset return context.queryset
# if self.request.query_params.get('search'): # if self.request.query_params.get('search'):
# search_key = self.request.query_params.get('search') # search_key = self.request.query_params.get('search')
# self.queryset = self.queryset.filter( # self.queryset = self.queryset.filter(
# Q(requested_to_template_name__icontains=search_key.lower()) | # Q(requested_to_template_name__icontains=search_key.lower()) |
# Q(requested_to_template_id__icontains=search_key.lower()) # Q(requested_to_template_id__icontains=search_key.lower())
# ) # )
# self.queryset = QuerySetHelper.Sort(self) # self.queryset = QuerySetHelper.Sort(self)
@staticmethod @staticmethod
def Filter(context): def Filter(context):
if int(len(context.request.query_params)) > 0: if int(len(context.request.query_params)) > 0:
filtering_kwargs = {} filtering_kwargs = {}
with_params = [] with_params = []
common_params = ( common_params = (
'page', 'page-size', 'page_size', 'sort_order', 'sort_field' 'page', 'page-size', 'page_size', 'sort_order', 'sort_field'
) )
for field, value in context.request.GET.items(): for field, value in context.request.GET.items():
filtering_kwargs = {} filtering_kwargs = {}
if value and field.lower() not in common_params: if value and field.lower() not in common_params:
filtering_kwargs[field] = {"$regex" : f".*{value.lower()}.*"} filtering_kwargs[field] = {"$regex" : f".*{value.lower()}.*"}
filtering_kwargs[field] = {"$regex" : f".*{value}.*"} filtering_kwargs[field] = {"$regex" : f".*{value}.*"}
# filtering_kwargs[field] = {"$regex" : f".*{value.lower()}.*"} # filtering_kwargs[field] = {"$regex" : f".*{value.lower()}.*"}
with_params.append(filtering_kwargs) with_params.append(filtering_kwargs)
raw_query = {"$or": with_params} raw_query = {"$or": with_params}
context.queryset = context.queryset(__raw__=raw_query) context.queryset = context.queryset(__raw__=raw_query)
return context.queryset return context.queryset
def ApproverStatus(status): def ApproverStatus(status):
choices = ["pending", "rejected", "approved", "completed", "cancelled", 'acknowledged', 'accepted'] choices = ["pending", "rejected", "approved", "completed", "cancelled", 'acknowledged', 'accepted']
if status not in choices: if status not in choices:
return False return False
else: else:
return True return True
def number_generator(prefix, id): def number_generator(prefix, id):
date = '{:%Y%m%d}'.format(datetime.now()) date = '{:%Y%m%d}'.format(datetime.now())
id_num = '{:07}'.format(id) id_num = '{:07}'.format(id)
autogenerated_no = prefix + '-' + date + '-' + id_num autogenerated_no = prefix + '-' + date + '-' + id_num
return autogenerated_no return autogenerated_no
def logged_user(self): def logged_user(self):
# return self.request.META.get('HTTP_ACCOUNT_NO') # return self.request.META.get('HTTP_ACCOUNT_NO')
return self.request.user return self.request.user
def receiver_body( def receiver_body(
sender_account_no, receiver_account_no, sender_account_no, receiver_account_no,
email_code, email_recipient, email_code, email_recipient,
app, sent, name, routing_level, app, sent, name, routing_level,
status, cr_number, cr_name, status, cr_number, cr_name,
company_requestedto, company_requestedto,
department_requestedto, department_requestedto,
priority_level, url priority_level, url
): ):
receiver_data = { receiver_data = {
"sender_account_no": sender_account_no, "sender_account_no": sender_account_no,
"receiver_account_no": receiver_account_no, "receiver_account_no": receiver_account_no,
"email_code": email_code, "email_code": email_code,
"email_recipient": email_recipient, "email_recipient": email_recipient,
"app": app, "app": app,
"sent": "False", "sent": "False",
"name": name, "name": name,
"routing_level": routing_level, "routing_level": routing_level,
"status": status, "status": status,
"cr_number": cr_number, "cr_number": cr_number,
"cr_name": cr_name, "cr_name": cr_name,
"company_requestedto": company_requestedto, "company_requestedto": company_requestedto,
"department_requestedto": department_requestedto, "department_requestedto": department_requestedto,
"priority_level": priority_level, "priority_level": priority_level,
"url": url "url": url
} }
return receiver_data return receiver_data
def get_template_instance(form_code): def get_template_instance(form_code):
template_instance = models.ChangeRequestFormHeader.objects.filter( template_instance = models.ChangeRequestFormHeader.objects.filter(
Q(form_code=form_code) & Q(form_code=form_code) &
Q(deleted_at=None) Q(archived_at=None)
).first() ).first()
return template_instance return template_instance
def send_notification( def send_notification(
form_code, cr_number, user_id_number, form_code, cr_number, user_id_number,
user_name, message, app, user_name, message, app,
sender_id_number, sender_name sender_id_number, sender_name
): ):
notification_data = { notification_data = {
"slug": form_code, "slug": form_code,
"change_request_template_code": cr_number, "change_request_template_code": cr_number,
# (OPENING TAG) receiver credential # (OPENING TAG) receiver credential
"account_no": user_id_number, "account_no": user_id_number,
"user": user_name, "user": user_name,
# (CLOSING TAG) receiver credential # (CLOSING TAG) receiver credential
"notif_type": "ACTIVITY", "notif_type": "ACTIVITY",
"message": message, "message": message,
"is_read": False, "is_read": False,
"app": app, "app": app,
"sender_account_no": sender_id_number, "sender_account_no": sender_id_number,
"createdby": sender_name "createdby": sender_name
} }
notification = requests.post(NOTIFICATION, data=notification_data) notification = requests.post(NOTIFICATION, data=notification_data)
# return notification.status # return notification.status
return notification return notification
def send_mail_vendor(receiver, def send_mail_vendor(receiver,
form_code, form_code,
delegation, delegation,
msg, msg,
action, action,
code, code,
remarks, remarks,
routing_level): routing_level):
app = 'cms' app = 'cms'
cr_link = f'{CR_FRONT_LINK}/{form_code}' cr_link = f'{CR_FRONT_LINK}/{form_code}'
template_instance = get_template_instance(form_code) template_instance = get_template_instance(form_code)
cr_number = template_instance.requested_to_template_id cr_number = template_instance.requested_to_template_id
template_name = template_instance.requested_to_template_name template_name = template_instance.requested_to_template_name
requested_to_company = template_instance.requested_to_company requested_to_company = template_instance.requested_to_company
requested_to_department = template_instance.requested_to_department requested_to_department = template_instance.requested_to_department
requested_by_user = template_instance.requested_by_user requested_by_user = template_instance.requested_by_user
created = template_instance.created created = template_instance.created
requested_to_priority = template_instance.requested_to_priority requested_to_priority = template_instance.requested_to_priority
vendor_instance = models.ChangeRequestFormApprovers.objects.filter( vendor_instance = models.ChangeRequestFormApprovers.objects.filter(
Q(delegation="Vendor/Implementor") & Q(delegation="Vendor/Implementor") &
Q(form_code=form_code) Q(form_code=form_code)
).first() ).first()
# receiver details # receiver details
vendor = get_account_details(vendor_instance.user) vendor = get_account_details(vendor_instance.user)
requestor_name = vendor['name'] requestor_name = vendor['name']
requestor_email = vendor['email'] requestor_email = vendor['email']
requestor_account_id = vendor['id_number'] requestor_account_id = vendor['id_number']
# sender details # sender details
sender_instance = get_account_details(receiver) sender_instance = get_account_details(receiver)
sender_account_username = sender_instance['username'] sender_account_username = sender_instance['username']
sender_account_id = sender_instance['id_number'] sender_account_id = sender_instance['id_number']
sender_name = sender_instance['name'] sender_name = sender_instance['name']
group = get_group_details(requested_to_department) group = get_group_details(requested_to_department)
group_name = group['name'] group_name = group['name']
company = get_companies_details(requested_to_company) company = get_companies_details(requested_to_company)
company_name = company['name'] company_name = company['name']
container = receiver_body( container = receiver_body(
sender_account_id, requestor_account_id, code, sender_account_id, requestor_account_id, code,
requestor_email, app, "False", requestor_name, routing_level, requestor_email, app, "False", requestor_name, routing_level,
action, cr_number, template_name, company_name, group_name, action, cr_number, template_name, company_name, group_name,
requested_to_priority, cr_link requested_to_priority, cr_link
) )
if action.lower() == 'rejected': if action.lower() == 'rejected':
new_body = {"rejected_by": requestor_name, new_body = {"rejected_by": requestor_name,
"remarks": remarks} "remarks": remarks}
elif action.lower() == 'accepted': elif action.lower() == 'accepted':
new_body = {"approved_by": requestor_name} new_body = {"approved_by": requestor_name}
data = {**container, **new_body} data = {**container, **new_body}
email_status = requests.post(EMAIL, data=data) email_status = requests.post(EMAIL, data=data)
message = f"{sender_name} {msg} ({template_name})" message = f"{sender_name} {msg} ({template_name})"
send_notification( send_notification(
form_code, cr_number, form_code, cr_number,
requestor_account_id, requestor_name, requestor_account_id, requestor_name,
message, app, message, app,
sender_account_id, sender_account_username sender_account_id, sender_account_username
) )
def send_mail_requestor(receiver, def send_mail_requestor(receiver,
form_code, form_code,
delegation, delegation,
msg, msg,
action, action,
code, code,
remarks, remarks,
routing_level): routing_level):
cr_link = f'{CR_FRONT_LINK}/{form_code}' cr_link = f'{CR_FRONT_LINK}/{form_code}'
template_instance = get_template_instance(form_code) template_instance = get_template_instance(form_code)
app = 'cms' app = 'cms'
cr_number = template_instance.requested_to_template_id cr_number = template_instance.requested_to_template_id
template_name = template_instance.requested_to_template_name template_name = template_instance.requested_to_template_name
requested_to_company = template_instance.requested_to_company requested_to_company = template_instance.requested_to_company
requested_to_department = template_instance.requested_to_department requested_to_department = template_instance.requested_to_department
requested_by_user = template_instance.requested_by_user requested_by_user = template_instance.requested_by_user
created = template_instance.created created = template_instance.created
requested_to_priority = template_instance.requested_to_priority requested_to_priority = template_instance.requested_to_priority
# receiver details -------------------------------------------------- # receiver details --------------------------------------------------
requestor_instance = get_account_details(requested_by_user) requestor_instance = get_account_details(requested_by_user)
requestor_name = requestor_instance['name'] requestor_name = requestor_instance['name']
requestor_email = requestor_instance['email'] requestor_email = requestor_instance['email']
requestor_account_id = requestor_instance['id_number'] requestor_account_id = requestor_instance['id_number']
# sender details -------------------------------------------------- # sender details --------------------------------------------------
sender_instance = get_account_details(receiver) sender_instance = get_account_details(receiver)
sender_account_username = sender_instance['username'] sender_account_username = sender_instance['username']
sender_account_id = sender_instance['id_number'] sender_account_id = sender_instance['id_number']
sender_name = sender_instance['name'] sender_name = sender_instance['name']
group = get_group_details(requested_to_department) group = get_group_details(requested_to_department)
group_name = group['name'] group_name = group['name']
company = get_companies_details(requested_to_company) company = get_companies_details(requested_to_company)
company_name = company['name'] company_name = company['name']
data = receiver_body( data = receiver_body(
sender_account_id, requestor_account_id, code, sender_account_id, requestor_account_id, code,
requestor_email, app, "False", requestor_name, routing_level, requestor_email, app, "False", requestor_name, routing_level,
action, cr_number, template_name, company_name, group_name, action, cr_number, template_name, company_name, group_name,
requested_to_priority, cr_link requested_to_priority, cr_link
) )
if action.lower() == 'approved': if action.lower() == 'approved':
new_body = {"approved_by": sender_name} new_body = {"approved_by": sender_name}
elif action.lower() == 'rejected': elif action.lower() == 'rejected':
new_body = {"rejected_by": sender_name, new_body = {"rejected_by": sender_name,
"remarks": remarks} "remarks": remarks}
elif action.lower() == 'completed': elif action.lower() == 'completed':
new_body = {"completed_by": sender_name} new_body = {"completed_by": sender_name}
elif action.lower() == 'acknowledged': elif action.lower() == 'acknowledged':
new_body = {"acknowledge_by": sender_name} new_body = {"acknowledge_by": sender_name}
data = {**data, **new_body} data = {**data, **new_body}
email_status = requests.post(EMAIL, data=data) email_status = requests.post(EMAIL, data=data)
message = f"{sender_name} {msg} ({template_name})" message = f"{sender_name} {msg} ({template_name})"
notif = send_notification( notif = send_notification(
form_code, cr_number, form_code, cr_number,
requestor_account_id, requestor_name, requestor_account_id, requestor_name,
message, app, message, app,
sender_account_id, sender_account_username sender_account_id, sender_account_username
) )
def next_appover_email(receiver, form_code, delegation, msg, action, code): def next_appover_email(receiver, form_code, delegation, msg, action, code):
cr_link = f'{CR_FRONT_LINK}/{form_code}' cr_link = f'{CR_FRONT_LINK}/{form_code}'
template_instance = get_template_instance(form_code) template_instance = get_template_instance(form_code)
app = 'cms' app = 'cms'
cr_number = template_instance.requested_to_template_id cr_number = template_instance.requested_to_template_id
template_name = template_instance.requested_to_template_name template_name = template_instance.requested_to_template_name
requested_to_company = template_instance.requested_to_company requested_to_company = template_instance.requested_to_company
requested_to_department = template_instance.requested_to_department requested_to_department = template_instance.requested_to_department
requested_by_user = template_instance.requested_by_user requested_by_user = template_instance.requested_by_user
created = template_instance.created created = template_instance.created
requested_to_priority = template_instance.requested_to_priority requested_to_priority = template_instance.requested_to_priority
# for rec in receiver: # for rec in receiver:
# receiver details # receiver details
# if action == 'initial': # if action == 'initial':
receiver_instance = get_account_details(receiver) receiver_instance = get_account_details(receiver)
# else: # else:
# receiver_instance = get_account_details(receiver.user) # receiver_instance = get_account_details(receiver.user)
receiver_name = receiver_instance['name'] receiver_name = receiver_instance['name']
receiver_email = receiver_instance['email'] receiver_email = receiver_instance['email']
receiver_account_id = receiver_instance['id_number'] receiver_account_id = receiver_instance['id_number']
# sender details # sender details
sender_instance = get_account_details(requested_by_user) sender_instance = get_account_details(requested_by_user)
sender_account_username = sender_instance['username'] sender_account_username = sender_instance['username']
sender_account_id = sender_instance['id_number'] sender_account_id = sender_instance['id_number']
sender_name = sender_instance['name'] sender_name = sender_instance['name']
group = get_group_details(requested_to_department) group = get_group_details(requested_to_department)
group_name = group['name'] group_name = group['name']
company = get_companies_details(requested_to_company) company = get_companies_details(requested_to_company)
company_name = company['name'] company_name = company['name']
data = receiver_body( data = receiver_body(
sender_account_id, receiver_account_id, code, sender_account_id, receiver_account_id, code,
receiver_email, app, "False", receiver_name, 1, receiver_email, app, "False", receiver_name, 1,
"Pending", cr_number, template_name, company_name, group_name, "Pending", cr_number, template_name, company_name, group_name,
requested_to_priority, cr_link requested_to_priority, cr_link
) )
email_status = requests.post(EMAIL, data=data) email_status = requests.post(EMAIL, data=data)
message = f"{sender_name} {msg} ({template_name})" message = f"{sender_name} {msg} ({template_name})"
notif = send_notification( notif = send_notification(
form_code, cr_number, form_code, cr_number,
receiver_account_id, receiver_name, receiver_account_id, receiver_name,
message, app, message, app,
sender_account_id, sender_account_username sender_account_id, sender_account_username
) )
return True return True
def cancel_overdue(request): def cancel_overdue(request):
date_submitted = datetime.now() date_submitted = datetime.now()
requestor = request.data['requested_by_user'] requestor = request.data['requested_by_user']
requestor = requests.get(f'{ACCOUNTS}{requestor}/') requestor = requests.get(f'{ACCOUNTS}{requestor}/')
requestor = requestor.json()['results'] requestor = requestor.json()['results']
cancel_date = date_submitted + timedelta(days=30) cancel_date = date_submitted + timedelta(days=30)
cancel_date = cancel_date.strftime('%Y-%m-%d 00:00:00.000') cancel_date = cancel_date.strftime('%Y-%m-%d 00:00:00.000')
request.data['date_submitted'] = date_submitted request.data['date_submitted'] = date_submitted
request.data['cancel_date'] = cancel_date request.data['cancel_date'] = cancel_date
email_content_cancel = { email_content_cancel = {
"sender_account_no": requestor['id_number'], "sender_account_no": requestor['id_number'],
"receiver_account_no": requestor['id_number'], "receiver_account_no": requestor['id_number'],
"email_code": "RMS-CRCANCELLED", "email_code": "RMS-CRCANCELLED",
"email_recipient": requestor['email'], "email_recipient": requestor['email'],
"app": "CMS", "app": "CMS",
"sent": "False", "sent": "False",
"name": requestor['name'], "name": requestor['name'],
"status": "Pending", "status": "Pending",
"auto_cancel_date": cancel_date, "auto_cancel_date": cancel_date,
"cr_number": request.data['requested_to_template_id'], "cr_number": request.data['requested_to_template_id'],
"cr_name": request.data['requested_to_template_name'], "cr_name": request.data['requested_to_template_name'],
"company_requestedto": request.data['requested_to_company'], "company_requestedto": request.data['requested_to_company'],
"department_requestedto": request.data['requested_to_department'], "department_requestedto": request.data['requested_to_department'],
"priority_level": request.data['requested_to_priority'], "priority_level": request.data['requested_to_priority'],
"url": "http://devweb.rms.oneberrysystem.com/login" "url": "http://devweb.rms.oneberrysystem.com/login"
} }
exist_cancel_template = models.CancelDateCR.objects.filter( exist_cancel_template = models.CancelDateCR.objects.filter(
cr_number=request.data['requested_to_template_id'] cr_number=request.data['requested_to_template_id']
) )
if exist_cancel_template: if exist_cancel_template:
exist_cancel_template.delete() exist_cancel_template.delete()
models.CancelDateCR.objects.create( models.CancelDateCR.objects.create(
cr_number=request.data['requested_to_template_id'], cr_number=request.data['requested_to_template_id'],
trigger_date=cancel_date, trigger_date=cancel_date,
email_content=email_content_cancel email_content=email_content_cancel
) )
requested_to_target_date = parser.parse( requested_to_target_date = parser.parse(
request.data['requested_to_target_date'] request.data['requested_to_target_date']
) )
email_content_cancel['email_code'] = "RMS-CROVERDUE" email_content_cancel['email_code'] = "RMS-CROVERDUE"
email_content_cancel['target_date'] = requested_to_target_date email_content_cancel['target_date'] = requested_to_target_date
overdue = requested_to_target_date + timedelta(days=30) overdue = requested_to_target_date + timedelta(days=30)
overdue = overdue.strftime('%Y-%m-%d 00:00:00.000') overdue = overdue.strftime('%Y-%m-%d 00:00:00.000')
models.TargetDateOverdue.objects.create( models.TargetDateOverdue.objects.create(
cr_number=form_code, cr_number=form_code,
trigger_date=overdue, trigger_date=overdue,
email_content=email_content_cancel email_content=email_content_cancel
) )
return True return True
def crhistory_save(action, entity, form_code, fromValue, toValue):
models.ChangeRequestHistory.objects.create(
action=action,
entity=entity,
form_code=form_code,
fromValue=fromValue,
toValue=toValue
)
return True
\ 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()),
) )
...@@ -22,19 +22,19 @@ def list_by_user(user_id_number): ...@@ -22,19 +22,19 @@ def list_by_user(user_id_number):
approver = models.ChangeRequestFormApprovers.objects.filter( approver = models.ChangeRequestFormApprovers.objects.filter(
Q(user=user_id_number) & Q(user=user_id_number) &
Q(deleted_at=None) Q(archived_at=None)
) )
approver = [data.form_code for data in approver] approver = [data.form_code for data in approver]
stake = models.ChangeRequestFormStakeHolders.objects.filter( stake = models.ChangeRequestFormStakeHolders.objects.filter(
Q(user=user_id_number) & Q(user=user_id_number) &
Q(deleted_at=None) Q(archived_at=None)
) )
stake = [data.form_code for data in stake] stake = [data.form_code for data in stake]
headers = models.ChangeRequestFormHeader.objects.filter( headers = models.ChangeRequestFormHeader.objects.filter(
deleted_at=None, archived_at=None,
requested_by_user=user_id_number requested_by_user=user_id_number
) )
headers = [data.form_code for data in headers] headers = [data.form_code for data in headers]
...@@ -52,7 +52,7 @@ def list_by_user(user_id_number): ...@@ -52,7 +52,7 @@ def list_by_user(user_id_number):
# priviledgedList = models.ChangeRequestFormHeader.objects.filter( # priviledgedList = models.ChangeRequestFormHeader.objects.filter(
# requested_to_department__in=crViews, # requested_to_department__in=crViews,
# deleted_at=None, # archived_at=None,
# ) # )
# priviledgedCrs = [data['form_code'] for data in priviledgedList] # priviledgedCrs = [data['form_code'] for data in priviledgedList]
...@@ -62,7 +62,7 @@ def list_by_user(user_id_number): ...@@ -62,7 +62,7 @@ def list_by_user(user_id_number):
return_queryset = models.ChangeRequestFormHeader.objects.filter( return_queryset = models.ChangeRequestFormHeader.objects.filter(
form_code__in=form_code, form_code__in=form_code,
deleted_at=None, archived_at=None,
) )
exclude = return_queryset.filter( exclude = return_queryset.filter(
status__iexact='Draft', status__iexact='Draft',
...@@ -179,28 +179,12 @@ def filter_overdue(base_queryset): ...@@ -179,28 +179,12 @@ 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: overdue.append(query.form_code)
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)
return_queryset = return_queryset.filter(
form_code__in=overdue
)
return_queryset return_queryset = return_queryset.filter(
form_code__in=overdue
)
except Exception as e: except Exception as e:
pass pass
...@@ -236,19 +220,25 @@ def filter_awaiting(base_queryset, ...@@ -236,19 +220,25 @@ def filter_awaiting(base_queryset,
try: try:
awaiting_included = [] awaiting_included = []
for query in return_queryset: for query in return_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()
if current_level[0]['user'] == user_id_number: first_user = models.ChangeRequestFormApprovers.objects.filter(
awaiting_included.append(query.form_code) code=first_level).values('user')
print(first_user.user)
# if x == user_id_number:
# 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),
),
]
# Generated by Django 2.2 on 2019-09-11 17:15
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0007_auto_20190911_1102'),
]
operations = [
migrations.AlterField(
model_name='changerequesthistory',
name='form_code',
field=models.CharField(blank=True, max_length=255, null=True),
),
]
# Generated by Django 2.2 on 2019-09-11 18:45
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('entities', '0008_auto_20190911_1715'),
]
operations = [
migrations.RenameField(
model_name='changerequestformapprovers',
old_name='deleted_at',
new_name='archived_at',
),
migrations.RenameField(
model_name='changerequestformattachments',
old_name='deleted_at',
new_name='archived_at',
),
migrations.RenameField(
model_name='changerequestformdetails',
old_name='deleted_at',
new_name='archived_at',
),
migrations.RenameField(
model_name='changerequestformheader',
old_name='deleted_at',
new_name='archived_at',
),
migrations.RenameField(
model_name='changerequestformstakeholders',
old_name='deleted_at',
new_name='archived_at',
),
migrations.RenameField(
model_name='changerequesttemplateapprovers',
old_name='deleted_at',
new_name='archived_at',
),
migrations.RenameField(
model_name='changerequesttemplateattachments',
old_name='deleted_at',
new_name='archived_at',
),
migrations.RenameField(
model_name='changerequesttemplatedetails',
old_name='deleted_at',
new_name='archived_at',
),
migrations.RenameField(
model_name='changerequesttemplateheader',
old_name='deleted_at',
new_name='archived_at',
),
migrations.RenameField(
model_name='changerequesttemplatestakeholders',
old_name='deleted_at',
new_name='archived_at',
),
]
# Generated by Django 2.2 on 2019-09-13 11:43
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('entities', '0009_auto_20190911_1845'),
]
operations = [
migrations.RemoveField(
model_name='changerequestformapprovers',
name='archived_at',
),
migrations.RemoveField(
model_name='changerequestformattachments',
name='archived_at',
),
migrations.RemoveField(
model_name='changerequestformdetails',
name='archived_at',
),
migrations.RemoveField(
model_name='changerequestformheader',
name='archived_at',
),
migrations.RemoveField(
model_name='changerequestformstakeholders',
name='archived_at',
),
]
...@@ -354,8 +354,7 @@ class BaseHeader(models.Model): ...@@ -354,8 +354,7 @@ 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,
blank=True, blank=True,
...@@ -374,10 +373,6 @@ class BaseHeader(models.Model): ...@@ -374,10 +373,6 @@ class BaseHeader(models.Model):
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
deleted_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
abstract = True abstract = True
...@@ -399,9 +394,6 @@ class BaseApprover(models.Model): ...@@ -399,9 +394,6 @@ class BaseApprover(models.Model):
created = models.DateTimeField( created = models.DateTimeField(
blank=True, blank=True,
null=True) null=True)
deleted_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
abstract = True abstract = True
...@@ -421,9 +413,6 @@ class BaseStakeholder(models.Model): ...@@ -421,9 +413,6 @@ class BaseStakeholder(models.Model):
created = models.DateTimeField( created = models.DateTimeField(
blank=True, blank=True,
null=True) null=True)
deleted_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
abstract = True abstract = True
...@@ -452,9 +441,6 @@ class BaseAttachment(models.Model): ...@@ -452,9 +441,6 @@ class BaseAttachment(models.Model):
created = models.DateTimeField( created = models.DateTimeField(
blank=True, blank=True,
null=True) null=True)
deleted_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
abstract = True abstract = True
...@@ -469,9 +455,6 @@ class BaseDetails(models.Model): ...@@ -469,9 +455,6 @@ class BaseDetails(models.Model):
created = models.DateTimeField( created = models.DateTimeField(
blank=True, blank=True,
null=True) null=True)
deleted_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
abstract = True abstract = True
...@@ -487,6 +470,10 @@ class ChangeRequestTemplateHeader(BaseHeader): ...@@ -487,6 +470,10 @@ class ChangeRequestTemplateHeader(BaseHeader):
template_no = models.CharField( template_no = models.CharField(
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,
...@@ -500,6 +487,10 @@ class ChangeRequestTemplateHeader(BaseHeader): ...@@ -500,6 +487,10 @@ class ChangeRequestTemplateHeader(BaseHeader):
to_field='code', to_field='code',
related_name='created_by_department') related_name='created_by_department')
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
db_table = 'change_request_template_headers' db_table = 'change_request_template_headers'
...@@ -515,7 +506,7 @@ class ChangeRequestTemplateHeader(BaseHeader): ...@@ -515,7 +506,7 @@ class ChangeRequestTemplateHeader(BaseHeader):
self.save() self.save()
def delete(self): def delete(self):
self.deleted_at = datetime.utcnow self.archived_at = datetime.utcnow
self.save() self.save()
...@@ -528,6 +519,9 @@ class ChangeRequestTemplateApprovers(BaseApprover): ...@@ -528,6 +519,9 @@ class ChangeRequestTemplateApprovers(BaseApprover):
on_delete=models.DO_NOTHING, on_delete=models.DO_NOTHING,
to_field='template_no', to_field='template_no',
related_name='tmp_approvers') related_name='tmp_approvers')
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
db_table = 'change_request_template_approvers' db_table = 'change_request_template_approvers'
...@@ -544,6 +538,10 @@ class ChangeRequestTemplateApprovers(BaseApprover): ...@@ -544,6 +538,10 @@ class ChangeRequestTemplateApprovers(BaseApprover):
self.created = datetime.now() self.created = datetime.now()
self.save() self.save()
def delete(self):
self.archived_at = datetime.utcnow
self.save()
class ChangeRequestTemplateStakeHolders(BaseStakeholder): class ChangeRequestTemplateStakeHolders(BaseStakeholder):
code = models.CharField( code = models.CharField(
unique=True, unique=True,
...@@ -553,6 +551,9 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder): ...@@ -553,6 +551,9 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder):
on_delete=models.DO_NOTHING, on_delete=models.DO_NOTHING,
to_field='template_no', to_field='template_no',
related_name='tmp_stakes') related_name='tmp_stakes')
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
db_table = 'change_request_template_stakeholders' db_table = 'change_request_template_stakeholders'
...@@ -568,6 +569,10 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder): ...@@ -568,6 +569,10 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder):
self.code = code self.code = code
self.created = datetime.now() self.created = datetime.now()
self.save() self.save()
def delete(self):
self.archived_at = datetime.utcnow
self.save()
class ChangeRequestTemplateAttachments(BaseAttachment): class ChangeRequestTemplateAttachments(BaseAttachment):
...@@ -579,6 +584,9 @@ class ChangeRequestTemplateAttachments(BaseAttachment): ...@@ -579,6 +584,9 @@ class ChangeRequestTemplateAttachments(BaseAttachment):
on_delete=models.DO_NOTHING, on_delete=models.DO_NOTHING,
to_field='template_no', to_field='template_no',
related_name='tmp_attachments') related_name='tmp_attachments')
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
db_table = 'change_request_template_attachments' db_table = 'change_request_template_attachments'
...@@ -594,6 +602,10 @@ class ChangeRequestTemplateAttachments(BaseAttachment): ...@@ -594,6 +602,10 @@ class ChangeRequestTemplateAttachments(BaseAttachment):
self.code = code self.code = code
self.created = datetime.now() self.created = datetime.now()
self.save() self.save()
def delete(self):
self.archived_at = datetime.utcnow
self.save()
class ChangeRequestTemplateDetails(BaseDetails): class ChangeRequestTemplateDetails(BaseDetails):
...@@ -605,6 +617,9 @@ class ChangeRequestTemplateDetails(BaseDetails): ...@@ -605,6 +617,9 @@ class ChangeRequestTemplateDetails(BaseDetails):
on_delete=models.DO_NOTHING, on_delete=models.DO_NOTHING,
to_field='template_no', to_field='template_no',
related_name='tmp_details') related_name='tmp_details')
archived_at = models.DateTimeField(
blank=True,
null=True)
class Meta: class Meta:
db_table = 'change_request_template_details' db_table = 'change_request_template_details'
...@@ -620,6 +635,10 @@ class ChangeRequestTemplateDetails(BaseDetails): ...@@ -620,6 +635,10 @@ class ChangeRequestTemplateDetails(BaseDetails):
self.code = code self.code = code
self.created = datetime.now() self.created = datetime.now()
self.save() self.save()
def delete(self):
self.archived_at = datetime.utcnow
self.save()
''' '''
***** *****
...@@ -666,6 +685,8 @@ class ChangeRequestFormHeader(BaseHeader): ...@@ -666,6 +685,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'
...@@ -840,7 +861,10 @@ class ChangeRequestHistory(AuditClass): ...@@ -840,7 +861,10 @@ class ChangeRequestHistory(AuditClass):
(tag.value, tag.value) for tag in enums.CREntitiesEnum], (tag.value, tag.value) for tag in enums.CREntitiesEnum],
default=enums.CREntitiesEnum.CR_FRM_HEADER.value, default=enums.CREntitiesEnum.CR_FRM_HEADER.value,
max_length=50) max_length=50)
form_code = models.IntegerField() form_code = models.CharField(
max_length=255,
blank=True,
null=True)
fromValue = models.TextField(blank=True, null=True) fromValue = models.TextField(blank=True, null=True)
toValue = models.TextField(blank=True, null=True) toValue = models.TextField(blank=True, null=True)
......
{
"info": {
"_postman_id": "8f54e04b-ae4d-49cc-a560-1e7f94f5313d",
"name": "RMSv2",
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
},
"item": [
{
"name": "Access Token",
"item": [
{
"name": "current-user",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "e53b51ddf459852812a56435aaea934d107cde82",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/auth/current-user/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"auth",
"current-user",
""
]
}
},
"response": []
},
{
"name": "Login",
"request": {
"auth": {
"type": "noauth"
},
"method": "POST",
"header": [
{
"key": "Authorization",
"value": "JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6ImFkbWluIiwiZXhwIjoxNTU2OTM5MDI4LCJlbWFpbCI6IiJ9.eAA6vSTOhrto5yfy3IQsCdR7iaZxfApNcvdJsFdFmsc",
"type": "text",
"disabled": true
}
],
"body": {
"mode": "formdata",
"formdata": [
{
"key": "username",
"value": "superuser",
"type": "text"
},
{
"key": "password",
"value": "password123",
"type": "text"
}
]
},
"url": {
"raw": "http://localhost:8000/api/v1/auth/login/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"auth",
"login",
""
]
}
},
"response": []
}
]
},
{
"name": "Management",
"item": [
{
"name": "Application Management",
"item": [
{
"name": "List of Applications",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/applications/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"applications",
""
]
}
},
"response": []
},
{
"name": "View Application",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/applications/1/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"applications",
"1",
""
]
}
},
"response": []
},
{
"name": "Create Application",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"Assets Management System\",\n\t\"app_code\": \"AMS\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/applications/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"applications",
""
]
}
},
"response": []
},
{
"name": "Edit Application",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "4bf6b1bed4066b3712bd3ca6d6e0466c14767cf0",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"rms2\",\n\t\"app_code\": \"rms\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/applications/1/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"applications",
"1",
""
]
}
},
"response": []
},
{
"name": "Delete Application",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"rms2\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/applications/3/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"applications",
"3",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "Companies Management",
"item": [
{
"name": "List of Companies",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/companies/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"companies",
""
]
}
},
"response": []
},
{
"name": "View Company",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/companies/1/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"companies",
"1",
""
]
}
},
"response": []
},
{
"name": "Create Company",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"Oneberry\",\n\t\"contact_details\": \"2152509\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/companies/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"companies",
""
]
}
},
"response": []
},
{
"name": "Edit Company",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"TIR2\",\n\t\"contact_details\": \"2152509\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/companies/4/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"companies",
"4",
""
]
}
},
"response": []
},
{
"name": "Delete Company",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"name\": \"TIR2\",\n\t\"contact_details\": \"2152509\"\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/companies/4/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"companies",
"4",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "Department Management",
"item": [
{
"name": "List of Department",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/departments/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"departments",
""
]
}
},
"response": []
},
{
"name": "View Department",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/departments/1/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"departments",
"1",
""
]
}
},
"response": []
},
{
"name": "Create Department",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Super User\",\n \"company\": 2\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/departments/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"departments",
""
]
}
},
"response": []
},
{
"name": "Edit Department",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Business Developments\",\n \"company\": 2\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/departments/2/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"departments",
"2",
""
]
}
},
"response": []
},
{
"name": "Delete Department",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Business Developments\",\n \"company\": 2\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/departments/2/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"departments",
"2",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "Module Management",
"item": [
{
"name": "List of Module",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/modules/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"modules",
""
]
}
},
"response": []
},
{
"name": "View Module",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/modules/5/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"modules",
"5",
""
]
}
},
"response": []
},
{
"name": "Create Module",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "ee0a1398b999f2ab1953447e2c733734d0cb0413",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"User Management\",\n \"parent\": 0,\n \"sort_id\": 6,\n \"application\": 1\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/modules/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"modules",
""
]
}
},
"response": []
},
{
"name": "Edit Module",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Assets NVM\",\n \"parent\": 10,\n \"sort_id\": 1,\n \"application\": 2\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/modules/12/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"modules",
"12",
""
]
}
},
"response": []
},
{
"name": "Edit Module Copy",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "46fcda76895239b0fdfa998165780fd451fe049d",
"type": "string"
}
]
},
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"name\": \"Assets NVM\",\n \"parent\": 10,\n \"sort_id\": 1,\n \"application\": 2\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/modules/12/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"modules",
"12",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "User",
"item": [
{
"name": "List of Users",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "7bb27437597c6598d7cffefa7953d28983af6644",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/management/users/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"users",
""
]
}
},
"response": []
},
{
"name": "View Users",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "4bf6b1bed4066b3712bd3ca6d6e0466c14767cf0",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/users/3/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"users",
"3",
""
]
}
},
"response": []
},
{
"name": "Create User",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "7bb27437597c6598d7cffefa7953d28983af6644",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n\t\"application\":[1,3],\r\n\t\"department\": 1,\r\n\t\"user_type\": \"OUA\",\r\n\t\"name\": \"Kath\",\r\n\t\"username\": \"kath\",\r\n\t\"doa\":\"\",\r\n\t\"default_app\": \"RMS\",\r\n\t\"contact_no\": \"1312313\",\r\n\t\"email\": \"test@gmail.com\"\r\n}\r\n"
},
"url": {
"raw": "http://localhost:8000/api/v1/management/users/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"users",
""
]
}
},
"response": []
},
{
"name": "Edit User",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "4bf6b1bed4066b3712bd3ca6d6e0466c14767cf0",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n\t\"application\":[1,3],\r\n\t\"department\": 1,\r\n\t\"user_type\": \"OUA\",\r\n\t\"name\": \"Ritas\",\r\n\t\"username\": \"OBRITA\",\r\n\t\"password\": \"password123\",\r\n\t\"doa\":\"\",\r\n\t\"default_app\": \"RMS\",\r\n\t\"contact_no\": \"1312313\",\r\n\t\"email\": \"test@gmail.com\"\r\n}\r\n"
},
"url": {
"raw": "http://localhost:8000/api/v1/users/3/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"users",
"3",
""
]
}
},
"response": []
},
{
"name": "Change Password",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "4bf6b1bed4066b3712bd3ca6d6e0466c14767cf0",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n\t\"application\":[1,3],\r\n\t\"department\": 1,\r\n\t\"user_type\": \"OUA\",\r\n\t\"name\": \"Ritas\",\r\n\t\"username\": \"OBRITA\",\r\n\t\"password\": \"password123\",\r\n\t\"doa\":\"\",\r\n\t\"default_app\": \"RMS\",\r\n\t\"contact_no\": \"1312313\",\r\n\t\"email\": \"test@gmail.com\"\r\n}\r\n"
},
"url": {
"raw": "http://localhost:8000/api/v1/users/3/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"users",
"3",
""
]
}
},
"response": []
},
{
"name": "Delete User",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "4bf6b1bed4066b3712bd3ca6d6e0466c14767cf0",
"type": "string"
}
]
},
"method": "DELETE",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "http://localhost:8000/api/v1/users/3/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"users",
"3",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
}
]
},
{
"name": "Change Request",
"item": [
{
"name": "CR Templates",
"item": [
{
"name": "CR Template Header",
"item": [
{
"name": "Template Header Post",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "7bb27437597c6598d7cffefa7953d28983af6644",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n\t\"requested_to_template_name\": \"Sample Template\",\r\n\t\"requested_to_template_id\": \"JTC\",\r\n\t\"requested_to_objective\": \"Sample Objective\",\r\n\t\"requested_to_target_date\": \"10\",\r\n\t\"requested_to_priority\": \"High\",\r\n\t\"description\": \"sample description\",\r\n\t\"created_by_department\": \"Super User\",\r\n\t\"created_by_user\": \"USER-20190913-0000006\",\r\n\t\"requested_to_company\": \"COMPANY-20190909-0000002\",\r\n\t\"requested_to_department\": \"DEPARTMENT-20190909-0000002\",\r\n\t\"requested_to_user\": \"USER-20190913-0000007\",\r\n\t\r\n\t\r\n\t\"tmp_approvers\": [{\r\n\t\t\t\"level\": \"1\",\r\n\t\t\t\"delegation\": \"Approver\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"level\": \"2\",\r\n\t\t\t\"delegation\": \"Approver\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\"\r\n\t\t}\r\n\t],\r\n\t\r\n\t\"tmp_stakes\": [{\r\n\t\t\t\"delegation\": \"Mandatory Approver\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"delegation\": \"Stake Approver\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\"\r\n\t\t}\r\n\t],\r\n\t\r\n\t\"tmp_attachments\": [{\r\n\t\t\t\"attachment_type\": \"Hello\",\r\n\t\t\t\"attachment_name\": \"heyu\",\r\n\t\t\t\"file_name\": \"Sample\",\r\n\t\t\t\"description\": \"Sameple Desc\",\r\n\t\t\t\"uploaded_by\": \"USER-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"attachment_type\": \"Hello\",\r\n\t\t\t\"attachment_name\": \"heyu\",\r\n\t\t\t\"file_name\": \"Sample\",\r\n\t\t\t\"description\": \"Sameple Desc\",\r\n\t\t\t\"uploaded_by\": \"USER-20190911-0000005\"\r\n\t\t}\r\n\t],\r\n\t\r\n\t\"tmp_details\": [{\r\n\t\t\t\"field_idx\": \"Hello\",\r\n\t\t\t\"field_ref\": \"heyu\",\r\n\t\t\t\"field_val\": \"Sample\",\r\n\t\t\t\"field_props\": \"Sameple Desc\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"field_idx\": \"Hello\",\r\n\t\t\t\"field_ref\": \"heyu\",\r\n\t\t\t\"field_val\": \"Sample\",\r\n\t\t\t\"field_props\": \"Sameple Desc\"\r\n\t\t}\r\n\t]\r\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-post/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-post",
""
]
}
},
"response": []
},
{
"name": "List of Templates",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "7bb27437597c6598d7cffefa7953d28983af6644",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template",
""
]
}
},
"response": []
},
{
"name": "View Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template/TMP-20190911-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template",
"TMP-20190911-0000001",
""
]
}
},
"response": []
},
{
"name": "Edit Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n \"template_no\": \"TMP-20190911-0000001\",\r\n \"requested_to_template_name\": \"Sample Template\",\r\n \"requested_to_objective\": \"hello objective\",\r\n \"requested_to_target_date\": \"2019-09-03T13:59:29.694560\",\r\n \"requested_to_priority\": \"High\",\r\n \"description\": \"sample description\",\r\n \"archived_at\": \"2019-09-11T18:59:09.296883\",\r\n \"requested_to_template_id\": \"temp\",\r\n \"requested_to_company\": \"COMPANY-20190909-0000002\",\r\n \"requested_to_department\": \"DEPARTMENT-20190909-0000002\",\r\n \"requested_to_user\": \"USER-20190909-0000005\",\r\n \"created_by_user\": \"USER-20190909-0000005\",\r\n \"created_by_department\": \"admin\",\r\n \r\n \"tmp_approvers\": [\r\n {\r\n \"id\": 1,\r\n \"level\": \"1\",\r\n \"delegation\": \"Approver\",\r\n \"created\": \"2019-09-11T18:59:09.509901\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPAPR-20190911-0000001\",\r\n \"user\": \"USER-20190909-0000005\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n },\r\n {\r\n \"id\": 2,\r\n \"level\": \"2\",\r\n \"delegation\": \"Approver\",\r\n \"created\": \"2019-09-11T18:59:09.607909\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPAPR-20190911-0000002\",\r\n \"user\": \"USER-20190909-0000005\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n }\r\n ],\r\n \"tmp_stakes\": [\r\n {\r\n \"id\": 1,\r\n \"delegation\": \"Mandatory Approver\",\r\n \"created\": \"2019-09-11T18:59:09.618924\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPSTK-20190911-0000001\",\r\n \"user\": \"USER-20190909-0000005\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n },\r\n {\r\n \"id\": 2,\r\n \"delegation\": \"Stake Approver\",\r\n \"created\": \"2019-09-11T18:59:09.619886\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPSTK-20190911-0000002\",\r\n \"user\": \"USER-20190909-0000005\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n }\r\n ],\r\n \"tmp_attachments\": [\r\n {\r\n \"id\": 1,\r\n \"attachment_type\": \"Hello\",\r\n \"attachment_name\": \"heyu\",\r\n \"file_name\": \"Sample\",\r\n \"description\": \"Sameple Desc\",\r\n \"file_upload\": null,\r\n \"created\": \"2019-09-11T18:59:09.631923\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPATCH-20190911-0000001\",\r\n \"uploaded_by\": \"USER-20190909-0000005\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n },\r\n {\r\n \"id\": 2,\r\n \"attachment_type\": \"Hello\",\r\n \"attachment_name\": \"heyu\",\r\n \"file_name\": \"Sample\",\r\n \"description\": \"Sameple Desc\",\r\n \"file_upload\": null,\r\n \"created\": \"2019-09-11T18:59:09.674881\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPATCH-20190911-0000002\",\r\n \"uploaded_by\": \"USER-20190909-0000005\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n }\r\n ],\r\n \"tmp_details\": [\r\n {\r\n \"id\": 1,\r\n \"field_idx\": \"Hello\",\r\n \"field_ref\": \"heyu\",\r\n \"field_val\": \"Sample\",\r\n \"field_props\": \"Sameple Desc\",\r\n \"created\": \"2019-09-11T18:59:09.684922\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPDETAIL-20190911-0000001\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n },\r\n {\r\n \"id\": 2,\r\n \"field_idx\": \"Hello\",\r\n \"field_ref\": \"heyu\",\r\n \"field_val\": \"Sample\",\r\n \"field_props\": \"Sameple Desc\",\r\n \"created\": \"2019-09-11T18:59:09.685887\",\r\n \"archived_at\": null,\r\n \"code\": \"TMPDETAIL-20190911-0000002\",\r\n \"template_no\": \"TMP-20190911-0000001\"\r\n }\r\n ]\r\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template/TMP-20190911-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template",
"TMP-20190911-0000001",
""
]
}
},
"response": []
},
{
"name": "Archive Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "PATCH",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template/archived/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template",
"archived",
""
]
}
},
"response": []
},
{
"name": "Retrieve Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "PATCH",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template/TMP-20190909-0000002/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template",
"TMP-20190909-0000002",
""
]
}
},
"response": []
},
{
"name": "Delete Template",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "9a1e3cb331a5191193365413058dcec1ad8fb42a",
"type": "string"
}
]
},
"method": "DELETE",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template/TMP-20190909-0000002/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template",
"TMP-20190909-0000002",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Template Approver",
"item": [
{
"name": "List of Approvers",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-approvers/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-approvers",
""
]
}
},
"response": []
},
{
"name": "View Approver",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-approvers/TMPAPR-20190911-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-approvers",
"TMPAPR-20190911-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Template Stakeholder",
"item": [
{
"name": "List of Stakeholders",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-stakeholders/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-stakeholders",
""
]
}
},
"response": []
},
{
"name": "View Stakeholder",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-stakeholders/TMPSTK-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-stakeholders",
"TMPSTK-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Template Attachment",
"item": [
{
"name": "List of Attachments",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-attachments/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-attachments",
""
]
}
},
"response": []
},
{
"name": "View Attachment",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-attachments/TMPATCH-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-attachments",
"TMPATCH-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Template Detail",
"item": [
{
"name": "List of Details",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-details/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-details",
""
]
}
},
"response": []
},
{
"name": "View Detail",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/template-details/TMPDETAIL-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"template-details",
"TMPDETAIL-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Forms",
"item": [
{
"name": "CR Form Header",
"item": [
{
"name": "Create Form Header",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n\t\"requested_to_template_name\": \"Sample Template\",\r\n\t\"requested_to_template_id\": \"gg\",\r\n\t\"requested_to_objective\": \"hello objective\",\r\n\t\"requested_to_target_date\": \"2019-09-03 13:59:29.694560\",\r\n\t\"requested_to_priority\": \"High\",\r\n\t\"description\": \"sample description\",\r\n\t\"status\": \"Pending\",\r\n\t\"company_desc\": \"Oneberry\",\r\n\t\"department_desc\": \"Oneberry Superuser\",\r\n\t\"requested_desc\": \"Super User\",\r\n\t\"old_form_code\": \"\",\r\n\t\"requested_by_department\": \"admin\",\r\n\t\"requested_by_user\": \"USER-20190911-0000005\",\r\n\t\"requested_to_company\": \"COMPANY-20190909-0000002\",\r\n\t\"requested_to_department\": \"DEPARTMENT-20190909-0000002\",\r\n\t\"requested_to_user\": \"USER-20190911-0000005\",\r\n\t\"template_no\": \"TMP-20190911-0000003\",\r\n\t\r\n\t\"frm_approvers\": [{\r\n\t\t\t\"level\": \"1\",\r\n\t\t\t\"delegation\": \"Approver\",\r\n\t\t\t\"remarks\": \"Approver\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\",\r\n\t\t\t\"action\": \"Approved\",\r\n\t\t\t\"date_sent\": \"2019-09-03 13:59:29.694560\",\r\n\t\t\t\"tmp_approver\": \"TMPAPR-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"level\": \"2\",\r\n\t\t\t\"delegation\": \"Approver\",\r\n\t\t\t\"remarks\": \"Approver\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\",\r\n\t\t\t\"action\": \"Approved\",\r\n\t\t\t\"date_sent\": \"2019-09-03 13:59:29.694560\",\r\n\t\t\t\"tmp_approver\": \"TMPAPR-20190911-0000006\"\r\n\t\t}\r\n\t],\r\n\t\r\n\t\"frm_stakes\": [{\r\n\t\t\t\"date_added\": \"2019-09-03 13:59:29.694560\",\r\n\t\t\t\"delegation\": \"Mandatory Stakeholder\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\",\r\n\t\t\t\"tmp_stake\": \"TMPSTK-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"date_added\": \"2019-09-03 13:59:29.694560\",\r\n\t\t\t\"delegation\": \"Mandatory Stakeholder\",\r\n\t\t\t\"user\": \"USER-20190911-0000005\",\r\n\t\t\t\"tmp_stake\": \"TMPSTK-20190911-0000006\"\r\n\t\t}\r\n\t],\r\n\t\r\n\t\"frm_attachments\": [{\r\n\t\t\t\"attachment_type\": \"Mandatory Attache\",\r\n\t\t\t\"attachment_name\": \"Mandatory Stakeholder\",\r\n\t\t\t\"file_name\": \"sss\",\r\n\t\t\t\"description\": \"Sample Desc 1\",\r\n\t\t\t\"uploaded_by\": \"USER-20190911-0000005\",\r\n\t\t\t\"tmp_attach\": \"TMPATCH-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"attachment_type\": \"Mandatory Attache 2\",\r\n\t\t\t\"attachment_name\": \"Mandatory Stakeholder\",\r\n\t\t\t\"file_name\": \"Sample Desc 2\",\r\n\t\t\t\"description\": \"Sample Desc\",\r\n\t\t\t\"uploaded_by\": \"USER-20190911-0000005\",\r\n\t\t\t\"tmp_attach\": \"TMPATCH-20190911-0000006\"\r\n\t\t}\r\n\t],\r\n\t\r\n\t\"frm_details\": [{\r\n\t\t\t\"field_idx\": \"Hello\",\r\n\t\t\t\"field_ref\": \"heyu\",\r\n\t\t\t\"field_val\": \"Sample\",\r\n\t\t\t\"field_props\": \"Sameple Desc\",\r\n\t\t\t\"tmp_detail\": \"TMPDETAIL-20190911-0000005\"\r\n\t\t},\r\n\t\t{\r\n\t\t\t\"field_idx\": \"Hello\",\r\n\t\t\t\"field_ref\": \"heyu\",\r\n\t\t\t\"field_val\": \"Sample\",\r\n\t\t\t\"field_props\": \"Sameple Desc\",\r\n\t\t\t\"tmp_detail\": \"TMPDETAIL-20190911-0000006\"\r\n\t\t}\r\n\t]\r\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-post/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-post",
""
]
}
},
"response": []
},
{
"name": "List of Forms",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "f19b85056e3e3e7c095239f6701cb2ef4f7eeb09",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form",
""
]
}
},
"response": []
},
{
"name": "View Form",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "defb141318b540c9df8698150a68b59af14cca20",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form/FRM-20190912-0000002/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form",
"FRM-20190912-0000002",
""
]
}
},
"response": []
},
{
"name": "Edit Form",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "PUT",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n \"requested_to_template_name\": \"Sample Templates\",\r\n \"requested_to_template_id\": \"Samp\",\r\n \"requested_to_objective\": \"hello objective\",\r\n \"requested_to_target_date\": \"2019-09-03T13:59:29.694560\",\r\n \"requested_to_priority\": \"High\",\r\n \"description\": \"sample description\",\r\n \"form_code\": \"FRM-20190909-0000006\",\r\n \"cancel_date\": null,\r\n \"status\": \"Pending\",\r\n \"company_desc\": \"Oneberry\",\r\n \"department_desc\": \"Oneberry Superuser\",\r\n \"requested_desc\": \"Super User\",\r\n \"old_form_code\": \"\",\r\n \"requested_to_company\": \"COMPANY-20190909-0000002\",\r\n \"requested_to_department\": \"DEPARTMENT-20190909-0000002\",\r\n \"requested_to_user\": \"USER-20190909-0000005\",\r\n \"requested_by_user\": \"USER-20190909-0000005\",\r\n \"requested_by_department\": \"admin\",\r\n \"template_no\": \"TMP-20190909-0000001\",\r\n \"action\": \"No\"\r\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form/FRM-20190909-0000006/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form",
"FRM-20190909-0000006",
""
]
}
},
"response": []
},
{
"name": "Delete Form",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "DELETE",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form/FRM-20190909-0000006/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form",
"FRM-20190909-0000006",
""
]
}
},
"response": []
},
{
"name": "Re Route for Approval",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "67f8d147a33e90055f19a47bc60ad559e4b556e7",
"type": "string"
}
]
},
"method": "PATCH",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form/FRM-20190912-0000002/re_route/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form",
"FRM-20190912-0000002",
"re_route",
""
]
}
},
"response": []
},
{
"name": "Resubmit",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "22259ad4dd11ee87dd0735366694979dc419228f",
"type": "string"
}
]
},
"method": "PATCH",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form/FRM-20190912-0000002/re_submit/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form",
"FRM-20190912-0000002",
"re_submit",
""
]
}
},
"response": []
},
{
"name": "CR Action",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "6fb3fbceeab432bbe8102481c2fdf11db55dbf72",
"type": "string"
}
]
},
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n \"id\": 1,\r\n \"level\": \"1\",\r\n \"delegation\": \"Approver\",\r\n \"created\": \"2019-09-10T17:21:10.794834\",\r\n \"deleted_at\": null,\r\n \"code\": \"FRMAPR-20190910-0000001\",\r\n \"remarks\": \"Approver\",\r\n \"action\": \"Approved\",\r\n \"date_sent\": \"2019-09-03T13:59:29.694560\",\r\n \"user\": \"USER-20190909-0000005\",\r\n \"form_code\": \"FRM-20190910-0000001\",\r\n \"tmp_approver\": \"TMPAPR-20190910-0000001\"\r\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-approvers/approved/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-approvers",
"approved",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Form Approver",
"item": [
{
"name": "List of Approvers",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "6fb3fbceeab432bbe8102481c2fdf11db55dbf72",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-approvers/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-approvers",
""
]
}
},
"response": []
},
{
"name": "View Approver",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-approvers/TMPAPR-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-approvers",
"TMPAPR-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Form Stakeholder",
"item": [
{
"name": "List of Stakeholders",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-stakeholders/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-stakeholders",
""
]
}
},
"response": []
},
{
"name": "View Stakeholder",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-stakeholders/TMPSTK-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-stakeholders",
"TMPSTK-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Form Attachment",
"item": [
{
"name": "List of Attachments",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-attachments/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-attachments",
""
]
}
},
"response": []
},
{
"name": "View Attachment",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"value": "application/json",
"type": "text"
}
],
"body": {
"mode": "raw",
"raw": "{\r\n \"attachment_type\": \"Mandatory Attached\",\r\n \"attachment_name\": \"Mandatory Stakeholder\",\r\n \"file_name\": \"USER-20190909-0000005\",\r\n \"description\": \"Sample Desc 1\",\r\n \"file_upload\": null,\r\n \"code\": \"FRMATCH-20190909-0000001\",\r\n \"uploaded_by\": \"USER-20190909-0000005\",\r\n \"form_code\": \"FRM-20190909-0000005\",\r\n \"tmp_attach\": \"TMPATCH-20190909-0000001\"\r\n}"
},
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-attachments/FRMATCH-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-attachments",
"FRMATCH-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
},
{
"name": "CR Form Detail",
"item": [
{
"name": "List of Details",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-details/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-details",
""
]
}
},
"response": []
},
{
"name": "View Detail",
"request": {
"method": "GET",
"header": [],
"url": {
"raw": "http://localhost:8000/api/v1/change-request/form-details/FRMDETAIL-20190909-0000001/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"change-request",
"form-details",
"FRMDETAIL-20190909-0000001",
""
]
}
},
"response": []
}
],
"_postman_isSubFolder": true
}
],
"_postman_isSubFolder": true
}
]
},
{
"name": "Notifications",
"item": [
{
"name": "List Notifications by account_no",
"protocolProfileBehavior": {
"disableBodyPruning": true
},
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "951574546a6d45af34dfef101840bba27f1ab574",
"type": "string"
}
]
},
"method": "GET",
"header": [],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "http://localhost:8000/api/v1/management/notifications/",
"protocol": "http",
"host": [
"localhost"
],
"port": "8000",
"path": [
"api",
"v1",
"management",
"notifications",
""
]
}
},
"response": []
},
{
"name": "Create Notification",
"request": {
"auth": {
"type": "bearer",
"bearer": [
{
"key": "token",
"value": "37d5c7c08f82cc0f8a3a73634d3b6a78ead3da37",
"type": "string"
}
]
},
"method": "POST",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n \"form_header_code\": \"FRM-20190902-000001\",\n \"notif_type\": \"ACTIVITY\",\n \"message\": \"Oneberry CCTV Replacement Request due in 5 days\",\n \"is_read\": false,\n \"app\": \"APP-20190903-0000002\",\n \"account_no\": \"USER-20190904-0000002\",\n \"sender_account_no\": \"USER-20190904-0000002\"\n}"
},
"url": {
"raw": "http://devapi.rmsv2.oneberrysystem.com:7020/api/v1/notifications/",
"protocol": "http",
"host": [
"devapi",
"rmsv2",
"oneberrysystem",
"com"
],
"port": "7020",
"path": [
"api",
"v1",
"notifications",
""
]
}
},
"response": []
},
{
"name": "Update Read Status by ids",
"request": {
"auth": {
"type": "basic",
"basic": [
{
"key": "password",
"value": "password123",
"type": "string"
},
{
"key": "username",
"value": "admin",
"type": "string"
}
]
},
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": "{\n\t\"ids\": [8]\n}"
},
"url": {
"raw": "http://devapi.rmsv2.oneberrysystem.com/api/v1/notifications/USER-20190903-0000002/seen/",
"protocol": "http",
"host": [
"devapi",
"rmsv2",
"oneberrysystem",
"com"
],
"path": [
"api",
"v1",
"notifications",
"USER-20190903-0000002",
"seen",
""
]
}
},
"response": []
},
{
"name": "Update Read Status by account_no",
"request": {
"auth": {
"type": "basic",
"basic": [
{
"key": "password",
"value": "password123",
"type": "string"
},
{
"key": "username",
"value": "admin",
"type": "string"
}
]
},
"method": "PATCH",
"header": [
{
"key": "Content-Type",
"name": "Content-Type",
"type": "text",
"value": "application/json"
}
],
"body": {
"mode": "raw",
"raw": ""
},
"url": {
"raw": "http://devapi.rmsv2.oneberrysystem.com/api/v1/notifications/USER-20190903-0000002/seenall/",
"protocol": "http",
"host": [
"devapi",
"rmsv2",
"oneberrysystem",
"com"
],
"path": [
"api",
"v1",
"notifications",
"USER-20190903-0000002",
"seenall",
""
]
}
},
"response": []
}
]
}
]
}
\ No newline at end of file
...@@ -19,6 +19,7 @@ Django==2.2 ...@@ -19,6 +19,7 @@ Django==2.2
django-cors-headers==2.5.2 django-cors-headers==2.5.2
django-filter==2.1.0 django-filter==2.1.0
djangorestframework==3.9.2 djangorestframework==3.9.2
drf-writable-nested==0.5.1
gevent==1.4.0 gevent==1.4.0
greenlet==0.4.15 greenlet==0.4.15
hiredis==1.0.0 hiredis==1.0.0
......
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