Commit 11d39015 authored by John Red Medrano's avatar John Red Medrano

Merge pull request #294 in RMS/api-main-service from RMSv2 to staging

* commit 'cbf81f0e':
  requestor and poc condition
  fixed user list onf template and form, user dont allowed edit when the user has transaction on CMS
  testing
  testing
  fixing
  testing
  testing
  testing
  fixing
  fixing
  fixing
  try
parents a4e1431c cbf81f0e
......@@ -158,7 +158,7 @@ class ForgotPassword(APIView):
f"?token={TOKEN}"
args = [str(PASSCODE), str(url), user, str(existingUser.email),
str(existingUser.username)]
str(existingUser.name)]
# t1 = threading.Thread(target=sender.forgot_password, args=(args,))
# t1.start()
......
from app.entities import models
from rest_framework import serializers
from django.db.models import Q
class headers(serializers.ModelSerializer):
......@@ -7,13 +8,13 @@ class headers(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
try:
# try:
user = self.context['request'].user
id_number = user.code
current_level = models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=ret['form_code']) &
Q(form_code=instance.form_code) &
(Q(action='') | Q(action=None))
).order_by('level')
......@@ -29,20 +30,23 @@ class headers(serializers.ModelSerializer):
else:
approver = 'No'
ret['action_required'] = approver
ret['company'] = instance.requested_to_company.name
ret['department'] = instance.requested_to_department.name
ret['requested_by'] = instance.requested_by_user.name
ret['requested_to_company'] = instance.requested_to_company.name
ret['requested_to_department'] = instance.requested_to_department.name
ret['requested_by_user'] = instance.requested_by_user.name
ret['requested_to_target_date'] = instance.requested_to_target_date.strftime('%Y-%m-%d-%H:%M:%S')
# ret['created'] = instance.created.strftime('%Y-%m-%d-%H:%M:%S')
ret['created'] = instance.created.strftime('%Y-%m-%d-%H:%M:%S')
ret['action'] = approver
# ret['requested_to_target_date'] = instance.requested_to_target_date.strftime('%Y-%m-%d-%H:%M:%S')
print(ret)
return ret
except Exception as e:
ret['action_required'] = "No"
ret['company'] = "None"
ret['department'] = "None"
ret['requested_by'] = "None"
# except Exception as e:
# ret['action_required'] = "No"
# ret['company'] = "None"
# ret['department'] = "None"
# ret['requested_by'] = "None"
return ret
# return ret
class Meta:
......@@ -50,11 +54,12 @@ class headers(serializers.ModelSerializer):
fields = (
'requested_to_template_id',
'requested_to_template_name',
'company_desc',
'department_desc',
'requested_desc',
'requested_to_company',
'requested_to_department',
'requested_by_user',
'status',
'requested_to_priority',
# 'action',
'created',
'requested_to_target_date'
)
......@@ -77,9 +77,9 @@ class DownloadRequest(XLSXFileMixin, ReadOnlyModelViewSet):
"Requested By",
"Status",
"Priority Level",
"Action"
"Date Modified",
"Date Required"
"Action",
],
'column_width': [17, 30, 17],
'height': 25,
......
......@@ -775,9 +775,18 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
date_sent=datetime.now()
)
the_last_vendor = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code, delegation='Vendor/Implementor'
).order_by('level').last()
if current_user == the_last_vendor.user.code:
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).update(status='Completed')
else:
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).update(status='Approved')
elif action.lower() == 'acknowledged':
......@@ -854,7 +863,19 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(instance)
requestor = serializer.validated_data['requested_by_user'].code
poc = serializer.validated_data['requested_to_user'].code
if requestor == poc:
message = {
'code': 400,
'status': 'failed',
'message': 'Cannot assign same user on point of contact and requestor',
}
return Response(message, status=status.HTTP_400_BAD_REQUEST)
else:
self.perform_update(serializer)
new_instance = serializer.data
print(serializer.errors)
......@@ -964,6 +985,17 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(instance)
requestor = serializer.validated_data['requested_by_user'].code
poc = serializer.validated_data['requested_to_user'].code
if requestor == poc:
message = {
'code': 400,
'status': 'failed',
'message': 'Cannot assign same user on point of contact and requestor',
}
return Response(message, status=status.HTTP_400_BAD_REQUEST)
else:
self.perform_update(serializer)
form_header = get_object_or_404(models.ChangeRequestFormHeader,
......@@ -1201,6 +1233,16 @@ class ChangeRequestFormPost(APIView):
data=form_header_data)
if serializer.is_valid(raise_exception=True):
requestor = serializer.validated_data['requested_by_user'].code
poc = serializer.validated_data['requested_to_user'].code
if requestor == poc:
message = {
'code': 400,
'status': 'failed',
'message': 'Cannot assign same user on point of contact and requestor',
}
return Response(message, status=status.HTTP_400_BAD_REQUEST)
else:
serializer.save()
frm_id = serializer.data['form_code']
......@@ -1213,26 +1255,6 @@ class ChangeRequestFormPost(APIView):
counter = counter + 1
data_list_approver.append(frm_approver)
#append vendor and requestor in routing table
# counter = counter + 1
# vendor_data = {
# 'level': counter,
# 'delegation': 'Vendor/Implementor',
# 'user': form_header['requested_to_user'],
# 'form_code': frm_id
# }
# data_list_approver.append(vendor_data)
# counter = counter + 1
# requestor_data = {
# 'level': counter,
# 'delegation': 'Requestor',
# 'user': form_header['requested_by_user'],
# 'form_code': frm_id
# }
# data_list_approver.append(requestor_data)
serializerApprover = ChangeRequestFormApproversSerializer(
data=data_list_approver, many=True)
......
......@@ -25,7 +25,7 @@ class UserListForm(APIView):
user_list = models.User.objects.filter(
department=dept
).exclude(id=1)
user_list = user_list.exclude(id=request.user.id)
# user_list = user_list.exclude(id=request.user.id)
print(user_list.query)
page = self.paginate_queryset(user_list)
......
......@@ -25,7 +25,7 @@ class UserListTemplate(APIView):
user_list = models.User.objects.filter(
department=dept
).exclude(id=1)
user_list = user_list.exclude(id=request.user.id)
# user_list = user_list.exclude(id=request.user.id)
print(user_list.query)
page = self.paginate_queryset(user_list)
......
......@@ -12,7 +12,8 @@ from django.contrib.auth.hashers import check_password
from rest_framework.response import Response
from app.applicationlayer.utils import model_to_dict
from app.entities.models import (
User, EntityLog, PasswordReset, Application, UserImage
User, EntityLog, PasswordReset, Application, UserImage,
ChangeRequestFormHeader, ChangeRequestTemplateHeader
)
from app.helper.decorators import rms, error_safe
from django.contrib.auth.hashers import make_password
......@@ -27,6 +28,7 @@ from app.applicationlayer.utils import (
main_threading
)
from rest_framework.exceptions import ParseError
from django.db.models import Q
class UserViewSet(viewsets.ModelViewSet):
......@@ -161,7 +163,35 @@ class UserViewSet(viewsets.ModelViewSet):
partial = kwargs.pop('partial', False)
instance = self.get_object()
serializer = self.get_serializer(instance, data=request.data, partial=partial)
cms_form = ChangeRequestFormHeader.objects.filter(
Q(frm_approvers__user__code=instance.code) |
Q(frm_stakes__user__code=instance.code) |
Q(requested_by_user__code=instance.code) |
Q(requested_to_user__code=instance.code)
)
cms_template = ChangeRequestTemplateHeader.objects.filter(
Q(created_by_user__code=instance.code) |
Q(requested_to_user__code=instance.code)
)
print(instance.department.code)
print(request.data['department'])
if instance.department.code != request.data['department']:
if cms_form.count() <= 0 or cms_template.count() <= 0:
raise ParseError(
'Cannot delete this record the user has a record on change request it might cause a data error'
)
serializer = self.get_serializer(
instance, data=request.data, partial=partial
)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(instance)
......
......@@ -43,11 +43,15 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer):
applications = serializers.SerializerMethodField()
department = serializers.SerializerMethodField()
company = serializers.SerializerMethodField()
create_form = serializers.SerializerMethodField()
create_template = serializers.SerializerMethodField()
class Meta:
model = models.User
fields = (
'id',
'create_form',
'create_template',
'code', 'name',
'username', 'contact_no',
'image', 'company',
......@@ -75,6 +79,28 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer):
}
return data
def get_create_form(self, user):
check_user = models.AllowedCompany.objects.filter(
Q(id_number=user.code) &
Q(create_change_request=True)
).count()
if check_user <= 0:
permission = False
else:
permission = True
return permission
def get_create_template(self, user):
check_user = models.AllowedCompany.objects.filter(
Q(id_number=user.code) &
Q(create_change_request_template=True)
).count()
if check_user <= 0:
permission = False
else:
permission = True
return permission
def get_image(self, user):
request = self.context.get('request')
......@@ -86,17 +112,14 @@ class UserManagementRetreiveSerializer(serializers.ModelSerializer):
return request.build_absolute_uri('/media/no-user.png')
def get_applications(self, user):
# app = user.application.exclude(id=1)
if user.user_type.upper() == enums.UserTypeEnum.USER.value:
app = user.application.exclude(id=1)
else:
app = user.application.all()
list_app = []
initial_mod = {}
rms = models.Application.objects.filter(id=1).values().first()
for data in app:
mod = data.modules.filter(~Q(name__icontains='header'))
mod = data.modules.all()
if user.user_type.upper() != enums.UserTypeEnum.USER.value:
if user.user_type.upper() != enums.UserTypeEnum.USER.value:
user_module = models.Module.objects.filter(
......
......@@ -83,7 +83,7 @@ def tmp_add_edit_delete(tmp_request_body,
self.perform_create(serializer)
new_instance = serializer.data
try:
log_save(
enums.LogEnum.ADD.value,
enum_type,
......@@ -91,5 +91,13 @@ def tmp_add_edit_delete(tmp_request_body,
'',
new_instance
)
except Exception as e:
log_save(
enums.LogEnum.ADD.value,
enum_type,
new_instance['id'],
'',
new_instance
)
return True
This diff is collapsed.
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