Commit a06c967a authored by Gladys Forte's avatar Gladys Forte

Merge branch 'product-dev' into 'product-sit'

Product dev

See merge request rms/Backend/api-main-service!1003
parents 4f18782d b12f3a69
from app.entities.models import AMSAsset
from rest_framework import serializers
class AMSAssetSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['asset_type'] = instance.asset_type.name
ret['in_qty'] = instance.ams_asset_to_assetdetail.filter(status='In-Store').count()
ret['out_qty'] = instance.ams_asset_to_assetdetail.filter(status='Deployed').count()
ret['unavailable'] = instance.ams_asset_to_assetdetail.filter(status='Faulty').count()
ret['created_by'] = instance.created_by.name
return ret
class Meta:
model = AMSAsset
fields = '__all__'
from django_filters import rest_framework as filters
from app.entities.models import AMSAsset
class AMSAssetFilter(filters.FilterSet):
class Meta:
model = AMSAsset
fields = '__all__'
from app.entities.models import AMSAsset
from rest_framework import viewsets, status
from rest_framework.response import Response
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter
from app.applicationlayer.ams.asset.table_filters import AMSAssetFilter
from app.applicationlayer.ams.asset import serializers
from django.db import transaction
from app.applicationlayer.utils import(
CustomPagination, status_message_response
)
from rest_framework.decorators import action
from app.applicationlayer.utils import log_save, enums
from app.applicationlayer.utils import model_to_dict
class AMSAssetViewSet(viewsets.ModelViewSet):
queryset = AMSAsset.objects.all()
serializer_class = serializers.AMSAssetSerializer
pagination_class = CustomPagination
lookup_field = 'code'
filter_backends = (
DjangoFilterBackend, SearchFilter,
OrderingFilter
)
ordering_fields = '__all__'
search_filter = (
'code',
'name',
'asset_type__name'
)
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_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 Asset 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
)
@transaction.atomic
def create(self, request, *args, **kwargs):
form = request.data
serializer = self.get_serializer(data=form)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
message = status_message_response(
201, 'success',
'New Asset created', serializer.data
)
return Response(
message
)
def update(self, request, *args, **kwargs):
try:
partial = kwargs.pop('partial', False)
instance = self.get_object()
form = request.data
form['created_by'] = request.user.code
serializer = self.get_serializer(instance, data=form, partial=partial)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(instance)
self.perform_update(serializer)
new_instance = serializer.data
log_save(
enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.AMSReport.value,
old_instance['id'],
old_instance,
new_instance
)
return Response(serializer.data)
except IntegrityError as e:
return Response(
{"message": "Cannot delete or update this reocrd it has foreign key constraint to other tables"},
status=status.HTTP_400_BAD_REQUEST
)
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
return Response(serializer.data)
@transaction.atomic
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
self.perform_destroy(instance)
return Response(status=status.HTTP_204_NO_CONTENT)
#comment
@action(
methods=['GET'], detail=False,
url_path='archived', url_name='archived'
)
def archived(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
queryset = queryset.filter(is_active=False)
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 Assets 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
)
\ No newline at end of file
...@@ -5,7 +5,24 @@ from app.applicationlayer.utils import model_to_dict ...@@ -5,7 +5,24 @@ from app.applicationlayer.utils import model_to_dict
class AssetGroupSerializer(serializers.ModelSerializer): class AssetGroupSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
asset_stocks = models.AMSAssetStock.objects.filter(asset_group=instance.code)
asset_counter = 0
asset_type_counter = 0
for asset_stock in asset_stocks:
asset_counter = asset_counter + models.AMSAsset.objects.filter(code=asset_stock.asset.code).count()
asset_type_counter = asset_type_counter + 1
ret['asset_type_count'] = asset_type_counter
ret['asset_count'] = asset_counter
ret['asset_stock_count'] = instance.ams_asset_to_assetgroup.count()
return ret
class Meta: class Meta:
model = models.AssetGroup model = models.AMSAssetGroup
fields = '__all__' fields = '__all__'
read_only_fields = ['created', 'code'] read_only_fields = ['created', 'created_by', 'code']
\ No newline at end of file \ No newline at end of file
from django_filters import rest_framework as filters from django_filters import rest_framework as filters
from app.entities.models import AssetGroup from app.entities.models import AMSAssetGroup
class AssetGroupFilter(filters.FilterSet): class AssetGroupFilter(filters.FilterSet):
class Meta: class Meta:
model = AssetGroup model = AMSAssetGroup
fields = '__all__' fields = '__all__'
\ No newline at end of file
...@@ -11,25 +11,30 @@ from app.applicationlayer.utils import ( ...@@ -11,25 +11,30 @@ from app.applicationlayer.utils import (
) )
from app.helper import decorators from app.helper import decorators
from django.db import transaction from django.db import transaction
from rest_framework.decorators import action
class AssetGroupViewset(viewsets.ModelViewSet): class AssetGroupViewset(viewsets.ModelViewSet):
queryset = models.AssetGroup.objects.all() queryset = models.AMSAssetGroup.objects.all()
serializer_class = serializers.AssetGroupSerializer serializer_class = serializers.AssetGroupSerializer
pagination_class = CustomPagination pagination_class = CustomPagination
lookup_field = "code" lookup_field = "code"
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter) filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
ordering_fields = '__all__' ordering_fields = '__all__'
search_fields = ( search_fields = (
'code', 'name', 'asset_group' 'code', 'name'
) )
@transaction.atomic @transaction.atomic
def create(self, request, *args, **kwargs): def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data) serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True) # serializer.is_valid(raise_exception=True)
if serializer.is_valid(raise_exception=True):
serializer.save(created_by=self.request.user)
self.perform_create(serializer) self.perform_create(serializer)
message = status_message_response( message = status_message_response(
...@@ -78,3 +83,33 @@ class AssetGroupViewset(viewsets.ModelViewSet): ...@@ -78,3 +83,33 @@ class AssetGroupViewset(viewsets.ModelViewSet):
self.perform_destroy(instance) self.perform_destroy(instance)
return Response(status=status.HTTP_204_NO_CONTENT) return Response(status=status.HTTP_204_NO_CONTENT)
@action(
methods=['GET'], detail=False,
url_path='archived', url_name='archived'
)
def archived(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
queryset = queryset.filter(is_active=False)
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 Asset Groups 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
)
from app.entities.models import AMSAssetStock
from rest_framework import serializers
class AMSAssetStockSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['asset_group'] = instance.asset_group.name
ret['asset'] = instance.asset.name
ret['asset_type'] = instance.asset.asset_type.name
ret['manager'] = instance.manager.name
ret['user_client'] = instance.user_client.name
# ret['created_by'] = {
# "name": instance.created_by.name,
# "code": instance.created_by.code
# }
return ret
class Meta:
model = AMSAssetStock
fields = '__all__'
\ No newline at end of file
from django_filters import rest_framework as filters
from app.entities.models import AMSAssetStock
class AMSAssetStockFilter(filters.FilterSet):
class Meta:
model = AMSAssetStock
fields = '__all__'
\ No newline at end of file
from app.entities.models import AMSAssetStock
from rest_framework import viewsets, status
from rest_framework.response import Response
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter
from app.applicationlayer.ams.asset_stock.table_filters import AMSAssetStockFilter
from app.applicationlayer.ams.asset_stock import serializers
from django.db import transaction
from app.applicationlayer.utils import(
CustomPagination, status_message_response
)
from rest_framework.decorators import action
class AMSAssetStockViewSet(viewsets.ModelViewSet):
queryset = AMSAssetStock.objects.all()
serializer_class = serializers.AMSAssetStockSerializer
pagination_class = CustomPagination
lookup_field = 'code'
filter_backends = (
DjangoFilterBackend, SearchFilter,
OrderingFilter
)
ordering_fields = '__all__'
search_filter = (
'code',
'name',
'asset_group__name',
'asset__name',
'asset_type__name',
)
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_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 Asset Stock list 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
)
@transaction.atomic
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
message = status_message_response(
201, 'success',
'New Asset Stock created', serializer.data
)
return Response(
message
)
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
return Response(serializer.data)
@transaction.atomic
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
self.perform_destroy(instance)
return Response(status=status.HTTP_204_NO_CONTENT)
@action(
methods=['GET'], detail=False,
url_path='archived', url_name='archived'
)
def archived(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
queryset = queryset.filter(is_active=False)
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 Asset Stocks 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
)
from app.entities import models
from rest_framework import serializers
from app.applicationlayer.utils import model_to_dict
class AssetTypeSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
assets = instance.ams_asset_type.select_related()
ams_stock_counter = 0
for asset in assets:
ams_stock_counter = ams_stock_counter + models.AMSAsset.objects.get(code=asset.code).ams_asset_to_assetdetail.count()
ret['asset_count'] = assets.count()
ret['asset_stock_count'] = ams_stock_counter
return ret
class Meta:
model = models.AMSAssetType
fields = '__all__'
read_only_fields = ['created', 'created_by', 'code']
\ No newline at end of file
from django_filters import rest_framework as filters
from app.entities.models import AMSAssetType
class AssetTypeFilter(filters.FilterSet):
class Meta:
model = AMSAssetType
fields = '__all__'
\ No newline at end of file
from app.entities import models
from rest_framework import viewsets, status
from rest_framework.response import Response
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter
from app.applicationlayer.ams.asset_type.table_filters import AssetTypeFilter
from app.applicationlayer.ams.asset_type import serializers
from app.applicationlayer.utils import (
CustomPagination, status_message_response
)
from app.helper import decorators
from django.db import transaction
from rest_framework.decorators import action
from app.applicationlayer.utils import model_to_dict
from app.applicationlayer.utils import log_save
from app.entities import enums
class AssetTypeViewset(viewsets.ModelViewSet):
queryset = models.AMSAssetType.objects.all()
serializer_class = serializers.AssetTypeSerializer
pagination_class = CustomPagination
lookup_field = "code"
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
ordering_fields = '__all__'
search_fields = (
'code', 'name'
)
@transaction.atomic
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
# serializer.is_valid(raise_exception=True)
# 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)
if serializer.is_valid(raise_exception=True):
serializer.save(created_by=self.request.user)
self.perform_create(serializer)
message = status_message_response(
201, 'success',
'New Asset Type created', serializer.data
)
return Response(
message
)
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
# queryset = models.AMSAssetType.objects.annotate(
# view_count=Sum(
# When(relations_item__has_viewed=True, then=1),
# output_field=IntegerField(),
# ),
# love_count=Sum(
# When(relations_item__has_loved=True, then=1),
# output_field=IntegerField(),
# ),
# )
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 Asset Types 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
)
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
return Response(serializer.data)
@transaction.atomic
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
instance.is_active = False
instance.save()
# new_instance = model_to_dict(instance)
# log_save(
# enums.LogEnum.DELETED.value,
# enums.LogEntitiesEnum.,
# new_instance['id'],
# new_instance,
# ''
# )
return Response(status=status.HTTP_204_NO_CONTENT)
@action(
methods=['GET'], detail=False,
url_path='archived', url_name='archived'
)
def archived(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
queryset = queryset.filter(is_active=False)
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 Asset Types 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
)
#restore archived asset_type
def partial_update(self, request, *args, **kwargs):
try:
kwargs['partial'] = True
code = self.kwargs['code']
instance = models.AMSAssetType.objects.filter(
code=code
)
instance.update(is_active=True)
message = status_message_response(
200, 'success',
'Archived Asset Type restored',
''
)
return Response(message, status=status.HTTP_200_OK)
except Exception as e:
message = status_message_response(
500, 'failed',
'Request was not able to process' + str(e), []
)
return Response(message,
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
\ No newline at end of file
from app.entities import models
from rest_framework import serializers
from app.applicationlayer.utils import model_to_dict
class AMSReportSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['created_by'] = instance.created_by.name
ret['report_type'] = instance.report_type.name
ret['unique_identifier'] = instance.asset_stock.unique_identifier
ret['asset'] = instance.asset_stock.asset.name
ret['asset_type'] = instance.asset_stock.asset.asset_type.name
del ret['asset_stock']
return ret
class Meta:
model = models.AMSReport
fields = '__all__'
\ No newline at end of file
from django_filters import rest_framework as filters
from app.entities.models import AMSReport
class AMSReportFilter(filters.FilterSet):
class Meta:
model = AMSReport
fields = '__all__'
\ No newline at end of file
from app.entities import models
from rest_framework import viewsets, status
from rest_framework.response import Response
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter
from app.applicationlayer.ams.report.table_filters import AMSReportFilter
from app.applicationlayer.ams.report import serializers
from app.applicationlayer.utils import (
CustomPagination, status_message_response
)
from app.helper import decorators
from django.db import transaction
from app.applicationlayer.utils import model_to_dict
from app.applicationlayer.utils import log_save, enums
from django.db import IntegrityError
from rest_framework.decorators import action
class AMSReportViewset(viewsets.ModelViewSet):
queryset = models.AMSReport.objects.all()
serializer_class = serializers.AMSReportSerializer
pagination_class = CustomPagination
lookup_field = "code"
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
ordering_fields = '__all__'
search_fields = (
'code', 'name'
)
@transaction.atomic
def create(self, request, *args, **kwargs):
form = request.data
form['created_by'] = request.user.code
serializer = self.get_serializer(data=form)
# serializer.is_valid(raise_exception=True)
if serializer.is_valid(raise_exception=True):
serializer.save(created_by=self.request.user)
self.perform_create(serializer)
message = status_message_response(
201, 'success',
'New Report created', serializer.data
)
return Response(
message
)
def update(self, request, *args, **kwargs):
try:
partial = kwargs.pop('partial', False)
instance = self.get_object()
form = request.data
form['created_by'] = request.user.code
serializer = self.get_serializer(instance, data=form, partial=partial)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(instance)
self.perform_update(serializer)
new_instance = serializer.data
log_save(
enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.AMSReport.value,
old_instance['id'],
old_instance,
new_instance
)
return Response(serializer.data)
except IntegrityError as e:
print(e)
return Response(
{"message": "Cannot delete or update this reocrd it has foreign key constraint to other tables"},
status=status.HTTP_400_BAD_REQUEST
)
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset()).filter(is_active=True)
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 Report 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
)
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
return Response(serializer.data)
@transaction.atomic
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
instance.is_active = False
instance.save()
new_instance = model_to_dict(instance)
log_save(
enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.AMSReport.value,
new_instance['id'],
new_instance,
''
)
return Response(status=status.HTTP_204_NO_CONTENT)
@action(
methods=['GET'], detail=False,
url_path='archived', url_name='archived'
)
def archived(self, request, *args, **kwargs):
self.serializer_class = serializers.AMSReportSerializer
queryset = self.filter_queryset(self.queryset).filter(is_active=False)
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 Report 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=['PATCH'], detail=True,
url_path='restore', url_name='restore'
)
def restore(self, request, code=None):
instance = self.get_object()
instance.is_active = True
instance.save()
new_instance = model_to_dict(instance)
log_save(
enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.AMSReport.value,
new_instance['id'],
new_instance,
''
)
return Response(status=status.HTTP_204_NO_CONTENT)
from app.entities import models
from rest_framework import serializers
from app.applicationlayer.utils import model_to_dict
class AMSReportTypeSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
ret = super().to_representation(instance)
ret['created_by'] = instance.created_by.name
return ret
class Meta:
model = models.AMSReportType
fields = '__all__'
\ No newline at end of file
from django_filters import rest_framework as filters
from app.entities.models import AMSReportType
class AMSReportTypeFilter(filters.FilterSet):
class Meta:
model = AMSReportType
fields = '__all__'
\ No newline at end of file
from app.entities import models
from rest_framework import viewsets, status
from rest_framework.response import Response
from django_filters import rest_framework as filters
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter
from app.applicationlayer.ams.report_type.table_filters import AMSReportTypeFilter
from app.applicationlayer.ams.report_type import serializers
from app.applicationlayer.utils import (
CustomPagination, status_message_response
)
from app.helper import decorators
from django.db import transaction
from app.applicationlayer.utils import model_to_dict
from app.applicationlayer.utils import log_save, enums
from django.db import IntegrityError
from rest_framework.decorators import action
class AMSReportTypeViewset(viewsets.ModelViewSet):
queryset = models.AMSReportType.objects.all()
serializer_class = serializers.AMSReportTypeSerializer
pagination_class = CustomPagination
lookup_field = "code"
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
ordering_fields = '__all__'
search_fields = (
'code', 'name'
)
@transaction.atomic
def create(self, request, *args, **kwargs):
form = request.data
form['created_by'] = request.user.code
serializer = self.get_serializer(data=form)
# serializer.is_valid(raise_exception=True)
if serializer.is_valid(raise_exception=True):
serializer.save(created_by=self.request.user)
self.perform_create(serializer)
message = status_message_response(
201, 'success',
'New Report Type created', serializer.data
)
return Response(
message
)
def update(self, request, *args, **kwargs):
try:
partial = kwargs.pop('partial', False)
instance = self.get_object()
form = request.data
form['created_by'] = request.user.code
serializer = self.get_serializer(instance, data=form, partial=partial)
serializer.is_valid(raise_exception=True)
old_instance = model_to_dict(instance)
self.perform_update(serializer)
new_instance = serializer.data
log_save(
enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.AMSReportType.value,
old_instance['id'],
old_instance,
new_instance
)
return Response(serializer.data)
except IntegrityError as e:
print(e)
return Response(
{"message": "Cannot delete or update this reocrd it has foreign key constraint to other tables"},
status=status.HTTP_400_BAD_REQUEST
)
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.queryset).filter(is_active=True)
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 Report Types 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
)
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
return Response(serializer.data)
@transaction.atomic
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
instance.is_active = False
instance.save()
new_instance = model_to_dict(instance)
log_save(
enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.AMSReportType.value,
new_instance['id'],
new_instance,
''
)
return Response(status=status.HTTP_204_NO_CONTENT)
@action(
methods=['GET'], detail=False,
url_path='archived', url_name='archived'
)
def archived(self, request, *args, **kwargs):
self.serializer_class = serializers.AMSReportTypeSerializer
queryset = self.filter_queryset(self.queryset).filter(is_active=False)
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 Report type 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=['PATCH'], detail=True,
url_path='restore', url_name='restore'
)
def restore(self, request, code=None):
instance = self.get_object()
instance.is_active = True
instance.save()
new_instance = model_to_dict(instance)
log_save(
enums.LogEnum.UPDATE.value,
enums.LogEntitiesEnum.AMSReportType.value,
new_instance['id'],
new_instance,
''
)
return Response(status=status.HTTP_204_NO_CONTENT)
...@@ -6,11 +6,21 @@ from rest_framework.urlpatterns import format_suffix_patterns ...@@ -6,11 +6,21 @@ from rest_framework.urlpatterns import format_suffix_patterns
from app.applicationlayer.ams.asset_group import views as assetgroup from app.applicationlayer.ams.asset_group import views as assetgroup
from app.applicationlayer.ams.ams_privilege import views as amsprivilege from app.applicationlayer.ams.ams_privilege import views as amsprivilege
from app.applicationlayer.ams.ams_user_type.views import AMSUserTypeViewSet from app.applicationlayer.ams.ams_user_type.views import AMSUserTypeViewSet
from app.applicationlayer.ams.asset_type import views as assettype
from app.applicationlayer.ams.asset.views import AMSAssetViewSet
from app.applicationlayer.ams.asset_stock.views import AMSAssetStockViewSet
from app.applicationlayer.ams.report_type.views import AMSReportTypeViewset
from app.applicationlayer.ams.report.views import AMSReportViewset
router = routers.DefaultRouter() router = routers.DefaultRouter()
router.register(r'asset-group', assetgroup.AssetGroupViewset) router.register(r'asset-group', assetgroup.AssetGroupViewset)
router.register(r'asset-type', assettype.AssetTypeViewset)
router.register(r'ams-privilege', amsprivilege.AMSPrivilegeViewSet) router.register(r'ams-privilege', amsprivilege.AMSPrivilegeViewSet)
router.register(r'assets', AMSAssetViewSet)
router.register(r'assets-stock-list', AMSAssetStockViewSet)
router.register(r'report-type', AMSReportTypeViewset)
router.register(r'report', AMSReportViewset)
urlpatterns = [ urlpatterns = [
path('', include(router.urls)), path('', include(router.urls)),
......
...@@ -17,7 +17,8 @@ from app.applicationlayer.utils import model_to_dict ...@@ -17,7 +17,8 @@ from app.applicationlayer.utils import model_to_dict
from app.entities.models import ( from app.entities.models import (
User, EntityLog, PasswordReset, Application, UserImage, User, EntityLog, PasswordReset, Application, UserImage,
ChangeRequestFormHeader, ChangeRequestTemplateHeader, ChangeRequestFormHeader, ChangeRequestTemplateHeader,
AllowedCompany, Company, Department, UserHistory AllowedCompany, Company, Department, UserHistory,
AMSPrivilege
) )
from django.contrib.auth.hashers import make_password from django.contrib.auth.hashers import make_password
...@@ -32,6 +33,12 @@ from app.applicationlayer.utils import ( ...@@ -32,6 +33,12 @@ from app.applicationlayer.utils import (
CustomPagination, status_message_response, log_save, CustomPagination, status_message_response, log_save,
main_threading main_threading
) )
import os
import configparser
config = configparser.ConfigParser()
config_file = os.path.join('./', 'env.ini')
config.read(config_file)
class UserViewSet(viewsets.ModelViewSet): class UserViewSet(viewsets.ModelViewSet):
...@@ -181,7 +188,6 @@ class UserViewSet(viewsets.ModelViewSet): ...@@ -181,7 +188,6 @@ class UserViewSet(viewsets.ModelViewSet):
partial = kwargs.pop('partial', False) partial = kwargs.pop('partial', False)
instance = self.get_object() instance = self.get_object()
cms_form = ChangeRequestFormHeader.objects.filter( cms_form = ChangeRequestFormHeader.objects.filter(
Q(frm_approvers__user__code=instance.code) | Q(frm_approvers__user__code=instance.code) |
Q(frm_stakes__user__code=instance.code) | Q(frm_stakes__user__code=instance.code) |
...@@ -220,16 +226,25 @@ class UserViewSet(viewsets.ModelViewSet): ...@@ -220,16 +226,25 @@ class UserViewSet(viewsets.ModelViewSet):
rms = Application.objects.filter(id=1).values('code').first() rms = Application.objects.filter(id=1).values('code').first()
app.append(rms['code']) app.append(rms['code'])
app = Application.objects.filter( app_data = Application.objects.filter(
code__in=app code__in=app
) )
if not config['APPLICATION_CODE']['AMS'] in app:
ams_priv = AMSPrivilege.objects.filter(
id_number=instance.code
).delete()
if not config['APPLICATION_CODE']['CMS'] in app:
cms_priv = AllowedCompany.objects.filter(
id_number=instance.code
).delete()
instance = User.objects.get( instance = User.objects.get(
id=serializer.data['id'] id=serializer.data['id']
) )
instance.application.set(app_data)
instance.application.set(app)
new_instance = serializer.data new_instance = serializer.data
log_save( log_save(
......
...@@ -31,13 +31,17 @@ class GenerateCode(Enum): ...@@ -31,13 +31,17 @@ class GenerateCode(Enum):
FORM_DETAIL = 'FRMDETAIL' FORM_DETAIL = 'FRMDETAIL'
ETL = 'ETL' ETL = 'ETL'
# ASSET_GROUP = 'AMSGRP'
CMS_SETTINGS = "CMSSET" CMS_SETTINGS = "CMSSET"
ASSET_TYPE = 'ASSTTYPE' ASSET_TYPE = 'ASSTTYPE'
ASSET = 'ASST' ASSET = 'ASST'
ASSET_STOCK = 'ASSTSTOCK' ASSET_STOCK = 'ASSTSTOCK'
ASSET_GROUP = 'ASSTGRP' ASSET_GROUP = 'ASSTGRP'
ASSET_STOCK_SUPPORT = 'ASSTSTOCKSUP'
REPORT_TYPE = 'RPTTYPE'
REPORT = 'RPT'
FORM_ASSET = 'FRMASSET'
''' '''
********* *********
...@@ -72,6 +76,15 @@ class LogEntitiesEnum(Enum): ...@@ -72,6 +76,15 @@ class LogEntitiesEnum(Enum):
ChangeRequestFormDetails = "ChangeRequestFormDetails" ChangeRequestFormDetails = "ChangeRequestFormDetails"
ChangeRequestSettings = 'ChangeRequestSettings' ChangeRequestSettings = 'ChangeRequestSettings'
AMSReportType = 'AMSReportType'
AMSReport = 'AMSReport'
AMSAsset = 'AMSAsset'
AMSAssetStock = 'AMSAssetStock'
AMSAssetStockSupport = 'AMSAssetStockSupport'
AMSAssetType = 'AMSAssetType'
AMSAssetGroup = 'AMSAssetGroup'
''' '''
********* *********
CR HISTORY ENUMS CR HISTORY ENUMS
......
This diff is collapsed.
# Generated by Django 2.2 on 2020-03-18 15:35
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0006_auto_20200318_1314'),
]
operations = [
migrations.AlterField(
model_name='entitylog',
name='entity',
field=models.CharField(choices=[('USER', 'USER'), ('APPLICATION', 'APPLICATION'), ('COMPANY', 'COMPANY'), ('DEPARTMENT', 'DEPARTMENT'), ('MODULE', 'MODULE'), ('DELEGATION', 'DELEGATION'), ('ChangeRequestTemplateHeader', 'ChangeRequestTemplateHeader'), ('ChangeRequestTemplateApprovers', 'ChangeRequestTemplateApprovers'), ('ChangeRequestTemplateStakeHolders', 'ChangeRequestTemplateStakeHolders'), ('ChangeRequestTemplateAttachments', 'ChangeRequestTemplateAttachments'), ('ChangeRequestTemplateDetails', 'ChangeRequestTemplateDetails'), ('ChangeRequestFormHeader', 'ChangeRequestFormHeader'), ('ChangeRequestFormApprovers', 'ChangeRequestFormApprovers'), ('ChangeRequestFormStakeHolders', 'ChangeRequestFormStakeHolders'), ('ChangeRequestFormAttachments', 'ChangeRequestFormAttachments'), ('ChangeRequestFormDetails', 'ChangeRequestFormDetails'), ('ChangeRequestSettings', 'ChangeRequestSettings'), ('AMSReportType', 'AMSReportType'), ('AMSReport', 'AMSReport'), ('AMSASSET', 'AMSASSET')], default='Add', max_length=50),
),
]
# Generated by Django 2.2 on 2020-03-18 15:45
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0007_auto_20200318_1535'),
]
operations = [
migrations.AlterField(
model_name='entitylog',
name='entity',
field=models.CharField(choices=[('USER', 'USER'), ('APPLICATION', 'APPLICATION'), ('COMPANY', 'COMPANY'), ('DEPARTMENT', 'DEPARTMENT'), ('MODULE', 'MODULE'), ('DELEGATION', 'DELEGATION'), ('ChangeRequestTemplateHeader', 'ChangeRequestTemplateHeader'), ('ChangeRequestTemplateApprovers', 'ChangeRequestTemplateApprovers'), ('ChangeRequestTemplateStakeHolders', 'ChangeRequestTemplateStakeHolders'), ('ChangeRequestTemplateAttachments', 'ChangeRequestTemplateAttachments'), ('ChangeRequestTemplateDetails', 'ChangeRequestTemplateDetails'), ('ChangeRequestFormHeader', 'ChangeRequestFormHeader'), ('ChangeRequestFormApprovers', 'ChangeRequestFormApprovers'), ('ChangeRequestFormStakeHolders', 'ChangeRequestFormStakeHolders'), ('ChangeRequestFormAttachments', 'ChangeRequestFormAttachments'), ('ChangeRequestFormDetails', 'ChangeRequestFormDetails'), ('ChangeRequestSettings', 'ChangeRequestSettings'), ('AMSReportType', 'AMSReportType'), ('AMSReport', 'AMSReport'), ('AMSAsset', 'AMSAsset'), ('AMSAssetStock', 'AMSAssetStock'), ('AMSAssetStockSupport', 'AMSAssetStockSupport')], default='Add', max_length=50),
),
]
# Generated by Django 2.2 on 2020-03-18 17:24
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0008_auto_20200318_1545'),
]
operations = [
migrations.AlterField(
model_name='entitylog',
name='entity',
field=models.CharField(choices=[('USER', 'USER'), ('APPLICATION', 'APPLICATION'), ('COMPANY', 'COMPANY'), ('DEPARTMENT', 'DEPARTMENT'), ('MODULE', 'MODULE'), ('DELEGATION', 'DELEGATION'), ('ChangeRequestTemplateHeader', 'ChangeRequestTemplateHeader'), ('ChangeRequestTemplateApprovers', 'ChangeRequestTemplateApprovers'), ('ChangeRequestTemplateStakeHolders', 'ChangeRequestTemplateStakeHolders'), ('ChangeRequestTemplateAttachments', 'ChangeRequestTemplateAttachments'), ('ChangeRequestTemplateDetails', 'ChangeRequestTemplateDetails'), ('ChangeRequestFormHeader', 'ChangeRequestFormHeader'), ('ChangeRequestFormApprovers', 'ChangeRequestFormApprovers'), ('ChangeRequestFormStakeHolders', 'ChangeRequestFormStakeHolders'), ('ChangeRequestFormAttachments', 'ChangeRequestFormAttachments'), ('ChangeRequestFormDetails', 'ChangeRequestFormDetails'), ('ChangeRequestSettings', 'ChangeRequestSettings'), ('AMSReportType', 'AMSReportType'), ('AMSReport', 'AMSReport'), ('AMSAsset', 'AMSAsset'), ('AMSAssetStock', 'AMSAssetStock'), ('AMSAssetStockSupport', 'AMSAssetStockSupport'), ('AMSAssetType', 'AMSAssetType'), ('AMSAssetGroup', 'AMSAssetGroup')], default='Add', max_length=50),
),
]
This diff is collapsed.
...@@ -22,7 +22,6 @@ cluster = api ...@@ -22,7 +22,6 @@ cluster = api
cms_notification = cms_notification cms_notification = cms_notification
[NOTIFICATION_EMAIL] [NOTIFICATION_EMAIL]
APPROVER_MESSAGE = has sent you an APPROVAL REQUEST for change request;RMS-ACTIONREQUIRED APPROVER_MESSAGE = has sent you an APPROVAL REQUEST for change request;RMS-ACTIONREQUIRED
REQUESTOR_MESSAGE = has APPROVED the change request;RMS-CRAPPROVED REQUESTOR_MESSAGE = has APPROVED the change request;RMS-CRAPPROVED
...@@ -35,3 +34,9 @@ VENDOR_REJECT_MESSAGE = has REJECTED the change request;RMS-CRREJECTED-VENDOR ...@@ -35,3 +34,9 @@ VENDOR_REJECT_MESSAGE = has REJECTED the change request;RMS-CRREJECTED-VENDOR
REVISED_MESSAGE = has REJECTED the change request for your revision;RMS-CRREVISED REVISED_MESSAGE = has REJECTED the change request for your revision;RMS-CRREVISED
CANCEL_MESSAGE = has CANCELLED the change request;RMS-CRCANCELLED-USERTRIGGER CANCEL_MESSAGE = has CANCELLED the change request;RMS-CRCANCELLED-USERTRIGGER
APPROVER_REJECT_MESSAGE = has REJECTED the change request for your approval;RMS-CRREJECTED-APPROVER APPROVER_REJECT_MESSAGE = has REJECTED the change request for your approval;RMS-CRREJECTED-APPROVER
[APPLICATION_CODE]
RMS = APP-20190923-0000001
CMS = APP-20190923-0000002
AMS = APP-20190923-0000003
\ No newline at end of file
Username,Name,Company,Department,Department_Code,Email,Contact_No,Application,Default_app,Privilege_Company,Privilege_Department,Privilege_Department_Code,Create_CR,Create_Template,View_All_CR,Approve_CR Username,Name,Company,Department,Department_Code,Email,Contact_No,Application,Default_app,Change_Request_Privilege_Company,Change_Request_Privilege_Department,Change_Request_Privilege_Department_Code,Create_CR,Create_Template,View_All_CR,View_All_CR_Template,Approve_CR,Asset_Management_Privilege_Company,Asset_Management_Privilege_Department,Asset_Management_Privilege_Department_Code,Asset_Management_User_Group
ob-john,John Doe,Oneberry Technologies Pte Ltd,Business Development,DEPARTMENT-20200122-0000003,johndoe@gmail.com,123456,"cms,ams",cms,Oneberry Technologies Pte Ltd,Business Development,DEPARTMENT-20200122-0000003,Yes,No,Yes,Yes ob-john,John Doe,Oneberry Technologies Pte Ltd,Business Development,DEPARTMENT-20200122-0000003,johndoe@gmail.com,123456,"cms,ams",cms,Oneberry Technologies Pte Ltd,Business Development,DEPARTMENT-20200122-0000003,Yes,No,Yes,Yes,Yes,Oneberry Technologies Pte Ltd,Business Development,DEPARTMENT-20200122-0000003,MANAGER
,,,,,,,,,Please use this department code as reference,,,,,, ,,,,,,,,,Please use this department code as reference,,,,,,,,,,,
,,,,,,,,,Oneberry Technologies Pte Ltd,Business Development,DEPARTMENT-20200122-0000003,,,, ,,,,,,,,,Oneberry Technologies Pte Ltd,Business Development,DEPARTMENT-20200122-0000003,,,,,,,,,
,,,,,,,,,JTC Corporation,Security,DEPARTMENT-20200122-0000002,,,, ,,,,,,,,,JTC Corporation,Security,DEPARTMENT-20200122-0000002,,,,,,,,,
,,,,,,,,,Sample Company,Facilities Management,DEPARTMENT-20200130-0000004,,,, ,,,,,,,,,Sample Company,Facilities Management,DEPARTMENT-20200130-0000004,,,,,,,,,
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