Commit a3744da9 authored by John Red Medrano's avatar John Red Medrano

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

* commit '16dd9e7f':
  fixing
  added history endpoint
  model to dict serialier
  reverted to new_instance['id']
  sdfsdf
  returned as dict
  fixed delete error
  error handling
  fixed conflict
  model dict
  comment
  is active
  models to dict implemented
  archive
  added is active
parents e24ed9f0 16dd9e7f
from rest_framework import serializers
from app.entities.models import AllowedCompany
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class AllowedCompanySerializer(serializers.ModelSerializer):
......
from app.entities import models
from rest_framework import serializers
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class ChangeRequestFormApproversSerializer(
......
from app.entities import models
from rest_framework import serializers
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class ChangeRequestFormAttachmentsSerializer(
......
from app.entities import models
from rest_framework import serializers
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class ChangeRequestFormDetailsSerializer(
......
from app.entities import models
from rest_framework import serializers
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from django.db.models import Q
from app.applicationlayer.cms.form.approver.serializers import ChangeRequestFormApproversSerializer
......
......@@ -30,7 +30,7 @@ from app.applicationlayer.cms.utils_cr import (number_generator,
entity_log_bulk)
from app.entities import enums
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
import json
from django.shortcuts import get_object_or_404
from django.db.models import Min
......@@ -442,7 +442,7 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
models.ChangeRequestFormHeader.objects.filter(
form_code=form_code
).update(status='Archived')
).update(is_active=False)
return Response(
{"message": "Change Request successfully archived!"},
......@@ -1058,6 +1058,76 @@ class ChangeRequestFormsViewset(viewsets.ModelViewSet):
return Response(message, status=status.HTTP_200_OK)
@action(
methods=['GET'], detail=False,
url_path='archived', url_name='archived'
)
def archived(self, request, *args, **kwargs):
self.serializer_class = ChangeRequestFormHeaderSerializerList
id_number = self.request.user.code
self.queryset = change_request.list_by_user_archived(id_number)
self.queryset = change_request.filter_base(
self.queryset,
request.query_params.get('company_requested_to'),
request.query_params.get('department_requested_to'),
request.query_params.get('date_modified_from'),
request.query_params.get('date_modified_to'),
request.query_params.get('date_required_from'),
request.query_params.get('date_required_to'),
request.query_params.get('form_type'),
)
queryset = self.filter_queryset(self.queryset)
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 Archived Change Request Form found',
serializer.data
)
return self.get_paginated_response(message)
serializer = self.get_serializer(self.queryset, many=True)
return Response(
serializer.data,
status=status.HTTP_200_OK
)
@action(
methods=['GET'], detail=True,
url_path='history', url_name='history'
)
def history(self, request, *args, **kwargs):
instance = self.get_object()
history = models.ChangeRequestHistory.objects.filter(
Q(form_code=instance) &
Q(main_action='RESUBMIT') &
Q(entity='CR_FRM_APPROVER')
).values()
list_his = []
for data in history:
list_his.append(data['fromValue'])
# print(type(model_to_dict(history)))
# ser = ChangeRequestFormApproversSerializer(data=list_his, many=True)
# ser.is_valid(raise_exception=False)
# print(ser.data)
return Response(
{"results":list_his},
status=status.HTTP_200_OK
)
class ChangeRequestFormPost(APIView):
......
......@@ -2,7 +2,7 @@ from app.entities import models
from rest_framework import serializers
from django.db.models import Q
from drf_writable_nested import WritableNestedModelSerializer
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class ChangeRequestFormApproversSerializer(
......
from app.entities import models
from rest_framework import serializers
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class ChangeRequestFormStakeHoldersSerializer(
......
......@@ -31,7 +31,7 @@ from app.applicationlayer.cms.utils_cr import (number_generator,
generate_template_id,
crhistory_create_save)
from app.entities import enums
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
import json
from django.shortcuts import get_object_or_404
from django.db.models import Min
......
from rest_framework import serializers
from app.entities.models import Department
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class AdminDepartmentSerializer(serializers.ModelSerializer):
......
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Department, AllowedCompany
......
from rest_framework import serializers
from app.entities.models import Department
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class AdminDepartmentSerializer(serializers.ModelSerializer):
......
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Department, AllowedCompany
......
from rest_framework import serializers
from app.entities import models
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class ChangeRequestTemplateApproversSerializer(
......
from rest_framework import serializers
from app.entities import models
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class ChangeRequestTemplateAttachmentsSerializer(
......
from rest_framework import serializers
from app.entities import models
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class ChangeRequestTemplateDetailsSerializer(
......
......@@ -2,7 +2,7 @@ from app.entities import models
from rest_framework import serializers
from django.db.models import Q
from django.conf import settings
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from drf_writable_nested import WritableNestedModelSerializer
from app.applicationlayer.cms.utils_cr import (get_account_details,
get_dept_details,
......@@ -41,9 +41,9 @@ class ChangeRequestTemplatesSerializer(
"contact_no": instance.requested_to_user.contact_no
}
ret['requested_to_company_object'] = model_to_dict(instance.requested_to_company)
ret['requested_to_department_object'] = model_to_dict(instance.requested_to_department)
ret['requested_to_user_object'] = requested_to_user_object
ret['requested_to_company'] = model_to_dict(instance.requested_to_company)
ret['requested_to_department'] = model_to_dict(instance.requested_to_department)
ret['requested_to_user'] = requested_to_user_object
ret['company'] = instance.requested_to_company.name
ret['department'] = instance.requested_to_department.name
......@@ -53,9 +53,9 @@ class ChangeRequestTemplatesSerializer(
return ret
except Exception as e:
ret['requested_to_company_object'] = "none"
ret['requested_to_department_object'] = "none"
ret['requested_to_user_object'] = "none"
ret['requested_to_company'] = "none"
ret['requested_to_department'] = "none"
ret['requested_to_user'] = "none"
ret['company'] = "none"
ret['department'] = "none"
......
......@@ -16,7 +16,7 @@ from app.applicationlayer.utils import (CustomPagination,
from app.applicationlayer.cms.utils_cr import (
entity_log_bulk
)
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from app.entities import enums, models
from django.db.models import Q
......@@ -257,7 +257,7 @@ class ChangeRequestTemplatesViewset(viewsets.ModelViewSet):
"Unable to edit due to existing transaction",
status=status.HTTP_400_BAD_REQUEST
)
#try 1
class ChangeRequestTemplatePost(APIView):
......
from app.entities import models
from rest_framework import serializers
from django.db.models import Q
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from drf_writable_nested import WritableNestedModelSerializer
from app.applicationlayer.cms.utils_cr import (get_account_details,
get_dept_details,
......
from rest_framework import serializers
from app.entities import models
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class ChangeRequestTemplateStakeHoldersSerializer(
......
......@@ -18,7 +18,7 @@ from app.applicationlayer.utils import (CustomPagination,
from app.applicationlayer.cms.utils_cr import (
entity_log_bulk
)
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from app.entities import enums, models
from django.db.models import Q
......
......@@ -10,7 +10,7 @@ from app.applicationlayer.utils import main_threading, notification_create
from app.helper.email_service import sender
from app.applicationlayer.utils import log_save
from app.entities import enums
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from rest_framework.exceptions import ParseError
from django.db import IntegrityError
from rest_framework.exceptions import APIException
......
......@@ -4,7 +4,7 @@ import ast
from django.contrib.auth.hashers import make_password, check_password
import re
from django.contrib.auth import authenticate
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class UserSerializer(serializers.ModelSerializer):
......
......@@ -10,7 +10,7 @@ from rest_framework.decorators import action
from django.contrib.auth import authenticate
from django.contrib.auth.hashers import check_password
from rest_framework.response import Response
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from app.entities.models import (
User, EntityLog, PasswordReset, Application, UserImage
)
......
......@@ -3,7 +3,7 @@ from django.db import transaction
from app.helper import decorators
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Application, EntityLog
......@@ -94,7 +94,7 @@ class ApplicationViewSet(viewsets.ModelViewSet):
log_save(
enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.APPLICATION.value,
new_instance['id'],
old_instance['id'],
old_instance,
new_instance
)
......
......@@ -2,7 +2,7 @@ from app.entities import enums
from django.db import transaction
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Company, EntityLog
......@@ -95,7 +95,7 @@ class CompanyViewSet(viewsets.ModelViewSet):
log_save(
enums.LogEnum.DELETED.value,
enums.LogEntitiesEnum.COMPANY.value,
new_instance['id'],
old_instance['id'],
old_instance,
new_instance
)
......
......@@ -2,7 +2,7 @@ from app.entities import enums
from django.db import transaction
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Department, EntityLog
......@@ -95,7 +95,7 @@ class DepartmentViewSet(viewsets.ModelViewSet):
log_save(
enums.LogEnum.DELETED.value,
enums.LogEntitiesEnum.DEPARTMENT.value,
new_instance['id'],
old_instance['id'],
old_instance,
new_instance
)
......
......@@ -2,7 +2,7 @@ from app.entities import enums
from django.db import transaction
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Module, EntityLog
......@@ -150,7 +150,7 @@ class ModuleViewSet(viewsets.ModelViewSet):
log_save(
enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.MODULE.value,
new_instance['id'],
old_instance['id'],
old_instance,
new_instance
)
......
......@@ -3,7 +3,7 @@ import json
from app.entities import enums
# from app.businesslayer import log_save
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from django.shortcuts import render
from rest_framework.response import Response
......
from rest_framework import serializers
from app.entities.models import User
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class AdminAccountSerializer(serializers.ModelSerializer):
......
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import User
......
from rest_framework import serializers
from app.entities.models import Department
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
class AdminDepartmentSerializer(serializers.ModelSerializer):
......
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Department
......
......@@ -4,14 +4,37 @@ from rest_framework.response import Response
from functools import wraps
from app.entities import enums
from app.entities.models import EntityLog, Notification
from django.forms.models import model_to_dict
from django.conf import settings
from websocket import create_connection
import json
from rest_framework import status
from rest_framework import serializers
import copy
import json
REALTIMESERVER_IP = settings.REALTIMESERVER_IP
def model_to_dict(instance):
try:
mySerializer = copy.deepcopy(DynamicSerializer)
mySerializer.Meta.model = instance.__class__
return mySerializer(instance).data
except Exception as e:
return 'Serialization Error'
class DynamicSerializer(serializers.ModelSerializer):
class Meta:
model = None
fields = '__all__'
class CustomPagination(PageNumberPagination):
page_size = 10
max_page_size = 50
......@@ -40,7 +63,7 @@ class CustomPagination(PageNumberPagination):
# req_method = enums.LogEnum.DELETED.value
# elif req_method.upper == 'PUT':
# req_method = enums.LogEnum.UPDATE.value
# from_instance = model_to_dict(self.get_object())
# from_instance = from app.applicationlayer.utils import model_to_dict(self.get_object())
# print("self.serializer.data['id']")
# print(self.serializer.data['id'])
# EntityLog.objects.create(
......@@ -57,7 +80,7 @@ def log_save(action, entity, row_id, fromValue, toValue):
EntityLog.objects.create(
action=action,
entity=entity,
row_id=row_id,
row_id=int(row_id),
fromValue=fromValue,
toValue=toValue
)
......
......@@ -16,7 +16,7 @@ from app.applicationlayer.cms.utils_cr import (
number_generator, crhistory_save, entity_log_bulk,
crhistory_log_bulk_delete
)
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from app.entities import enums, models
from app.applicationlayer.utils import log_save, CustomPagination
from app.applicationlayer.cms.template import serializers
......@@ -32,6 +32,7 @@ def list_by_user(user_id_number):
).values('group_pivots')
return_queryset = models.ChangeRequestFormHeader.objects.filter(
Q(is_active=True) |
Q(frm_approvers__user__code=user_id_number) |
Q(frm_stakes__user__code=user_id_number) |
Q(requested_by_user=user_id_number) |
......@@ -49,16 +50,43 @@ def list_by_user(user_id_number):
return return_queryset
def list_by_user_archived(user_id_number):
try:
priviledgeCrs = models.AllowedCompany.objects.filter(
Q(id_number=user_id_number) &
Q(view_all_change_request=True)
).values('group_pivots')
return_queryset = models.ChangeRequestFormHeader.objects.filter(
Q(frm_approvers__user__code=user_id_number) |
Q(frm_stakes__user__code=user_id_number) |
Q(requested_by_user=user_id_number) |
Q(requested_to_department__in=priviledgeCrs)
).exclude(
Q(status__icontains='Draft') &
~Q(requested_by_user=user_id_number)
).distinct()
return return_queryset
except Exception as e:
return_queryset = None
return return_queryset
def list_by_user_without_dept(user_id_number):
try:
return_queryset = models.ChangeRequestFormHeader.objects.filter(
Q(is_active=True) |
Q(frm_approvers__user__code=user_id_number) |
Q(frm_stakes__user__code=user_id_number) |
Q(requested_by_user=user_id_number)
).exclude(
Q(status__icontains='Draft') &
~Q(requested_by_user=user_id_number)
~Q(requested_by_user=user_id_number) |
Q(status__icontains='Archived')
).distinct()
return return_queryset
......@@ -274,10 +302,9 @@ def form_add_edit_delete(form_request_body,
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(frm_instance)
self.perform_update(serializer)
new_instance = serializer.data
# comment
crhistory_save(
batch_no,
main_action,
......
......@@ -15,7 +15,7 @@ from django.db.models import Q
from app.applicationlayer.cms.utils_cr import (
number_generator, crhistory_save, entity_log_bulk
)
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from app.entities import enums, models
from app.applicationlayer.utils import log_save, CustomPagination
from app.applicationlayer.cms.template import serializers
......@@ -87,7 +87,7 @@ def tmp_add_edit_delete(tmp_request_body,
log_save(
enums.LogEnum.ADD.value,
enum_type,
new_instance['id'],
old_instance['id'],
'',
new_instance
)
......
from rest_framework import viewsets, status
from rest_framework.response import Response
from django.forms.models import model_to_dict
from app.applicationlayer.utils import model_to_dict
from rest_framework.filters import SearchFilter, OrderingFilter
from django_filters import rest_framework as filters
from app.entities.models import Department
......
# Generated by Django 2.2 on 2019-10-02 21:08
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0012_auto_20191002_1023'),
]
operations = [
migrations.AddField(
model_name='changerequestformheader',
name='is_active',
field=models.BooleanField(default=True),
),
migrations.AddField(
model_name='changerequesttemplateheader',
name='is_active',
field=models.BooleanField(default=True),
),
]
......@@ -397,6 +397,8 @@ class BaseHeader(models.Model):
created = models.DateTimeField(auto_now_add=True)
is_active = models.BooleanField(default=True)
class Meta:
abstract = 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