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( class ChangeRequestFormApproversSerializer(
serializers.ModelSerializer serializers.ModelSerializer
): ):
class Meta: # def to_representation(self, instance):
model = models.ChangeRequestTemplateHeader # ret = super().to_representation(instance)
fields = '__all__' # try:
read_only_fields = ['created', 'deleted_at', 'template_no'] # user = instance.user
# user_details = get_account_details(user)
# name = user_details['name']
# group = user_details['groups'][0]['name']
# company = user_details['groups'][0]['company__name']
# ret['name'] = name
# ret['department'] = group
# ret['company'] = company
# return ret
# except Exception as e:
# ret['name'] = "none"
# ret['department'] = "none"
# ret['company'] = "none"
# return ret
class ChangeRequestTemplateApproversSerializer(
serializers.ModelSerializer
):
class Meta: class Meta:
model = models.ChangeRequestTemplateApprovers model = models.ChangeRequestFormApprovers
fields = '__all__' fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code'] read_only_fields = ['created', 'archived_at', 'code']
class ChangeRequestTemplateStakeHoldersSerializer( class ChangeRequestFormStakeHoldersSerializer(
serializers.ModelSerializer serializers.ModelSerializer
): ):
class Meta: class Meta:
model = models.ChangeRequestTemplateStakeHolders model = models.ChangeRequestFormStakeHolders
fields = '__all__' fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code'] read_only_fields = ['created', 'archived_at', 'code']
class ChangeRequestTemplateAttachmentsSerializer( class ChangeRequestFormAttachmentsSerializer(
serializers.ModelSerializer serializers.ModelSerializer
): ):
class Meta: class Meta:
model = models.ChangeRequestTemplateAttachments model = models.ChangeRequestFormAttachments
fields = '__all__' fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code'] read_only_fields = ['created', 'archived_at', 'code']
class ChangeRequestTemplateDetailsSerializer( class ChangeRequestFormDetailsSerializer(
serializers.ModelSerializer serializers.ModelSerializer
): ):
class Meta: class Meta:
model = models.ChangeRequestTemplateDetails model = models.ChangeRequestFormDetails
fields = '__all__' fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code'] read_only_fields = ['created', 'archived_at', 'code']
class ChangeRequestFormHeaderSerializer( class ChangeRequestFormHeaderSerializer(
serializers.ModelSerializer WritableNestedModelSerializer
): ):
frm_approvers = ChangeRequestFormApproversSerializer(
many=True, required=False)
frm_stakes = ChangeRequestFormStakeHoldersSerializer(
many=True, required=False)
frm_attachments = ChangeRequestFormAttachmentsSerializer(
many=True, required=False)
frm_details = ChangeRequestFormDetailsSerializer(
many=True, required=False)
def to_representation(self, instance): def to_representation(self, instance):
ret = super().to_representation(instance) ret = super().to_representation(instance)
try: try:
# id_number = self.context.get('request').META.get('user') # id_number = self.context.get('request').META.get('user')
user = self.context['request'].user
print(user)
id_number = "USER-20190909-0000005" # id_number = "USER-20190909-0000005"
current_level = models.ChangeRequestFormApprovers.objects.filter( current_level = models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=ret['form_code']) & Q(form_code=ret['form_code']) &
Q(deleted_at=None) & Q(archived_at=None) &
(Q(action='') | Q(action=None)) (Q(action='') | Q(action=None))
).order_by('level') ).order_by('level')
...@@ -83,62 +107,15 @@ class ChangeRequestFormHeaderSerializer( ...@@ -83,62 +107,15 @@ class ChangeRequestFormHeaderSerializer(
class Meta: class Meta:
model = models.ChangeRequestFormHeader model = models.ChangeRequestFormHeader
fields = '__all__' # fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'form_code'] fields = ('form_code', 'requested_to_template_name', 'requested_to_objective',
'requested_to_target_date', 'requested_to_priority',
'description', 'created', 'cancel_date', 'status',
class ChangeRequestFormApproversSerializer( 'company_desc', 'department_desc', 'requested_desc',
serializers.ModelSerializer 'requested_to_template_id', 'requested_to_company',
): 'requested_to_department', 'requested_to_user',
# def to_representation(self, instance): 'requested_by_user', 'requested_by_department',
# ret = super().to_representation(instance) 'template_no', 'frm_approvers', 'frm_stakes',
# try: 'frm_attachments', 'frm_details')
# user = instance.user
read_only_fields = ['created', 'archived_at', 'form_code']
# user_details = get_account_details(user)
# name = user_details['name']
# group = user_details['groups'][0]['name']
# company = user_details['groups'][0]['company__name']
# ret['name'] = name
# ret['department'] = group
# ret['company'] = company
# return ret
# except Exception as e:
# ret['name'] = "none"
# ret['department'] = "none"
# ret['company'] = "none"
# return ret
class Meta:
model = models.ChangeRequestFormApprovers
fields = '__all__'
read_only_fields = ['created', 'deleted_at', 'code']
class ChangeRequestFormStakeHoldersSerializer(
serializers.ModelSerializer
):
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']
...@@ -2,7 +2,7 @@ from django.shortcuts import render ...@@ -2,7 +2,7 @@ from django.shortcuts import render
from rest_framework import viewsets as meviewsets from rest_framework import viewsets as meviewsets
from rest_framework.views import APIView from rest_framework.views import APIView
from app.applicationlayer.management.changerequest import serializers from app.applicationlayer.cms.form import serializers
from app.entities import models from app.entities import models
from app.applicationlayer import paginators from app.applicationlayer import paginators
...@@ -22,6 +22,9 @@ from rest_framework.exceptions import ValidationError ...@@ -22,6 +22,9 @@ 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
from django.forms.models import model_to_dict
APPROVER_MESSAGE = settings.APPROVER_MESSAGE APPROVER_MESSAGE = settings.APPROVER_MESSAGE
...@@ -34,256 +37,6 @@ VENDOR_ACCEPTANCE_MESSAGE = settings.VENDOR_ACCEPTANCE_MESSAGE ...@@ -34,256 +37,6 @@ VENDOR_ACCEPTANCE_MESSAGE = settings.VENDOR_ACCEPTANCE_MESSAGE
VENDOR_REJECT_MESSAGE = settings.VENDOR_REJECT_MESSAGE VENDOR_REJECT_MESSAGE = settings.VENDOR_REJECT_MESSAGE
class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateHeader.objects.all()
lookup_field = 'template_no'
serializer_class = serializers.ChangeRequestTemplatesSerializer
pagination_class = paginators.SimplePageNumberPagination
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(
deleted_at=None
)
self.queryset = self.queryset.order_by('-created')
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplatesViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(
deleted_at=None,
template_no=str(self.kwargs.get('template_no'))
).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
def destroy(self, request, *args, **kwargs):
try:
template_no = self.kwargs['template_no']
instance = models.ChangeRequestTemplateHeader.objects.filter(
Q(template_no=template_no) &
Q(deleted_at=None)
).update(deleted_at=datetime.now())
return Response({"message": "Deleted"}, status=status.HTTP_200_OK)
except Exception as e:
return Response(e,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
def partial_update(self, request, *args, **kwargs):
try:
kwargs['partial'] = True
template_no = self.kwargs['template_no']
instance = models.ChangeRequestTemplateHeader.objects.filter(
template_no=template_no
).order_by('-deleted_at')
instance.update(deleted_at=None)
message = "Archived Change Request restored"
return Response(message, status=status.HTTP_200_OK)
except Exception as e:
message = {
500, 'failed',
'Request was not able to process' + str(e), []
}
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class ChangeRequestTemplateApproversViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateApprovers.objects.all()
serializer_class = serializers.ChangeRequestTemplateApproversSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code"
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplateApproversViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestTemplateAttachmentsViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateAttachments.objects.all()
serializer_class = serializers.ChangeRequestTemplateAttachmentsSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code"
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(
ChangeRequestTemplateAttachmentsViewset, self
).list(request)
class ChangeRequestTemplateStakeHoldersViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateStakeHolders.objects.all()
serializer_class = serializers.ChangeRequestTemplateStakeHoldersSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code"
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplateStakeHoldersViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestTemplateDetailsViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateDetails.objects.all()
serializer_class = serializers.ChangeRequestTemplateDetailsSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = "code"
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestTemplateDetailsViewset, self).list(request)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestTemplatePost(APIView):
@transaction.atomic()
def post(self, request):
template_header = request.data
try:
data_list_approver = []
data_list_stake = []
data_list_attach = []
data_list_detail = []
template_header_data = {
'requested_to_template_name': template_header['requested_to_template_name'],
'requested_to_template_id': template_header['requested_to_template_id'],
'requested_to_objective': template_header['requested_to_objective'],
'requested_to_target_date': template_header['requested_to_target_date'],
'requested_to_priority': template_header['requested_to_priority'],
'description': template_header['description'],
'created_by_department': template_header['created_by_department'],
'created_by_user': template_header['created_by_user'],
'requested_to_company': template_header['requested_to_company'],
'requested_to_department': template_header['requested_to_department'],
'requested_to_user': template_header['requested_to_user']
}
tmp_approvers = template_header['tmp_approvers']
tmp_stakes = template_header['tmp_stakes']
tmp_attachments = template_header['tmp_attachments']
tmp_details = template_header['tmp_details']
sp1 = transaction.savepoint() # nothing will save to db
serializer = serializers.ChangeRequestTemplatesSerializer(
data=template_header_data)
if serializer.is_valid(raise_exception=True):
serializer.save()
tmp_id = serializer.data['template_no']
# create template approvers
for tmp_approver in tmp_approvers:
tmp_approver['template_no'] = tmp_id
data_list_approver.append(tmp_approver)
serializerApprover = serializers.ChangeRequestTemplateApproversSerializer(
data=data_list_approver, many=True)
if serializerApprover.is_valid(raise_exception=True):
serializerApprover.save()
# create template stakes
for tmp_stake in tmp_stakes:
tmp_stake['template_no'] = tmp_id
data_list_stake.append(tmp_stake)
serializerStake = serializers.ChangeRequestTemplateStakeHoldersSerializer(
data=data_list_stake, many=True)
if serializerStake.is_valid(raise_exception=True):
serializerStake.save()
# create template attachments
for tmp_attachment in tmp_attachments:
tmp_attachment['template_no'] = tmp_id
data_list_attach.append(tmp_attachment)
serializerAttach = serializers.ChangeRequestTemplateAttachmentsSerializer(
data=data_list_attach, many=True)
if serializerAttach.is_valid(raise_exception=True):
serializerAttach.save()
# create template details
for tmp_detail in tmp_details:
tmp_detail['template_no'] = tmp_id
data_list_detail.append(tmp_detail)
serializerDetail = serializers.ChangeRequestTemplateDetailsSerializer(
data=data_list_detail, many=True)
if serializerDetail.is_valid(raise_exception=True):
serializerDetail.save()
message = {
'code': 201,
'status': 'success',
'message': 'Template Details successfully saved!',
'results': serializer.data
}
return Response(message, status=status.HTTP_201_CREATED)
except ValidationError as e:
transaction.savepoint_rollback(sp1)
message = {
'code': 400,
'status': 'failed',
'message': str(e),
}
return Response(message, status=status.HTTP_400_BAD_REQUEST)
except Exception as e:
transaction.savepoint_rollback(sp1)
message = {
'code': 500,
'status': 'failed',
'message': 'Request was not able to process' + str(e),
}
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
# Change Request Form Views # Change Request Form Views
class ChangeRequestFormsViewset(meviewsets.ModelViewSet): class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
...@@ -328,10 +81,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -328,10 +81,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
url_path='dashboard', url_path='dashboard',
name="Dashboard Summary") name="Dashboard Summary")
def dashboard_view(self, request): def dashboard_view(self, request):
id_number = self.request.user id_number = self.request.user
# id_number = 'Acct-20190813-0000138' print(id_number)
self.queryset = change_request.list_by_user(id_number.code) self.queryset = change_request.list_by_user(id_number.code)
...@@ -395,7 +147,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -395,7 +147,7 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
overdue = overdue_filtered.count() overdue = overdue_filtered.count()
message = { message = {
'account_no': id_number, 'account_no': id_number.code,
'pending': pending, 'pending': pending,
'approved': approved, 'approved': approved,
'rejected': rejected, 'rejected': rejected,
...@@ -412,7 +164,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -412,7 +164,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
return Response(message, status=status.HTTP_200_OK) return Response(message, status=status.HTTP_200_OK)
@action(detail=False, @action(detail=False,
methods=['get'], methods=['get'],
url_path='status', url_path='status',
...@@ -421,8 +172,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -421,8 +172,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
id_number = self.request.user id_number = self.request.user
# id_number = 'Acct-20190531-0000002'
self.queryset = change_request.list_by_user(id_number.code) self.queryset = change_request.list_by_user(id_number.code)
self.queryset = change_request.filter_status( self.queryset = change_request.filter_status(
...@@ -455,8 +204,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -455,8 +204,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
id_number = self.request.user id_number = self.request.user
# id_number = 'Acct-20190531-0000002'
self.queryset = change_request.list_by_user(id_number.code) self.queryset = change_request.list_by_user(id_number.code)
self.queryset = change_request.filter_overdue(self.queryset) self.queryset = change_request.filter_overdue(self.queryset)
...@@ -485,11 +232,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -485,11 +232,9 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
id_number = self.request.user id_number = self.request.user
# id_number = 'Acct-20190813-0000137'
self.queryset = change_request.list_by_user(id_number.code) self.queryset = change_request.list_by_user(id_number.code)
self.queryset = change_request.filter_awaiting(self.queryset, id_number) self.queryset = change_request.filter_awaiting(self.queryset, id_number.code)
self.queryset = change_request.filter_base( self.queryset = change_request.filter_base(
self.queryset, self.queryset,
...@@ -502,149 +247,261 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -502,149 +247,261 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
request.query_params.get('form_type'), request.query_params.get('form_type'),
) )
self.queryset = self.queryset.filter(status__ne='Rejected') self.queryset = self.queryset.filter(
~Q(status='Rejected') |
self.queryset = self.queryset.filter(status__ne='Closed') ~Q(status='Closed') |
~Q(status='Cancelled'))
self.queryset = self.queryset.filter(status__ne='Cancelled')
self.queryset = self.queryset.order_by('-created') self.queryset = self.queryset.order_by('-created')
self.queryset = QuerySetHelper.Sort(self) self.queryset = QuerySetHelper.Sort(self)
return super(ChangeRequestFormsViewset, self).list(request) return super(ChangeRequestFormsViewset, self).list(request)
def destroy(self, request, *args, **kwargs):
# instance = self.get_object()
form_code = self.kwargs['form_code']
instance = models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).first()
if instance.status.lower() == 'draft':
models.ChangeRequestFormApprovers.objects(
form_code=form_code
).delete()
models.ChangeRequestFormDetails.objects(
form_code=form_code
).delete()
models.ChangeRequestFormStakeHolders.objects(
form_code=form_code
).delete()
models.ChangeRequestFormAttachments.objects(
form_code=form_code
).delete()
models.ChangeRequestFormTasks.objects(
form_code=form_code
).delete()
models.ChangeRequestFormHeader.objects(form_code=form_code).delete()
# self.perform_destroy(instance)
return Response({"message": "Change Request Deleted"}, status=status.HTTP_200_OK)
else:
message = {"message": "Cant delete this record, it has an ongoing tansaction"}
return Response(
message,
status=status.HTTP_204_NO_CONTENT
)
def retrieve(self, request, *args, **kwargs): def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter( instance = self.queryset.filter(
deleted_at=None, archived_at=None,
form_code=str(self.kwargs.get('form_code')) form_code=str(self.kwargs.get('form_code'))
).first() ).first()
serializer = self.get_serializer(instance) serializer = self.get_serializer(instance)
return Response(serializer.data) return Response(serializer.data)
@action(detail=True, @action(
methods=['get'], methods=['PATCH'], detail=True,
url_path='history', url_path='re_route', url_name='re_route'
name="CR History") )
def list_cr_history(self, request, form_code=None, **kwargs): def re_route(self, request, *args, **kwargs):
form_code = self.kwargs['form_code'] form_code = kwargs['form_code']
form_code_list = [] print(form_code)
form_code_list.append(form_code)
for frmitem in models.ChangeRequestFormHeader.objects.filter(old_form_code__ne=None).order_by('created'): models.ChangeRequestFormHeader.objects.filter(
form_code=form_code).update(status='Pending')
if frmitem.form_code == form_code: models.ChangeRequestFormApprovers.objects.filter(
form_code_list.append(frmitem.old_form_code) form_code=form_code).update(action=None, remarks=None,
form_code = frmitem.old_form_code date_sent=None)
# remove duplicates return Response(
mylist = list(dict.fromkeys(form_code_list)) "Change request form successfully re routed",
print(mylist) status=status.HTTP_200_OK
)
queryset = models.ChangeRequestFormApprovers.objects.filter( @action(
(Q(action__ne=None) & Q(action__ne='')), methods=['PATCH'], detail=True,
form_code__in=mylist).order_by('created') url_path='re_submit', url_name='re_submit'
)
def re_submit(self, request, *args, **kwargs):
self.serializer_class = serializers.ChangeRequestFormApproversSerializer # get form code to be re created
form_code = kwargs['form_code']
page = self.paginate_queryset(queryset) frm_id = models.ChangeRequestFormHeader.objects.get(
if page is not None: form_code=form_code)
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data) obj = models.ChangeRequestFormHeader.objects.get(pk=frm_id.pk)
obj.pk = None
obj.form_code = "Temp-Form-Code"
obj.old_form_code = form_code
obj.status = 'Draft'
obj.save()
new_frmheader_code = number_generator(
enums.GenerateCode.FORM.value, obj.id)
class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet): models.ChangeRequestFormHeader.objects.filter(
pk=obj.id).update(form_code=new_frmheader_code)
queryset = models.ChangeRequestFormApprovers.objects.all() # re create approvers
serializer_class = serializers.ChangeRequestFormApproversSerializer approvers = models.ChangeRequestFormApprovers.objects.filter(
pagination_class = paginators.SimplePageNumberPagination form_code=form_code)
counter = 0
def create(self, request, *args, **kwargs): for approver in approvers:
ObjectId = request.data.get('id') to_delete = approver.pk
sent = False counter = counter + 1
if 'form_status' in request.data: approver.pk = None
approver.code = counter
approver.remarks =None
approver.action = None
approver.date_sent = None
approver.save()
# for email new_frmapp_code = number_generator(
if str(request.data['level']) == '1' and request.data['form_status'].lower() == 'pending': enums.GenerateCode.FORM_APPROVER.value, approver.id)
user = request.data['user']
form_code = request.data['form_code']
delegation = request.data['delegation']
# initial_email(user, form_code, delegation)
# EMAIL CODE FOR APPROVER models.ChangeRequestFormApprovers.objects.filter(
notification_msg = APPROVER_MESSAGE.split(';')[0] pk=approver.id).update(code=new_frmapp_code,
email_code = APPROVER_MESSAGE.split(';')[1] form_code=new_frmheader_code)
next_appover_email( # delete old data
user, form_code, delegation, models.ChangeRequestFormApprovers.objects.filter(
notification_msg, 'initial', email_code pk=to_delete).delete()
)
request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') # re create stakeholders
request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct stakes = models.ChangeRequestFormStakeHolders.objects.filter(
sent = True form_code=form_code)
serializer = self.get_serializer(data=request.data) counter = 0
serializer.is_valid(raise_exception=True)
if ObjectId: for stake in stakes:
dbExisting = models.ChangeRequestFormApprovers.objects.filter( to_delete = stake.pk
id=ObjectId, counter = counter + 1
deleted_at=None).first() stake.pk = None
stake.code = counter
stake.save()
if dbExisting: new_frmstake_code = number_generator(
dbExisting.deleted_at = datetime.now() enums.GenerateCode.FORM_STAKE.value, stake.id)
dbExisting.save()
# x = self.perform_create(serializer) models.ChangeRequestFormStakeHolders.objects.filter(
serializer.id = None pk=stake.id).update(code=new_frmstake_code,
form_code=new_frmheader_code)
x = serializer.save() # delete old data
if sent == True: models.ChangeRequestFormStakeHolders.objects.filter(
x.date_sent = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') pk=to_delete).delete()
x.created = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
x.save()
# re create details
details = models.ChangeRequestFormDetails.objects.filter(
form_code=form_code)
counter = 0
for detail in details:
to_delete = detail.pk
counter = counter + 1
detail.pk = None
detail.code = counter
detail.save()
new_frmdetail_code = number_generator(
enums.GenerateCode.FORM_DETAIL.value, detail.id)
models.ChangeRequestFormDetails.objects.filter(
pk=detail.id).update(code=new_frmdetail_code,
form_code=new_frmheader_code)
# delete old data
models.ChangeRequestFormDetails.objects.filter(
pk=to_delete).delete()
# re create attachments
attachments = models.ChangeRequestFormAttachments.objects.filter(
form_code=form_code)
counter = 0
for attachment in attachments:
to_delete = attachment.pk
counter = counter + 1
attachment.pk = None
attachment.code = counter
attachment.save()
new_frmattach_code = number_generator(
enums.GenerateCode.FORM_ATTACH.value, attachment.id)
models.ChangeRequestFormAttachments.objects.filter(
pk=attachment.id).update(code=new_frmattach_code,
form_code=new_frmheader_code)
# delete old data
models.ChangeRequestFormAttachments.objects.filter(
pk=to_delete).delete()
# delete old data form header
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code).delete()
headers = self.get_success_headers(serializer.data)
return Response( return Response(
serializer.data, "Change request form successfully resubmitted",
status=status.HTTP_201_CREATED, status=status.HTTP_200_OK
headers=headers )
# actions
@action(
methods=['PATCH'], detail=True,
url_path='actions', url_name='actions'
) )
def actions(self, request, *args, **kwargs):
form_code = kwargs['form_code']
print(form_code)
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code).update(status='Pending')
models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code).update(action=None, remarks=None,
date_sent=None)
return Response(
"Change request form successfully re routed",
status=status.HTTP_200_OK
)
class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestFormApprovers.objects.all()
serializer_class = serializers.ChangeRequestFormApproversSerializer
pagination_class = paginators.SimplePageNumberPagination
lookup_field = 'code'
# def create(self, request, *args, **kwargs):
# ObjectId = request.data.get('id')
# sent = False
# if 'form_status' in request.data:
# # for email
# if str(request.data['level']) == '1' and request.data['form_status'].lower() == 'pending':
# user = request.data['user']
# form_code = request.data['form_code']
# delegation = request.data['delegation']
# # initial_email(user, form_code, delegation)
# # EMAIL CODE FOR APPROVER
# notification_msg = APPROVER_MESSAGE.split(';')[0]
# email_code = APPROVER_MESSAGE.split(';')[1]
# next_appover_email(
# user, form_code, delegation,
# notification_msg, 'initial', email_code
# )
# request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
# request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
# sent = True
# serializer = self.get_serializer(data=request.data)
# serializer.is_valid(raise_exception=True)
# if ObjectId:
# dbExisting = models.ChangeRequestFormApprovers.objects.filter(
# id=ObjectId,
# archived_at=None).first()
# if dbExisting:
# dbExisting.archived_at = datetime.now()
# dbExisting.save()
# # x = self.perform_create(serializer)
# serializer.id = None
# x = serializer.save()
# if sent == True:
# x.date_sent = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
# x.created = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
# x.save()
# headers = self.get_success_headers(serializer.data)
# return Response(
# serializer.data,
# status=status.HTTP_201_CREATED,
# headers=headers
# )
@action( @action(
methods=['PATCH'], detail=False, methods=['PATCH'], detail=False,
...@@ -656,22 +513,15 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet): ...@@ -656,22 +513,15 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
instance = models.ChangeRequestFormApprovers.objects.filter( instance = models.ChangeRequestFormApprovers.objects.filter(
id=objectid id=objectid
) )
# .update(
# set__deleted_at=datetime.utcnow()
# )
instance = instance.first() instance = instance.first()
current_remarks = instance.remarks current_remarks = instance.remarks
print(current_remarks)
instance.update( instance.update(
set__deleted_at=datetime.utcnow() set__archived_at=datetime.utcnow()
) )
# request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') # correct request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') # correct
# request.data['remarks'] = current_remarks
print("hello") print("hello")
print(request.data['remarks']) print(request.data['remarks'])
...@@ -695,13 +545,13 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet): ...@@ -695,13 +545,13 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
next_approver = models.ChangeRequestFormApprovers.objects.filter( next_approver = models.ChangeRequestFormApprovers.objects.filter(
level=str(next_level), level=str(next_level),
form_code=form_code, form_code=form_code,
deleted_at=None archived_at=None
) )
if action.lower() == 'approved': if action.lower() == 'approved':
models.ChangeRequestFormApprovers.objects.filter( models.ChangeRequestFormApprovers.objects.filter(
Q(deleted_at=None) & Q(level=str(next_level)) Q(archived_at=None) & Q(level=str(next_level))
).update( ).update(
date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S') date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
) )
...@@ -758,7 +608,7 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet): ...@@ -758,7 +608,7 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
elif action.lower() == 'completed': elif action.lower() == 'completed':
models.ChangeRequestFormApprovers.objects.filter( models.ChangeRequestFormApprovers.objects.filter(
Q(deleted_at=None) & Q(level=str(next_level)) Q(archived_at=None) & Q(level=str(next_level))
).update( ).update(
date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S') date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
) )
...@@ -816,13 +666,13 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet): ...@@ -816,13 +666,13 @@ class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
#------------ #------------
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None) self.queryset = self.queryset.filter(archived_at=None)
self.queryset = QuerySetHelper.Sort(self) self.queryset = QuerySetHelper.Sort(self)
self.queryset = QuerySetHelper.Filter(self) self.queryset = QuerySetHelper.Filter(self)
return super(ChangeRequestFormApproversViewset, self).list(request) return super(ChangeRequestFormApproversViewset, self).list(request)
def retrieve(self, request, *args, **kwargs): def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first() instance = self.queryset.filter(archived_at=None).first()
serializer = self.get_serializer(instance) serializer = self.get_serializer(instance)
return Response(serializer.data) return Response(serializer.data)
...@@ -833,7 +683,7 @@ class ChangeRequestFormAttachmentsViewset(meviewsets.ModelViewSet): ...@@ -833,7 +683,7 @@ class ChangeRequestFormAttachmentsViewset(meviewsets.ModelViewSet):
pagination_class = paginators.SimplePageNumberPagination pagination_class = paginators.SimplePageNumberPagination
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None) self.queryset = self.queryset.filter(archived_at=None)
self.queryset = QuerySetHelper.Sort(self) self.queryset = QuerySetHelper.Sort(self)
self.queryset = QuerySetHelper.Filter(self) self.queryset = QuerySetHelper.Filter(self)
return super( return super(
...@@ -849,10 +699,10 @@ class ChangeRequestFormAttachmentsViewset(meviewsets.ModelViewSet): ...@@ -849,10 +699,10 @@ class ChangeRequestFormAttachmentsViewset(meviewsets.ModelViewSet):
if ObjectId: if ObjectId:
dbExisting = models.ChangeRequestFormAttachments.objects.filter( dbExisting = models.ChangeRequestFormAttachments.objects.filter(
id=ObjectId, id=ObjectId,
deleted_at=None).first() archived_at=None).first()
if dbExisting: if dbExisting:
dbExisting.deleted_at = datetime.now() dbExisting.archived_at = datetime.now()
dbExisting.save() dbExisting.save()
self.perform_create(serializer) self.perform_create(serializer)
...@@ -875,7 +725,7 @@ class ChangeRequestFormAttachmentsViewset(meviewsets.ModelViewSet): ...@@ -875,7 +725,7 @@ class ChangeRequestFormAttachmentsViewset(meviewsets.ModelViewSet):
) )
def retrieve(self, request, *args, **kwargs): def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first() instance = self.queryset.filter(archived_at=None).first()
serializer = self.get_serializer(instance) serializer = self.get_serializer(instance)
return Response(serializer.data) return Response(serializer.data)
...@@ -887,7 +737,7 @@ class ChangeRequestFormStakeHoldersViewset(meviewsets.ModelViewSet): ...@@ -887,7 +737,7 @@ class ChangeRequestFormStakeHoldersViewset(meviewsets.ModelViewSet):
pagination_class = paginators.SimplePageNumberPagination pagination_class = paginators.SimplePageNumberPagination
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None) self.queryset = self.queryset.filter(archived_at=None)
self.queryset = QuerySetHelper.Sort(self) self.queryset = QuerySetHelper.Sort(self)
self.queryset = QuerySetHelper.Filter(self) self.queryset = QuerySetHelper.Filter(self)
return super(ChangeRequestFormStakeHoldersViewset, self).list(request) return super(ChangeRequestFormStakeHoldersViewset, self).list(request)
...@@ -900,10 +750,10 @@ class ChangeRequestFormStakeHoldersViewset(meviewsets.ModelViewSet): ...@@ -900,10 +750,10 @@ class ChangeRequestFormStakeHoldersViewset(meviewsets.ModelViewSet):
if ObjectId: if ObjectId:
dbExisting = models.ChangeRequestFormStakeHolders.objects.filter( dbExisting = models.ChangeRequestFormStakeHolders.objects.filter(
id=ObjectId, id=ObjectId,
deleted_at=None).first() archived_at=None).first()
if dbExisting: if dbExisting:
dbExisting.deleted_at = datetime.now() dbExisting.archived_at = datetime.now()
dbExisting.save() dbExisting.save()
self.perform_create(serializer) self.perform_create(serializer)
...@@ -916,7 +766,7 @@ class ChangeRequestFormStakeHoldersViewset(meviewsets.ModelViewSet): ...@@ -916,7 +766,7 @@ class ChangeRequestFormStakeHoldersViewset(meviewsets.ModelViewSet):
) )
def retrieve(self, request, *args, **kwargs): def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first() instance = self.queryset.filter(archived_at=None).first()
serializer = self.get_serializer(instance) serializer = self.get_serializer(instance)
return Response(serializer.data) return Response(serializer.data)
...@@ -928,7 +778,7 @@ class ChangeRequestFormDetailsViewset(meviewsets.ModelViewSet): ...@@ -928,7 +778,7 @@ class ChangeRequestFormDetailsViewset(meviewsets.ModelViewSet):
pagination_class = paginators.SimplePageNumberPagination pagination_class = paginators.SimplePageNumberPagination
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None) self.queryset = self.queryset.filter(archived_at=None)
self.queryset = QuerySetHelper.Sort(self) self.queryset = QuerySetHelper.Sort(self)
self.queryset = QuerySetHelper.Filter(self) self.queryset = QuerySetHelper.Filter(self)
return super(ChangeRequestFormDetailsViewset, self).list(request) return super(ChangeRequestFormDetailsViewset, self).list(request)
...@@ -941,10 +791,10 @@ class ChangeRequestFormDetailsViewset(meviewsets.ModelViewSet): ...@@ -941,10 +791,10 @@ class ChangeRequestFormDetailsViewset(meviewsets.ModelViewSet):
if ObjectId: if ObjectId:
dbExisting = models.ChangeRequestFormDetails.objects.filter( dbExisting = models.ChangeRequestFormDetails.objects.filter(
id=ObjectId, id=ObjectId,
deleted_at=None).first() archived_at=None).first()
if dbExisting: if dbExisting:
dbExisting.deleted_at = datetime.now() dbExisting.archived_at = datetime.now()
dbExisting.save() dbExisting.save()
self.perform_create(serializer) self.perform_create(serializer)
...@@ -957,7 +807,7 @@ class ChangeRequestFormDetailsViewset(meviewsets.ModelViewSet): ...@@ -957,7 +807,7 @@ class ChangeRequestFormDetailsViewset(meviewsets.ModelViewSet):
) )
def retrieve(self, request, *args, **kwargs): def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first() instance = self.queryset.filter(archived_at=None).first()
serializer = self.get_serializer(instance) serializer = self.get_serializer(instance)
return Response(serializer.data) return Response(serializer.data)
...@@ -1007,9 +857,22 @@ class ChangeRequestFormPost(APIView): ...@@ -1007,9 +857,22 @@ class ChangeRequestFormPost(APIView):
if serializer.is_valid(raise_exception=True): if serializer.is_valid(raise_exception=True):
serializer.save() serializer.save()
template_no = serializer.data['template_no']
tmp_counter = models.ChangeRequestFormHeader.objects.filter(
template_no=template_no).count()
# tmp_counter = tmp_counter + 1
CR_Prefix = serializer.data['requested_to_template_id']
generate_tmp = number_generator(CR_Prefix, tmp_counter)
frm_id = serializer.data['form_code'] frm_id = serializer.data['form_code']
print(frm_id) print(frm_id)
models.ChangeRequestFormHeader.objects.filter(
form_code=frm_id).update(
requested_to_template_id=generate_tmp)
# create template approvers # create template approvers
for frm_approver in frm_approvers: for frm_approver in frm_approvers:
......
from app.entities import models
from rest_framework import serializers
from django.db.models import Q
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
...@@ -153,7 +153,7 @@ def receiver_body( ...@@ -153,7 +153,7 @@ def receiver_body(
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
...@@ -436,3 +436,14 @@ def cancel_overdue(request): ...@@ -436,3 +436,14 @@ def cancel_overdue(request):
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,29 +179,13 @@ def filter_overdue(base_queryset): ...@@ -179,29 +179,13 @@ def filter_overdue(base_queryset):
overdue = [] overdue = []
for query in return_queryset: for query in return_queryset:
if (query.requested_to_target_date < now):
try:
if query.requested_to_target_date:
requested_to_target_date = datetime.strptime(query.requested_to_target_date[:-1], "%Y-%m-%dT%H:%M:%S.%f")
if (requested_to_target_date < now):
overdue.append(query.form_code)
except ValueError:
#convert now
if query.requested_to_target_date:
requested_to_target_date = datetime.strptime(query.requested_to_target_date[:-1], "%Y-%m-%d %H:%M:%S")
if (requested_to_target_date < now):
overdue.append(query.form_code) overdue.append(query.form_code)
return_queryset = return_queryset.filter( return_queryset = return_queryset.filter(
form_code__in=overdue form_code__in=overdue
) )
return_queryset
except Exception as e: except Exception as e:
pass pass
...@@ -241,14 +225,20 @@ def filter_awaiting(base_queryset, ...@@ -241,14 +225,20 @@ def filter_awaiting(base_queryset,
current_level = models.ChangeRequestFormApprovers.objects.filter( current_level = models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=query.form_code) & Q(form_code=query.form_code) &
Q(deleted_at=None) &
(Q(action='') | Q(action=None)) (Q(action='') | Q(action=None))
).order_by('level') ).order_by('level')
if current_level: if current_level:
first_level = current_level.first()
first_user = models.ChangeRequestFormApprovers.objects.filter(
code=first_level).values('user')
print(first_user.user)
# if x == user_id_number:
if current_level[0]['user'] == user_id_number: # awaiting_included.append(query.form_code)
awaiting_included.append(query.form_code)
return_queryset = return_queryset.filter(form_code__in=awaiting_included) return_queryset = return_queryset.filter(form_code__in=awaiting_included)
......
# Generated by Django 2.2 on 2019-09-11 11:02
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0006_emaillogs_is_sent'),
]
operations = [
migrations.AlterField(
model_name='changerequestformheader',
name='requested_to_template_id',
field=models.CharField(max_length=255),
),
]
# 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,7 +354,6 @@ class BaseHeader(models.Model): ...@@ -354,7 +354,6 @@ class BaseHeader(models.Model):
to_field='code') to_field='code')
requested_to_template_name = models.CharField(max_length=255) requested_to_template_name = models.CharField(max_length=255)
requested_to_template_id = models.CharField(max_length=255, unique=True)
requested_to_objective = models.CharField( requested_to_objective = models.CharField(
max_length=255, max_length=255,
...@@ -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
...@@ -488,6 +471,10 @@ class ChangeRequestTemplateHeader(BaseHeader): ...@@ -488,6 +471,10 @@ class ChangeRequestTemplateHeader(BaseHeader):
unique=True, unique=True,
max_length=255) max_length=255)
requested_to_template_id = models.CharField(
max_length=255,
unique=True)
created_by_user = models.ForeignKey( created_by_user = models.ForeignKey(
User, User,
on_delete=models.DO_NOTHING, on_delete=models.DO_NOTHING,
...@@ -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'
...@@ -569,6 +570,10 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder): ...@@ -569,6 +570,10 @@ class ChangeRequestTemplateStakeHolders(BaseStakeholder):
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):
code = models.CharField( code = models.CharField(
...@@ -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'
...@@ -595,6 +603,10 @@ class ChangeRequestTemplateAttachments(BaseAttachment): ...@@ -595,6 +603,10 @@ class ChangeRequestTemplateAttachments(BaseAttachment):
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):
code = models.CharField( code = models.CharField(
...@@ -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'
...@@ -621,6 +636,10 @@ class ChangeRequestTemplateDetails(BaseDetails): ...@@ -621,6 +636,10 @@ class ChangeRequestTemplateDetails(BaseDetails):
self.created = datetime.now() self.created = datetime.now()
self.save() self.save()
def delete(self):
self.archived_at = datetime.utcnow
self.save()
''' '''
***** *****
FORMS FORMS
...@@ -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