Commit a46ca4ba authored by Gladys Forte's avatar Gladys Forte

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

* commit '6bfc6119':
  comment
  fix date range filter
  added download for user, department and company
  comment
  dash filter
  endpoint for filters
  adjust draft archived
  change none to null
  archive form
  added is_valid template temporary
  comment
  template_object
  fix status on email, added object template_no
parents fab7e2f6 6bfc6119
...@@ -71,7 +71,8 @@ class ChangeRequestFormHeaderSerializer( ...@@ -71,7 +71,8 @@ class ChangeRequestFormHeaderSerializer(
ret['requested_to_user'] = requested_to_user ret['requested_to_user'] = requested_to_user
ret['requested_by_user'] = requested_by_user ret['requested_by_user'] = requested_by_user
ret['requested_by_department'] = model_to_dict(instance.requested_by_department) ret['requested_by_department'] = model_to_dict(instance.requested_by_department)
ret['template_object'] = model_to_dict(instance.template_no)
# added below
return ret return ret
except Exception as e: except Exception as e:
ret['action_required'] = "None" ret['action_required'] = "None"
...@@ -80,6 +81,7 @@ class ChangeRequestFormHeaderSerializer( ...@@ -80,6 +81,7 @@ class ChangeRequestFormHeaderSerializer(
ret['requested_to_user'] = "None" ret['requested_to_user'] = "None"
ret['requested_by_user'] ="None" ret['requested_by_user'] ="None"
ret['requested_by_department'] = "None" ret['requested_by_department'] = "None"
ret['template_object'] = "None"
return ret return ret
...@@ -131,7 +133,23 @@ class ChangeRequestFormHeaderSerializerList( ...@@ -131,7 +133,23 @@ class ChangeRequestFormHeaderSerializerList(
ret['company'] = instance.requested_to_company.name ret['company'] = instance.requested_to_company.name
ret['department'] = instance.requested_to_department.name ret['department'] = instance.requested_to_department.name
ret['requested_by'] = instance.requested_by_user.name ret['requested_by'] = instance.requested_by_user.name
if instance.status.lower() == 'draft':
existing_transaction = models.ChangeRequestHistory.objects.filter(
form_code=instance.form_code
)
if existing_transaction.count() > 0:
can_delete = False
else:
can_delete = True # hard delete
elif instance.status.lower() == 'cancelled':
can_delete = False
else:
can_delete = None
ret['can_delete'] = can_delete
return ret return ret
except Exception as e: except Exception as e:
ret['action_required'] = "No" ret['action_required'] = "No"
......
...@@ -437,9 +437,14 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -437,9 +437,14 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
status=status.HTTP_200_OK) status=status.HTTP_200_OK)
else: else:
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).update(is_active=False)
return Response( return Response(
{"message": "Change request cannot be deleted due to previous transaction/s"}, {"message": "Draft change request sucessfully archived"},
status=status.HTTP_400_BAD_REQUEST) status=status.HTTP_200_OK)
elif current_status.status.lower() == 'cancelled': elif current_status.status.lower() == 'cancelled':
...@@ -700,6 +705,21 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -700,6 +705,21 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
) )
# action # action
if action.lower() == 'approved': if action.lower() == 'approved':
the_next_vendor = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code, level=int(next_level),
delegation='Vendor/Implementor'
).first()
if the_next_vendor:
the_last_vendor = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code, delegation='Vendor/Implementor'
).order_by('level').last()
if the_next_vendor == the_last_vendor:
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).update(status='Approved')
# NOTIF MSG FOR REQUESTOR # NOTIF MSG FOR REQUESTOR
requestor_notification_msg = REQUESTOR_MESSAGE.split(';')[0] requestor_notification_msg = REQUESTOR_MESSAGE.split(';')[0]
...@@ -730,23 +750,12 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -730,23 +750,12 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
).update( ).update(
is_action=False is_action=False
) )
the_next_vendor = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code, level=int(next_level),
delegation='Vendor/Implementor'
).first()
if the_next_vendor:
the_last_vendor = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code, delegation='Vendor/Implementor'
).order_by('level').last()
if the_next_vendor == the_last_vendor:
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).update(status='Approved')
elif action.lower() == 'rejected': elif action.lower() == 'rejected':
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).update(status='Rejected')
# send email to vendor # send email to vendor
if delegation.lower() == 'requestor': if delegation.lower() == 'requestor':
...@@ -767,10 +776,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -767,10 +776,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
requestor_notification_msg, action, requestor_notification_msg, action,
remarks, level remarks, level
) )
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).update(status='Rejected')
# update is_action for current level # update is_action for current level
models.ChangeRequestFormApprovers.objects.filter( models.ChangeRequestFormApprovers.objects.filter(
...@@ -781,15 +786,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -781,15 +786,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
elif action.lower() == 'completed': elif action.lower() == 'completed':
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_COMPLETION_MESSAGE.split(';')[0]
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action,
remarks, level
)
the_last_vendor = models.ChangeRequestFormApprovers.objects.filter( the_last_vendor = models.ChangeRequestFormApprovers.objects.filter(
form_code=form_code, delegation='Vendor/Implementor' form_code=form_code, delegation='Vendor/Implementor'
).order_by('level').last() ).order_by('level').last()
...@@ -831,6 +827,15 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -831,6 +827,15 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
is_action=False is_action=False
) )
# EMAIL CODE FOR REQUESTOR
requestor_notification_msg = REQUESTOR_COMPLETION_MESSAGE.split(';')[0]
send_mail_requestor(
current_user, form_code, delegation,
requestor_notification_msg, action,
remarks, level
)
elif action.lower() == 'acknowledged': elif action.lower() == 'acknowledged':
# EMAIL CODE FOR REQUESTOR # EMAIL CODE FOR REQUESTOR
...@@ -844,6 +849,10 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -844,6 +849,10 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
elif action.lower() == 'accepted': elif action.lower() == 'accepted':
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).update(status='Closed')
# EMAIL CODE FOR VENDOR # EMAIL CODE FOR VENDOR
requestor_notification_msg = VENDOR_ACCEPTANCE_MESSAGE.split(';')[0] requestor_notification_msg = VENDOR_ACCEPTANCE_MESSAGE.split(';')[0]
...@@ -853,10 +862,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -853,10 +862,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
remarks, level remarks, level
) )
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).update(status='Closed')
# update is_action for current level # update is_action for current level
models.ChangeRequestFormApprovers.objects.filter( models.ChangeRequestFormApprovers.objects.filter(
Q(form_code=form_code) & Q(level=int(level)) Q(form_code=form_code) & Q(level=int(level))
...@@ -1281,23 +1286,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet): ...@@ -1281,23 +1286,6 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
) )
# data_list_attach = []
# # create form attachments
# if attach_body['attachments']:
# frm_attachments = attach_body['attachments']
# for frm_attachment in frm_attachments:
# frm_attachment['form_code'] = form_code
# frm_attachment['uploaded_by'] = id_number
# data_list_attach.append(frm_attachment)
# serializerAttach = ChangeRequestFormAttachmentsSerializer(
# data=data_list_attach, many=True)
# if serializerAttach.is_valid(raise_exception=True):
# serializerAttach.save()
message = status_message_response( message = status_message_response(
200, 'success', 200, 'success',
'Attachments successfully updated!', 'Attachments successfully updated!',
......
from rest_framework.filters import SearchFilter, OrderingFilter from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters from django_filters import rest_framework as filters
from app.entities.models import Company, AllowedCompany from app.entities.models import (
Company, AllowedCompany,
ChangeRequestFormHeader, AllowedCompany
)
from rest_framework import viewsets, status from rest_framework import viewsets, status
from app.businesslayer.company.serializer import AdminCompanySerializer from app.businesslayer.company.serializer import AdminCompanySerializer
from app.applicationlayer.utils import CustomPagination, status_message_response from app.applicationlayer.utils import CustomPagination, status_message_response
...@@ -12,6 +15,7 @@ from app.applicationlayer.cms.master.form.company.table_filters import ( ...@@ -12,6 +15,7 @@ from app.applicationlayer.cms.master.form.company.table_filters import (
from app.helper.decorators import rms from app.helper.decorators import rms
from rest_framework.response import Response from rest_framework.response import Response
from django.db.models import Q from django.db.models import Q
from rest_framework.decorators import action
class ChangeRequestCompanyFormViewSet(viewsets.ModelViewSet): class ChangeRequestCompanyFormViewSet(viewsets.ModelViewSet):
...@@ -47,3 +51,55 @@ class ChangeRequestCompanyFormViewSet(viewsets.ModelViewSet): ...@@ -47,3 +51,55 @@ class ChangeRequestCompanyFormViewSet(viewsets.ModelViewSet):
serializer = self.get_serializer(queryset, many=True) serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data) return Response(serializer.data)
@action(
methods=['GET'], detail=False,
url_path='filter', url_name='filter'
)
def filter(self, request, *args, **kwargs):
# instance = self.get_object()
# list_his = []
queryset = self.filter_queryset(self.get_queryset())
id_number = request.user.code
forms = ChangeRequestFormHeader.objects.filter(
Q(frm_approvers__user__code=id_number) |
Q(requested_by_user=id_number) |
Q(frm_stakes__user__code=id_number)
).values()
# print(id_number)
# print(forms)
allowed = AllowedCompany.objects.filter(
id_number=id_number
).values().distinct()
forms = [data['requested_to_company_id'] for data in forms]
allowed = [data['company_pivot_id'] for data in allowed]
forms = forms + allowed
if len(forms) == 0:
queryset = queryset.filter(id=0)
else:
queryset = queryset.filter(code__in=forms)
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
message = status_message_response(
200,
'success',
'list of Company found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
...@@ -16,6 +16,11 @@ from app.applicationlayer.cms.template.details.serializers import ChangeRequestT ...@@ -16,6 +16,11 @@ from app.applicationlayer.cms.template.details.serializers import ChangeRequestT
from django.conf import settings from django.conf import settings
from rest_framework.exceptions import ValidationError
from app.applicationlayer.cms.utils_cr import (
BadRequestException
)
class ChangeRequestTemplatesSerializer( class ChangeRequestTemplatesSerializer(
serializers.ModelSerializer serializers.ModelSerializer
...@@ -64,7 +69,7 @@ class ChangeRequestTemplatesSerializer( ...@@ -64,7 +69,7 @@ class ChangeRequestTemplatesSerializer(
ret['created_by'] = "none" ret['created_by'] = "none"
return ret return ret
class Meta: class Meta:
model = models.ChangeRequestTemplateHeader model = models.ChangeRequestTemplateHeader
# fields = '__all__' # fields = '__all__'
...@@ -78,6 +83,53 @@ class ChangeRequestTemplatesSerializer( ...@@ -78,6 +83,53 @@ class ChangeRequestTemplatesSerializer(
'tmp_details') 'tmp_details')
read_only_fields = ['created', 'template_no'] read_only_fields = ['created', 'template_no']
# extra_kwargs = {
# "requested_to_template_id": {
# "error_messages": {
# "unique": "ssCR prefix should be unique"
# }
# }
# }
# def is_valid(self, raise_exception=False):
# assert not hasattr(self, 'restore_object'), (
# 'Serializer `%s.%s` has old-style version 2 `.restore_object()` '
# 'that is no longer compatible with REST framework 3. '
# 'Use the new-style `.create()` and `.update()` methods instead.' %
# (self.__class__.__module__, self.__class__.__name__)
# )
# assert hasattr(self, 'initial_data'), (
# 'Cannot call `.is_valid()` as no `data=` keyword argument was '
# 'passed when instantiating the serializer instance.'
# )
# if not hasattr(self, '_validated_data'):
# try:
# self._validated_data = self.run_validation(self.initial_data)
# except ValidationError as exc:
# self._validated_data = {}
# self._errors = exc.detail
# else:
# self._errors = {}
# # if validation failed
# if self._errors and raise_exception:
# error_message = {}
# message = str(self.errors)
# for k, v in self.errors.items():
# message = str(v)
# start = message.find('string=') + 8
# end = message.find(', code=') - 1
# message = message[start:end]
# error_message[str(k)] = message
# raise BadRequestException(error_message)
# return not bool(self._errors)
class ChangeRequestTemplatesSerializerList( class ChangeRequestTemplatesSerializerList(
......
...@@ -265,11 +265,14 @@ class ChangeRequestTemplatesViewset(viewsets.ModelViewSet): ...@@ -265,11 +265,14 @@ class ChangeRequestTemplatesViewset(viewsets.ModelViewSet):
return Response(message, status=status.HTTP_200_OK) return Response(message, status=status.HTTP_200_OK)
return Response( message = status_message_response(
"Unable to edit due to existing transaction", 400, 'failed',
status=status.HTTP_400_BAD_REQUEST 'Unable to update due to existing transaction',
''
) )
return Response(message, status=status.HTTP_400_BAD_REQUEST)
@action( @action(
methods=['GET'], detail=False, methods=['GET'], detail=False,
url_path='archived', url_name='archived' url_path='archived', url_name='archived'
...@@ -448,7 +451,7 @@ class ChangeRequestTemplatePost(APIView): ...@@ -448,7 +451,7 @@ class ChangeRequestTemplatePost(APIView):
message = { message = {
'code': 500, 'code': 500,
'status': 'failed', 'status': 'failed',
'message': 'Request was not able to process' + str(e), 'message': str(e),
} }
return Response(message, return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR) status=status.HTTP_500_INTERNAL_SERVER_ERROR)
...@@ -234,7 +234,7 @@ def send_mail_requestor(current_user, ...@@ -234,7 +234,7 @@ def send_mail_requestor(current_user,
requested_to_department = template_instance.requested_to_department.code requested_to_department = template_instance.requested_to_department.code
requested_by_user = template_instance.requested_by_user.code requested_by_user = template_instance.requested_by_user.code
requested_to_priority = template_instance.requested_to_priority requested_to_priority = template_instance.requested_to_priority
cr_status = template_instance.status
# receiver details -------------------------------------------------- # receiver details --------------------------------------------------
requestor_instance = get_account_details(requested_by_user) requestor_instance = get_account_details(requested_by_user)
...@@ -258,7 +258,7 @@ def send_mail_requestor(current_user, ...@@ -258,7 +258,7 @@ def send_mail_requestor(current_user,
name = requestor_name name = requestor_name
action_by = sender_name action_by = sender_name
routing_level = routing_level routing_level = routing_level
status = action status = cr_status
cr_number = cr_number cr_number = cr_number
cr_name = template_name cr_name = template_name
company_requestedto = company_name company_requestedto = company_name
...@@ -516,4 +516,8 @@ def crhistory_create_save(batch_no, main_action, ...@@ -516,4 +516,8 @@ def crhistory_create_save(batch_no, main_action,
template_no=template_no template_no=template_no
) )
return True return True
\ No newline at end of file
class BadRequestException(Exception):
pass
\ No newline at end of file
from app.entities import models
from rest_framework import serializers
from django.db.models import Q
class headers(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['deparment'] = instance.department.name
ret['company'] = instance.department.company.name
return ret
class Meta:
model = models.User
fields = (
'code',
'name',
'email',
'contact_no'
)
from rest_framework import viewsets as meviewsets
from rest_framework.viewsets import ReadOnlyModelViewSet
from drf_renderer_xlsx.mixins import XLSXFileMixin
from drf_renderer_xlsx.renderers import XLSXRenderer
from app.entities.models import (
User
)
# from app.applicationlayer.form_listing_ import headers
from app.applicationlayer.download.accounts.serializers import headers
from django.db.models import CharField, Value
from django.db.models import Q
from rest_framework.response import Response
from rest_framework.permissions import AllowAny
# from cms.applicationlayer.utilities import logged_user
class UserDownloadRequest(XLSXFileMixin, ReadOnlyModelViewSet):
queryset = User.objects.all()
serializer_class = headers
renderer_classes = (XLSXRenderer,)
filename = 'User List.xlsx'
permission_classes = (AllowAny,)
# def list(self, request, *args, **kwargs):
# # id_number = request.user.code
# self.queryset = User.objects.all()
# # print(headers)
# # print(headers)
# # headers = [data['form_code'] for data in headers]
# # form_code = stake + approver + headers
# # self.queryset = ChangeRequestFormHeader.objects.filter(
# # form_code__in=form_code,
# # deleted_at=None,
# # )
# # exclude = self.queryset.filter(
# # status='DRAFT',
# # requested_by_user__ne=id_number
# # )
# # exclude = [data['form_code'] for data in exclude]
# # self.queryset = headers
# # print(data)
# serializer = self.get_serializer(self.queryset, many=True)
# # print(serializer.data)
# return Response(serializer.data)
column_header = {
'titles': [
'ID_NUMBER',
'Name',
'Email',
'Contact Number',
'Department',
'Company'
],
'column_width': [17, 30, 17],
'height': 25,
'style': {
'alignment': {
'horizontal': 'center',
'vertical': 'center',
'wrapText': False,
'shrink_to_fit': True,
},
'border_side': {
'border_style': 'thin',
'color': 'FF000000',
},
'font': {
'name': 'Arial',
'size': 14,
'bold': True,
'color': 'FF000000',
},
},
}
from app.entities import models
from rest_framework import serializers
from django.db.models import Q
class headers(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['modified'] = instance.modified.strftime('%Y-%m-%d-%H:%M:%S')
return ret
class Meta:
model = models.Company
fields = (
'name',
'contact_details'
)
from rest_framework import viewsets as meviewsets
from rest_framework.viewsets import ReadOnlyModelViewSet
from drf_renderer_xlsx.mixins import XLSXFileMixin
from drf_renderer_xlsx.renderers import XLSXRenderer
from app.entities.models import (
Company
)
# from app.applicationlayer.form_listing_ import headers
from app.applicationlayer.download.company.serializers import headers
from django.db.models import CharField, Value
from django.db.models import Q
from rest_framework.response import Response
from rest_framework.permissions import AllowAny
# from cms.applicationlayer.utilities import logged_user
class CompanyDownloadRequest(XLSXFileMixin, ReadOnlyModelViewSet):
queryset = Company.objects.all()
serializer_class = headers
renderer_classes = (XLSXRenderer,)
filename = 'Company List.xlsx'
permission_classes = (AllowAny,)
# def list(self, request, *args, **kwargs):
# id_number = request.user.code
# data = ChangeRequestFormHeader.objects.filter(
# Q(frm_approvers__user__code=id_number) |
# Q(requested_by_user=id_number) |
# Q(frm_stakes__user__code=id_number)
# ).distinct()
# # print(headers)
# # print(headers)
# # headers = [data['form_code'] for data in headers]
# # form_code = stake + approver + headers
# # self.queryset = ChangeRequestFormHeader.objects.filter(
# # form_code__in=form_code,
# # deleted_at=None,
# # )
# # exclude = self.queryset.filter(
# # status='DRAFT',
# # requested_by_user__ne=id_number
# # )
# # exclude = [data['form_code'] for data in exclude]
# # self.queryset = headers
# # print(data)
# serializer = self.get_serializer(data, many=True)
# # print(serializer.data)
# return Response(serializer.data)
column_header = {
'titles': [
'Name',
'Contact Details',
'Date Modified'
],
'column_width': [17, 30, 17],
'height': 25,
'style': {
'alignment': {
'horizontal': 'center',
'vertical': 'center',
'wrapText': False,
'shrink_to_fit': True,
},
'border_side': {
'border_style': 'thin',
'color': 'FF000000',
},
'font': {
'name': 'Arial',
'size': 14,
'bold': True,
'color': 'FF000000',
},
},
}
from app.entities import models
from rest_framework import serializers
from django.db.models import Q
class headers(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['company'] = instance.company.name
return ret
class Meta:
model = models.Department
fields = (
'code',
'name'
)
from rest_framework import viewsets as meviewsets
from rest_framework.viewsets import ReadOnlyModelViewSet
from drf_renderer_xlsx.mixins import XLSXFileMixin
from drf_renderer_xlsx.renderers import XLSXRenderer
from app.entities.models import (
Department
)
# from app.applicationlayer.form_listing_ import headers
from app.applicationlayer.download.department.serializers import headers
from django.db.models import CharField, Value
from django.db.models import Q
from rest_framework.response import Response
from rest_framework.permissions import AllowAny
# from cms.applicationlayer.utilities import logged_user
class DepartmentDownloadRequest(XLSXFileMixin, ReadOnlyModelViewSet):
queryset = Department.objects.all()
serializer_class = headers
renderer_classes = (XLSXRenderer,)
filename = 'Department List.xlsx'
permission_classes = (AllowAny,)
# def list(self, request, *args, **kwargs):
# id_number = request.user.code
# data = ChangeRequestFormHeader.objects.filter(
# Q(frm_approvers__user__code=id_number) |
# Q(requested_by_user=id_number) |
# Q(frm_stakes__user__code=id_number)
# ).distinct()
# # print(headers)
# # print(headers)
# # headers = [data['form_code'] for data in headers]
# # form_code = stake + approver + headers
# # self.queryset = ChangeRequestFormHeader.objects.filter(
# # form_code__in=form_code,
# # deleted_at=None,
# # )
# # exclude = self.queryset.filter(
# # status='DRAFT',
# # requested_by_user__ne=id_number
# # )
# # exclude = [data['form_code'] for data in exclude]
# # self.queryset = headers
# # print(data)
# serializer = self.get_serializer(data, many=True)
# # print(serializer.data)
# return Response(serializer.data)
column_header = {
'titles': [
'Code',
'Name',
'Company'
],
'column_width': [17, 30, 17],
'height': 25,
'style': {
'alignment': {
'horizontal': 'center',
'vertical': 'center',
'wrapText': False,
'shrink_to_fit': True,
},
'border_side': {
'border_style': 'thin',
'color': 'FF000000',
},
'font': {
'name': 'Arial',
'size': 14,
'bold': True,
'color': 'FF000000',
},
},
}
...@@ -10,6 +10,10 @@ from app.applicationlayer.management.account.views import UserViewSet ...@@ -10,6 +10,10 @@ 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.notification.views import NotificationsViewset
from app.applicationlayer.download.accounts.views import UserDownloadRequest
from app.applicationlayer.download.department.views import DepartmentDownloadRequest
from app.applicationlayer.download.company.views import CompanyDownloadRequest
router = routers.DefaultRouter() router = routers.DefaultRouter()
...@@ -19,6 +23,9 @@ router.register(r'departments', DepartmentViewSet) ...@@ -19,6 +23,9 @@ 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'notifications', NotificationsViewset)
router.register(r'user-download', UserDownloadRequest)
router.register(r'department-download', DepartmentDownloadRequest)
router.register(r'company-download', CompanyDownloadRequest)
urlpatterns = ( urlpatterns = (
path('', include(router.urls)), path('', include(router.urls)),
......
...@@ -108,7 +108,7 @@ def filter_base(base_queryset, ...@@ -108,7 +108,7 @@ def filter_base(base_queryset,
form_type): form_type):
return_queryset = base_queryset return_queryset = base_queryset
try: try:
if company_requested_to: if company_requested_to:
...@@ -125,42 +125,32 @@ def filter_base(base_queryset, ...@@ -125,42 +125,32 @@ def filter_base(base_queryset,
return_queryset = return_queryset.filter(status='Closed') return_queryset = return_queryset.filter(status='Closed')
date_modified = [] date_modified = []
date_modified_not = [] #comment
if date_modified_from and date_modified_to:
if date_modified_from and date_modified_to:
for query in return_queryset: for query in return_queryset:
created = datetime.strftime(query.created, "%Y-%m-%d") created = datetime.strftime(query.created, "%Y-%m-%d")
if created >= date_modified_from and created <= date_modified_to: if created >= date_modified_from and created <= date_modified_to:
date_modified.append(query.id) date_modified.append(query.id)
return_queryset = return_queryset.filter(id__in=date_modified)
else:
date_modified_not.append(query.id)
return_queryset = return_queryset.filter(id__nin=date_modified_not)
date_required = []
date_required_not = []
return_queryset = return_queryset.filter(id__in=date_modified)
date_required = []
if date_required_from and date_required_to: if date_required_from and date_required_to:
for query in return_queryset: for query in return_queryset:
if query.requested_to_target_date: if query.requested_to_target_date:
requested_to_target_date = datetime.strftime( requested_to_target_date = datetime.strftime(
query.requested_to_target_date, query.requested_to_target_date,
"%Y-%m-%d") "%Y-%m-%d")
if requested_to_target_date >= date_required_from and requested_to_target_date <= date_required_to: if requested_to_target_date >= date_required_from and requested_to_target_date <= date_required_to:
date_required.append(query.id) date_required.append(query.id)
return_queryset = return_queryset.filter(id__in=date_required)
else:
date_required_not.append(query.id)
return_queryset = return_queryset.filter(id__nin=date_required_not)
else:
date_required_not.append(query.id)
return_queryset = return_queryset.filter(id__nin=date_required_not)
return_queryset = return_queryset.filter(
id__in=date_required
)
return_queryset return_queryset
except Exception as e: except Exception as e:
...@@ -366,8 +356,18 @@ def attachment_add_edit_delete(form_request_body, ...@@ -366,8 +356,18 @@ def attachment_add_edit_delete(form_request_body,
pk=i['id'] pk=i['id']
) )
data_old = {
'id': frm_instance.id,
'attachment_type': frm_instance.attachment_type,
'attachment_name': frm_instance.attachment_name,
'file_name': frm_instance.file_name,
'description': frm_instance.description,
'file_upload': frm_instance.file_upload.id
}
frm_code = { frm_code = {
"form_code": form_code "form_code": form_code,
"uploaded_by": id_number
} }
data = {**i, **frm_code} data = {**i, **frm_code}
...@@ -377,18 +377,20 @@ def attachment_add_edit_delete(form_request_body, ...@@ -377,18 +377,20 @@ def attachment_add_edit_delete(form_request_body,
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(frm_instance) old_instance = model_to_dict(frm_instance)
self.perform_update(serializer)
new_instance = serializer.data if not data_old == i:
# comment self.perform_update(serializer)
crhistory_save( new_instance = serializer.data
batch_no, # comment
main_action, crhistory_save(
enums.CREnum.UPDATE.value, batch_no,
entity, main_action,
form_code, enums.CREnum.UPDATE.value,
old_instance, entity,
new_instance form_code,
) old_instance,
new_instance
)
else: else:
frm_code = { frm_code = {
......
# Generated by Django 2.2 on 2019-10-09 16:40
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('entities', '0016_auto_20191008_1730'),
]
operations = [
migrations.AlterModelOptions(
name='changerequesttemplateheader',
options={'ordering': ['-created']},
),
]
...@@ -531,6 +531,7 @@ class ChangeRequestTemplateHeader(BaseHeader): ...@@ -531,6 +531,7 @@ class ChangeRequestTemplateHeader(BaseHeader):
class Meta: class Meta:
db_table = 'change_request_template_headers' db_table = 'change_request_template_headers'
ordering = ['-created']
def __str__(self): def __str__(self):
return f'{self.requested_to_template_name}' return f'{self.requested_to_template_name}'
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<head> <head>
<title>RMS: Acknowledgement Notification</title> <title>RMS: Acknowledgement Notification</title>
</head> </head>
<body style="font-family: arial;"> <body style="font-family: Sans-Serif;">
<h3>Resource Management System &#40;RMS&#41;</h3> <h3>Resource Management System &#40;RMS&#41;</h3>
<h3 style="color:#888888;">Change Request Acknowledgement Notification</h3><br> <h3 style="color:#888888;">Change Request Acknowledgement Notification</h3><br>
......
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