Commit bb2bc8b9 authored by Gladys Forte's avatar Gladys Forte

update

parent 5915d68e
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
class ChangeRequestTemplatesSerializer( class ChangeRequestTemplatesSerializer(
...@@ -51,40 +52,34 @@ class ChangeRequestTemplateDetailsSerializer( ...@@ -51,40 +52,34 @@ class ChangeRequestTemplateDetailsSerializer(
class ChangeRequestFormHeaderSerializer( class ChangeRequestFormHeaderSerializer(
serializers.ModelSerializer serializers.ModelSerializer
): ):
# 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('HTTP_ACCOUNT_NO') # id_number = self.context.get('request').META.get('user')
# # id_number = self.request.user.code
# id_number = self.context['request'].user.code id_number = "USER-20190909-0000005"
current_level = models.ChangeRequestFormApprovers.objects.filter(
# # print(id_number) Q(form_code=ret['form_code']) &
# # print("hello") Q(deleted_at=None) &
# # id_number = "Acct-20190813-0000137" (Q(action='') | Q(action=None))
# current_level = models.ChangeRequestFormApprovers.objects.filter( ).order_by('level')
# Q(form_code=ret['form_code']) &
# Q(deleted_at=None) & if current_level.first()['user'] == id_number:
# (Q(action='') | Q(action=None)) if instance.status.lower() == 'rejected':
# ).order_by('level') approver = 'No'
elif instance.status.lower() == 'cancelled':
# print(current_level.user) approver = 'No'
# # description = instance['description'] elif instance.status.lower() == 'closed':
# if current_level.first()['user'] == id_number: approver = 'No'
# if instance.status.lower() == 'rejected': else:
# approver = 'No' approver = 'Yes'
# elif instance.status.lower() == 'cancelled': else:
# approver = 'No' approver = 'No'
# elif instance.status.lower() == 'closed': ret['action'] = approver
# approver = 'No' return ret
# else: except Exception as e:
# approver = 'Yes' ret['action'] = "No"
# else: return ret
# approver = 'No'
# ret['action'] = approver
# return ret
# except Exception as e:
# ret['action'] = "No"
# return ret
class Meta: class Meta:
model = models.ChangeRequestFormHeader model = models.ChangeRequestFormHeader
......
...@@ -6,7 +6,7 @@ import requests ...@@ -6,7 +6,7 @@ import requests
from app.entities import models from app.entities import models
from datetime import timedelta from datetime import timedelta
from django.db.models import Q from django.db.models import Q
from dateutil import parser # from dateutil import parser
# EMAIL = settings.EMAIL # EMAIL = settings.EMAIL
...@@ -116,7 +116,8 @@ def number_generator(prefix, id): ...@@ -116,7 +116,8 @@ def number_generator(prefix, id):
def logged_user(self): def logged_user(self):
return self.request.META.get('HTTP_ACCOUNT_NO') # return self.request.META.get('HTTP_ACCOUNT_NO')
return self.request.user
def receiver_body( def receiver_body(
......
...@@ -24,6 +24,7 @@ from app.applicationlayer.utils import QuerySetHelper ...@@ -24,6 +24,7 @@ from app.applicationlayer.utils import QuerySetHelper
from app.businesslayer.changerequest import change_request from app.businesslayer.changerequest import change_request
class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet): class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateHeader.objects.all() queryset = models.ChangeRequestTemplateHeader.objects.all()
...@@ -103,6 +104,7 @@ class ChangeRequestTemplateApproversViewset(meviewsets.ModelViewSet): ...@@ -103,6 +104,7 @@ class ChangeRequestTemplateApproversViewset(meviewsets.ModelViewSet):
class ChangeRequestTemplateAttachmentsViewset(meviewsets.ModelViewSet): class ChangeRequestTemplateAttachmentsViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateAttachments.objects.all() queryset = models.ChangeRequestTemplateAttachments.objects.all()
serializer_class = serializers.ChangeRequestTemplateAttachmentsSerializer serializer_class = serializers.ChangeRequestTemplateAttachmentsSerializer
pagination_class = paginators.SimplePageNumberPagination pagination_class = paginators.SimplePageNumberPagination
...@@ -284,7 +286,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -284,7 +286,6 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
def list(self, request, *args, **kwargs): def list(self, request, *args, **kwargs):
id_number = self.request.user id_number = self.request.user
# id_number = 'Acct-20190813-0000138'
# print(id_number.code) # print(id_number.code)
self.queryset = change_request.list_by_user(id_number.code) self.queryset = change_request.list_by_user(id_number.code)
...@@ -576,6 +577,382 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet): ...@@ -576,6 +577,382 @@ class ChangeRequestFormsViewset(meviewsets.ModelViewSet):
return self.get_paginated_response(serializer.data) return self.get_paginated_response(serializer.data)
class ChangeRequestFormApproversViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestFormApprovers.objects.all()
serializer_class = serializers.ChangeRequestFormApproversSerializer
pagination_class = paginators.SimplePageNumberPagination
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,
deleted_at=None).first()
if dbExisting:
dbExisting.deleted_at = datetime.now()
dbExisting.save()
# x = self.perform_create(serializer)
serializer.id = None
x = serializer.save()
if sent == True:
x.date_sent = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
x.created = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') #correct
x.save()
headers = self.get_success_headers(serializer.data)
return Response(
serializer.data,
status=status.HTTP_201_CREATED,
headers=headers
)
@action(
methods=['PATCH'], detail=False,
url_path='approved', url_name='approved'
)
def approved(self, request, *args, **kwargs):
objectid = request.data['id']
instance = models.ChangeRequestFormApprovers.objects.filter(
id=objectid
)
# .update(
# set__deleted_at=datetime.utcnow()
# )
instance = instance.first()
current_remarks = instance.remarks
print(current_remarks)
instance.update(
set__deleted_at=datetime.utcnow()
)
# request.data['date_sent'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
request.data['created'] = datetime.now().strftime('%Y-%m-%d, %H:%M:%S') # correct
# request.data['remarks'] = current_remarks
print("hello")
print(request.data['remarks'])
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
#------------
id = serializer.data['id']
current_user = request.data['user']
form_code = request.data['form_code']
delegation = request.data['delegation']
action = request.data['action']
level = request.data['level']
next_level = int(request.data['level']) + 1
remarks = request.data['remarks']
next_approver = models.ChangeRequestFormApprovers.objects.filter(
level=str(next_level),
form_code=form_code,
deleted_at=None
)
if action.lower() == 'approved':
models.ChangeRequestFormApprovers.objects.filter(
Q(deleted_at=None) & Q(level=str(next_level))
).update(
date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
)
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_MESSAGE.split(';')[0]
requestor_email_code = REQUESTOR_MESSAGE.split(';')[1]
# EMAIL CODE FOR APPROVER
notification_msg = APPROVER_MESSAGE.split(';')[0]
email_code = APPROVER_MESSAGE.split(';')[1]
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action, requestor_email_code,
remarks, level
)
for n_approver in next_approver:
print(n_approver.user)
if n_approver.delegation.lower() == 'vendor/implementor':
notification_msg = VENDOR_ACKNOWLEDGE_MESSAGE.split(';')[0]
email_code = VENDOR_ACKNOWLEDGE_MESSAGE.split(';')[1]
next_appover_email(
n_approver.user, form_code, delegation,
notification_msg, action, email_code
)
elif action.lower() == 'rejected':
if delegation.lower() == 'requestor':
notification_msg = VENDOR_REJECT_MESSAGE.split(';')[0]
email_code = VENDOR_REJECT_MESSAGE.split(';')[1]
send_mail_vendor(
current_user, form_code, delegation,
requestor_notification_msg, action, requestor_email_code,
remarks, level
)
else:
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_REJECT_MESSAGE.split(';')[0]
requestor_email_code = REQUESTOR_REJECT_MESSAGE.split(';')[1]
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action, requestor_email_code,
remarks, level
)
elif action.lower() == 'completed':
models.ChangeRequestFormApprovers.objects.filter(
Q(deleted_at=None) & Q(level=str(next_level))
).update(
date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
)
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_COMPLETION_MESSAGE.split(';')[0]
requestor_email_code = REQUESTOR_COMPLETION_MESSAGE.split(';')[1]
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action, requestor_email_code,
remarks, level
)
elif action.lower() == 'acknowledged':
# models.ChangeRequestFormApprovers.objects.filter(
# level=str(next_level)
# ).update(
# date_sent=datetime.now().strftime('%Y-%m-%d, %H:%M:%S')
# )
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_ACKNOWLEDGE_MESSAGE.split(';')[0]
requestor_email_code = REQUESTOR_ACKNOWLEDGE_MESSAGE.split(';')[1]
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action, requestor_email_code,
remarks, level
)
elif action.lower() == 'accepted':
# EMAIL CODE FOR VENDOR
requestor_notification_msg = VENDOR_ACCEPTANCE_MESSAGE.split(';')[0]
requestor_email_code = VENDOR_ACCEPTANCE_MESSAGE.split(';')[1]
send_mail_vendor(
current_user, form_code, delegation,
requestor_notification_msg, action, requestor_email_code,
remarks, level
)
# elif action.lower() == 'cancelled':
# action_cancelled(self, request, *args, **kwargs)
headers = self.get_success_headers(serializer.data)
return Response(
serializer.data, status=status.HTTP_201_CREATED
)
#------------
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
self.queryset = QuerySetHelper.Filter(self)
return super(ChangeRequestFormApproversViewset, 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 ChangeRequestFormAttachmentsViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestFormAttachments.objects.all()
serializer_class = serializers.ChangeRequestFormAttachmentsSerializer
pagination_class = paginators.SimplePageNumberPagination
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
self.queryset = QuerySetHelper.Filter(self)
return super(
ChangeRequestFormAttachmentsViewset, self
).list(request)
def create(self, request, *args, **kwargs):
attachment_no = request.data.get('attachment_no')
ObjectId = request.data.get('id')
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
if ObjectId:
dbExisting = models.ChangeRequestFormAttachments.objects.filter(
id=ObjectId,
deleted_at=None).first()
if dbExisting:
dbExisting.deleted_at = datetime.now()
dbExisting.save()
self.perform_create(serializer)
if not attachment_no:
id = serializer.data['id']
db_counter = models.ChangeRequestFormAttachments.objects.all().count()
db_counter = db_counter + 1
models.ChangeRequestFormAttachments.objects.filter(id=id).update(
set__attachment_no=number_generator(
"ATCH", db_counter
)
)
headers = self.get_success_headers(serializer.data)
return Response(
serializer.data,
status=status.HTTP_201_CREATED,
headers=headers
)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestFormStakeHoldersViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestFormStakeHolders.objects.all()
serializer_class = serializers.ChangeRequestFormStakeHoldersSerializer
pagination_class = paginators.SimplePageNumberPagination
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
self.queryset = QuerySetHelper.Filter(self)
return super(ChangeRequestFormStakeHoldersViewset, self).list(request)
def create(self, request, *args, **kwargs):
ObjectId = request.data.get('id')
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
if ObjectId:
dbExisting = models.ChangeRequestFormStakeHolders.objects.filter(
id=ObjectId,
deleted_at=None).first()
if dbExisting:
dbExisting.deleted_at = datetime.now()
dbExisting.save()
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(
serializer.data,
status=status.HTTP_201_CREATED,
headers=headers
)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestFormDetailsViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestFormDetails.objects.all()
serializer_class = serializers.ChangeRequestFormDetailsSerializer
pagination_class = paginators.SimplePageNumberPagination
def list(self, request, *args, **kwargs):
self.queryset = self.queryset.filter(deleted_at=None)
self.queryset = QuerySetHelper.Sort(self)
self.queryset = QuerySetHelper.Filter(self)
return super(ChangeRequestFormDetailsViewset, self).list(request)
def create(self, request, *args, **kwargs):
ObjectId = request.data.get('id')
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
if ObjectId:
dbExisting = models.ChangeRequestFormDetails.objects.filter(
id=ObjectId,
deleted_at=None).first()
if dbExisting:
dbExisting.deleted_at = datetime.now()
dbExisting.save()
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(
serializer.data,
status=status.HTTP_201_CREATED,
headers=headers
)
def retrieve(self, request, *args, **kwargs):
instance = self.queryset.filter(deleted_at=None).first()
serializer = self.get_serializer(instance)
return Response(serializer.data)
class ChangeRequestFormPost(APIView): class ChangeRequestFormPost(APIView):
# @transaction.atomic() # @transaction.atomic()
......
...@@ -9,9 +9,6 @@ from app.applicationlayer.management.module.views import ModuleViewSet ...@@ -9,9 +9,6 @@ from app.applicationlayer.management.module.views import ModuleViewSet
from app.applicationlayer.management.account.views import UserViewSet from app.applicationlayer.management.account.views import UserViewSet
from app.businesslayer.company.views import AdminCompanyViewSet from app.businesslayer.company.views import AdminCompanyViewSet
from app.applicationlayer.management.notification.views import NotificationsViewset
from app.applicationlayer.management.changerequest import views as crviews
router = routers.DefaultRouter() router = routers.DefaultRouter()
...@@ -21,23 +18,6 @@ router.register(r'departments', DepartmentViewSet) ...@@ -21,23 +18,6 @@ router.register(r'departments', DepartmentViewSet)
router.register(r'modules', ModuleViewSet) router.register(r'modules', ModuleViewSet)
router.register(r'users', UserViewSet) router.register(r'users', UserViewSet)
router.register(r'notifications', NotificationsViewset)
router.register(r'template', crviews.ChangeRequestTemplatesViewset)
router.register(r'template-approvers', crviews.ChangeRequestTemplateApproversViewset)
router.register(r'template-attachments', crviews.ChangeRequestTemplateAttachmentsViewset)
router.register(r'template-stakeholders', crviews.ChangeRequestTemplateStakeHoldersViewset)
router.register(r'template-details', crviews.ChangeRequestTemplateDetailsViewset)
router.register(r'form', crviews.ChangeRequestFormsViewset)
# router.register(r'form-approvers', crviews.ChangeRequestFormApproversViewset)
# router.register(r'form-stakeholders', crviews.ChangeRequestFormStakeHoldersViewset)
# router.register(r'form-attachments', crviews.ChangeRequestFormAttachmentsViewset)
# router.register(r'form-details', crviews.ChangeRequestFormDetailsViewset)
urlpatterns = ( urlpatterns = (
path('', include(router.urls)), path('', include(router.urls)),
path('template-post/', crviews.ChangeRequestTemplatePost.as_view()),
path('form-post/', crviews.ChangeRequestFormPost.as_view()),
) )
from django.urls import path, include
from rest_framework import routers
from django.conf.urls import url
from app.applicationlayer.management.notification.views import NotificationsViewset
from app.applicationlayer.management.changerequest import views as crviews
router = routers.DefaultRouter()
router.register(r'notifications', NotificationsViewset)
router.register(r'template', crviews.ChangeRequestTemplatesViewset)
router.register(r'template-approvers', crviews.ChangeRequestTemplateApproversViewset)
router.register(r'template-attachments', crviews.ChangeRequestTemplateAttachmentsViewset)
router.register(r'template-stakeholders', crviews.ChangeRequestTemplateStakeHoldersViewset)
router.register(r'template-details', crviews.ChangeRequestTemplateDetailsViewset)
router.register(r'form', crviews.ChangeRequestFormsViewset)
router.register(r'form-approvers', crviews.ChangeRequestFormApproversViewset)
router.register(r'form-stakeholders', crviews.ChangeRequestFormStakeHoldersViewset)
router.register(r'form-attachments', crviews.ChangeRequestFormAttachmentsViewset)
router.register(r'form-details', crviews.ChangeRequestFormDetailsViewset)
urlpatterns = (
path('', include(router.urls)),
path('template-post/', crviews.ChangeRequestTemplatePost.as_view()),
path('form-post/', crviews.ChangeRequestFormPost.as_view()),
)
...@@ -24,6 +24,7 @@ urlpatterns = [ ...@@ -24,6 +24,7 @@ urlpatterns = [
path('api-auth/', include('rest_framework.urls')), path('api-auth/', include('rest_framework.urls')),
path('api/v1/auth/', include('app.accesslayer.urls')), path('api/v1/auth/', include('app.accesslayer.urls')),
path('api/v1/management/', include('app.applicationlayer.urls')), path('api/v1/management/', include('app.applicationlayer.urls')),
path('api/v1/change-request/', include('app.applicationlayer.urls_cms')),
path('api/v1/master/', include('app.applicationlayer.master.urls')), path('api/v1/master/', include('app.applicationlayer.master.urls')),
url(r'^chat/$', notifview.index, name='index'), url(r'^chat/$', notifview.index, name='index'),
url(r'^chat/(?P<room_name>[^/]+)/$', notifview.room, name='room'), url(r'^chat/(?P<room_name>[^/]+)/$', notifview.room, name='room'),
......
...@@ -51,3 +51,13 @@ REALTIMESERVER_IP = 127.0.0.1:8000 ...@@ -51,3 +51,13 @@ REALTIMESERVER_IP = 127.0.0.1:8000
[SETTINGS] [SETTINGS]
CONFIG = config.settings.local CONFIG = config.settings.local
[NOTIFICATION_EMAIL]
APPROVER_MESSAGE = has sent you an APPROVAL REQUEST for change request;RMS-ACTIONREQUIRED
REQUESTOR_MESSAGE = has APPROVED the change request;RMS-CRAPPROVED
REQUESTOR_REJECT_MESSAGE = has REJECTED the change request;RMS-CRREJECTED
VENDOR_ACKNOWLEDGE_MESSAGE = has sent you an ACKNOWLEDGEMENT REQUEST for change request;RMS-ACTIONREQUIRED-VENDOR
REQUESTOR_ACKNOWLEDGE_MESSAGE = has ACKNOWLEDGED the change request;RMS-CRACKNOWLEDGE
REQUESTOR_COMPLETION_MESSAGE = has COMPLETED the change request;RMS-CRCOMPLETED
VENDOR_ACCEPTANCE_MESSAGE = has ACCEPTED the change request;RMS-CRACCEPTED
VENDOR_REJECT_MESSAGE = has REJECTED the change request;RMS-CRREJECTED-VENDOR
\ No newline at end of file
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