Commit 0a61a976 authored by Gladys Forte's avatar Gladys Forte

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

* commit '7b11ddf6':
  up
  save
  save or submit initial
  actions
parents 7de48098 7b11ddf6
from app.entities import models
from rest_framework import serializers
from django.db.models import Q
from app.applicationlayer.cms.utils_cr import logged_user
from drf_writable_nested import WritableNestedModelSerializer
from app.applicationlayer.cms.utils_cr import (get_account_details,
get_dept_details,
get_companies_details)
class ChangeRequestFormApproversSerializer(
serializers.ModelSerializer
):
# def to_representation(self, instance):
# ret = super().to_representation(instance)
# try:
# user = instance.user
def to_representation(self, instance):
ret = super().to_representation(instance)
try:
user = instance.user
user_details = get_account_details(user.code)
name = user_details.values_list('name', flat=True)[0]
dept_code = user_details.values_list('department', flat=True)[0]
department_details = get_dept_details(dept_code)
department = department_details.values_list('name', flat=True)[0]
comp_code = department_details.values_list('company', flat=True)[0]
company_details = get_companies_details(comp_code)
company = company_details.values_list('name', flat=True)[0]
# 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
ret['name'] = name
ret['department'] = department
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', 'archived_at', 'code']
read_only_fields = ['created', 'code']
class ChangeRequestFormStakeHoldersSerializer(
......@@ -41,7 +47,7 @@ class ChangeRequestFormStakeHoldersSerializer(
class Meta:
model = models.ChangeRequestFormStakeHolders
fields = '__all__'
read_only_fields = ['created', 'archived_at', 'code']
read_only_fields = ['created', 'code']
class ChangeRequestFormAttachmentsSerializer(
......@@ -50,7 +56,7 @@ class ChangeRequestFormAttachmentsSerializer(
class Meta:
model = models.ChangeRequestFormAttachments
fields = '__all__'
read_only_fields = ['created', 'archived_at', 'code']
read_only_fields = ['created', 'code']
class ChangeRequestFormDetailsSerializer(
......@@ -59,31 +65,113 @@ class ChangeRequestFormDetailsSerializer(
class Meta:
model = models.ChangeRequestFormDetails
fields = '__all__'
read_only_fields = ['created', 'archived_at', 'code']
read_only_fields = ['created', 'code']
class ChangeRequestFormHeaderSerializer(
WritableNestedModelSerializer
serializers.ModelSerializer
):
frm_approvers = ChangeRequestFormApproversSerializer(
many=True, required=False)
many=True, read_only=True)
# frm_stakes = ChangeRequestFormStakeHoldersSerializer(
# many=True, required=False)
frm_stakes = ChangeRequestFormStakeHoldersSerializer(
many=True, required=False)
many=True, read_only=True)
frm_attachments = ChangeRequestFormAttachmentsSerializer(
many=True, required=False)
many=True, read_only=True)
frm_details = ChangeRequestFormDetailsSerializer(
many=True, required=False)
many=True, read_only=True)
# def update(self, instance, validated_data):
# Update the book instance
# instance.requested_to_template_name = validated_data['requested_to_template_name']
# instance.requested_to_objective = validated_data['requested_to_objective']
# instance.requested_to_target_date = validated_data['requested_to_target_date']
# instance.requested_to_priority = validated_data['requested_to_priority']
# instance.description = validated_data['description']
# instance.status = validated_data['status']
# instance.company_desc = validated_data['company_desc']
# instance.department_desc = validated_data['department_desc']
# instance.requested_desc = validated_data['requested_desc']
# instance.requested_to_template_id = validated_data['requested_to_template_id']
# instance.requested_to_company = validated_data['requested_to_company']
# instance.requested_to_department = validated_data['requested_to_department']
# instance.requested_to_user = validated_data['requested_to_user']
# instance.requested_by_user = validated_data['requested_by_user']
# instance.requested_by_department = validated_data['requested_by_department']
# instance.template_no = validated_data['template_no']
# instance.save()
# Delete any pages not included in the request
# approvers_ids = [item.id for item in validated_data['frm_approvers']]
# for i in validated_data['frm_approvers']:
# print(i)
# print(approvers_ids)
# for page in instance.frm_approvers:
# if page.id not in approvers_ids:
# page.delete()
# # Create or update page instances that are in the request
# for item in validated_data['pages']:
# page = Page(id=item['page_id'], text=item['text'], book=instance)
# page.save()
# return instance
# def update(self, instance, validated_data):
# frm_approvers = validated_data.pop('frm_approvers')
# instance.requested_to_template_name = validated_data.get("requested_to_template_name", instance.requested_to_template_name)
# instance.requested_to_objective = validated_data.get("requested_to_objective", instance.requested_to_objective)
# instance.requested_to_target_date = validated_data.get("requested_to_target_date", instance.requested_to_target_date)
# instance.requested_to_priority = validated_data.get("requested_to_priority", instance.requested_to_priority)
# instance.description = validated_data.get("description", instance.description)
# instance.status = validated_data.get("status", instance.status)
# instance.company_desc = validated_data.get("company_desc", instance.company_desc)
# instance.department_desc = validated_data.get("department_desc", instance.department_desc)
# instance.requested_desc = validated_data.get("requested_desc", instance.requested_desc)
# instance.requested_to_template_id = validated_data.get("requested_to_template_id", instance.requested_to_template_id)
# instance.requested_to_company = validated_data.get("requested_to_company", instance.requested_to_company)
# instance.requested_to_department = validated_data.get("requested_to_department", instance.requested_to_department)
# instance.requested_to_user = validated_data.get("requested_to_user", instance.requested_to_user)
# instance.requested_by_user = validated_data.get("requested_by_user", instance.requested_by_user)
# instance.requested_by_department = validated_data.get("requested_by_department", instance.requested_by_department)
# instance.template_no = validated_data.get("template_no", instance.template_no)
# instance.save()
# print(instance.form_code)
# keep_choices = []
# for choice in frm_approvers:
# if "id" in choice.keys():
# if models.ChangeRequestFormApprovers.objects.filter(id=choice["id"]).exists():
# c = models.ChangeRequestFormApprovers.objects.get(id=choice["id"])
# c.text = choice.get('text', c.text)
# c.save()
# keep_choices.append(c.id)
# else:
# continue
# else:
# c = models.ChangeRequestFormApprovers.objects.create(**choice)
# keep_choices.append(c.id)
# for choice in instance.frm_approvers:
# if choice.id not in keep_choices:
# choice.delete()
# return instance
def to_representation(self, instance):
ret = super().to_representation(instance)
try:
user = self.context['request'].user
print(user.code)
id_number = user.code
current_level = models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=ret['form_code']) &
Q(archived_at=None) &
Q(form_code=ret['form_code'])
(Q(action='') | Q(action=None))
).order_by('level')
......
This diff is collapsed.
......@@ -98,8 +98,6 @@ class UserList(APIView):
return self.paginator.get_paginated_response(data)
class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
queryset = models.ChangeRequestTemplateHeader.objects.all()
......@@ -195,7 +193,7 @@ class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
@transaction.atomic
def partial_update(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False)
instance = self.get_object()
......@@ -207,7 +205,7 @@ class ChangeRequestTemplatesViewset(meviewsets.ModelViewSet):
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
......
This diff is collapsed.
......@@ -21,20 +21,17 @@ def list_by_user(user_id_number):
try:
approver = models.ChangeRequestFormApprovers.objects.filter(
Q(user=user_id_number) &
Q(archived_at=None)
Q(user=user_id_number)
)
approver = [data.form_code for data in approver]
stake = models.ChangeRequestFormStakeHolders.objects.filter(
Q(user=user_id_number) &
Q(archived_at=None)
Q(user=user_id_number)
)
stake = [data.form_code for data in stake]
headers = models.ChangeRequestFormHeader.objects.filter(
archived_at=None,
requested_by_user=user_id_number
)
headers = [data.form_code for data in headers]
......@@ -61,8 +58,7 @@ def list_by_user(user_id_number):
form_code = list(set(stake + approver + headers))
return_queryset = models.ChangeRequestFormHeader.objects.filter(
form_code__in=form_code,
archived_at=None,
form_code__in=form_code
)
exclude = return_queryset.filter(
status__iexact='Draft',
......
......@@ -21,7 +21,7 @@ def custom_exception_handler(exc, context):
value = value[0]
error_message['code'] = response.status_code
error_message['status'] = 'failed'
error_message['status'] = 'failedkk'
error_message['message'] = value
response.data = error_message
......
......@@ -97,6 +97,12 @@ class CREnum(Enum):
RESUBMIT = "RESUBMIT"
SUBMIT = "SUBMIT"
SAVE = "SAVE"
APPROVED = "APPROVED"
COMPLETED = "COMPLETED"
CANCELLED = "CANCELLED"
ACCEPTED = "ACCEPTED"
ACKNOWLEDGED = "ACKNOWLEDGED"
REJECTED = "REJECTED"
class CREntitiesEnum(Enum):
......
......@@ -478,7 +478,9 @@ def admin_changepassword(args):
# # html_message=FC
# # )
# RMS-CRAPPROVED ; RMS-CRACKNOWLEDGE ; RMS-CRCOMPLETED ; RMS-CRACCEPTED
# RMS-CRAPPROVED ; RMS-CRACKNOWLEDGE ; RMS-CRCOMPLETED ; RMS-CRACCEPTED ;
# RMS-CRREJECTED ; RMS-CRREJECTED-VENDOR
def routing_table_actions(args):
name = args[0]
action_by = args[1]
......@@ -490,92 +492,31 @@ def routing_table_actions(args):
department_requestedto = args[7]
priority_level = args[8]
url = args[9]
remarks = args[10]
recipient = args[10]
action_type = args[11]
admin = args[12]
recipient = args[11]
action_type = args[12]
delegation_type = args[13]
admin = args[14]
if action_type.lower() == 'approved':
if args[12].lower() == 'approved':
email_template = 'RMS-CRAPPROVED.html'
subject = 'Resource Management System - Change Request Approved'
elif action_type.lower() == 'acknowledged':
elif args[12].lower() == 'acknowledged':
email_template = 'RMS-CRACKNOWLEDGE.html'
subject = 'Resource Management System - Change Request Acknowledged'
elif action_by.lower() == 'completed':
elif args[12].lower() == 'completed':
email_template = 'RMS-CRCOMPLETED.html'
subject = 'Resource Management System - Change Request Completed'
elif action_type.lower() == 'accepted':
elif args[12].lower() == 'accepted':
email_template = 'RMS-CRACCEPTED.html'
subject = 'Resource Management System - Change Request Accepted'
F = open(os.path.join(settings.EMAIL_TEMPLATES_ROOT, email_template), 'r')
FC = F.read()
FC = FC.replace('{name}', name)
FC = FC.replace('{action_by}', action_by)
FC = FC.replace('{routing_level}', routing_level)
FC = FC.replace('{status}', status)
FC = FC.replace('{cr_number}', cr_number)
FC = FC.replace('{cr_name}', cr_name)
FC = FC.replace('{company_requestedto}', company_requestedto)
FC = FC.replace('{department_requestedto}', department_requestedto)
FC = FC.replace('{priority_level}', priority_level)
FC = FC.replace('{url}', url)
try:
send_mail(
subject=subject,
message='',
from_email=settings.EMAIL_DEFAULT_SENDER,
recipient_list=(recipient,),
html_message=FC,
fail_silently=False
)
models.EmailLogs.objects.create(
template=email_template,
recipients=recipient,
content=FC,
is_sent=True,
createdby=admin,
modifiedby=admin
)
except Exception as e:
models.EmailLogs.objects.create(
template=email_template,
recipients=recipient,
content=FC,
is_sent=False,
createdby=admin,
modifiedby=admin
)
return True
# RMS-CRREJECTED ; RMS-CRREJECTED-VENDOR
def routing_table_actions_rejected(args):
name = args[0]
action_by = args[1]
routing_level = args[2]
status = args[3]
cr_number = args[4]
cr_name = args[5]
company_requestedto = args[6]
department_requestedto = args[7]
priority_level = args[8]
url = args[9]
remarks = args[10]
recipient = args[11]
rejected_type = args[12]
admin = args[13]
if rejected_type == 'requestor':
email_template = 'RMS-CRREJECTED.html'
subject = 'Resource Management System - Change Request Rejected'
elif rejected_type == 'vendor':
email_template = 'RMS-CRREJECTED-VENDOR.html'
elif args[12].lower() == 'rejected':
subject = 'Resource Management System - Change Request Rejected'
if args[13].lower() == 'requestor':
email_template = 'RMS-CRREJECTED.html'
elif args[13].lower() == 'vendor/implementor':
email_template = 'RMS-CRREJECTED-VENDOR.html'
F = open(os.path.join(settings.EMAIL_TEMPLATES_ROOT, email_template), 'r')
......@@ -591,7 +532,9 @@ def routing_table_actions_rejected(args):
FC = FC.replace('{department_requestedto}', department_requestedto)
FC = FC.replace('{priority_level}', priority_level)
FC = FC.replace('{url}', url)
FC = FC.replace('{remarks}', remarks)
if args[11].lower() == 'rejected':
FC = FC.replace('{remarks}', remarks)
try:
send_mail(
......@@ -634,20 +577,21 @@ def routing_table_actions_required(args):
url = args[7]
recipient = args[8]
action_type = args[9]
delegation_type = args[9]
admin = args[10]
if action_type == 'requestor':
email_template = 'RMS-ACTIONREQUIRED.html'
subject = 'Resource Management System - Action Required for Change Request'
elif action_type == 'vendor':
if delegation_type.lower() == 'vendor/implementor':
email_template = 'RMS-ACTIONREQUIRED-VENDOR.html'
subject = 'Resource Management System - Action Required for Change Request'
else:
email_template = 'RMS-ACTIONREQUIRED.html'
subject = 'Resource Management System - Action Required for Change Request'
F = open(os.path.join(settings.EMAIL_TEMPLATES_ROOT, email_template), 'r')
FC = F.read()
FC = FC.replace('{name}', name)
FC = FC.replace('{cr_number}', cr_number)
FC = FC.replace('{cr_name}', cr_name)
......
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