Commit 5b3898d6 authored by Gladys Forte's avatar Gladys Forte

Merge branch 'feature/RMS.v2.1-AMS' into 'product-dev'

Feature/rms.v2.1 ams

See merge request rms/Backend/api-main-service!995
parents 334df0f9 951490ab
...@@ -10,10 +10,9 @@ class AMSAssetSerializer(serializers.ModelSerializer): ...@@ -10,10 +10,9 @@ class AMSAssetSerializer(serializers.ModelSerializer):
ret['in_qty'] = instance.ams_asset_to_assetdetail.filter(status='In-Store').count() 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['out_qty'] = instance.ams_asset_to_assetdetail.filter(status='Deployed').count()
ret['unavailable'] = instance.ams_asset_to_assetdetail.filter(status='Faulty').count() ret['unavailable'] = instance.ams_asset_to_assetdetail.filter(status='Faulty').count()
ret['created_by'] = instance.created_by.name, ret['created_by'] = instance.created_by.name
return ret return ret
class Meta: class Meta:
model = AMSAsset model = AMSAsset
fields = '__all__' fields = '__all__'
......
...@@ -6,4 +6,4 @@ class AMSAssetFilter(filters.FilterSet): ...@@ -6,4 +6,4 @@ class AMSAssetFilter(filters.FilterSet):
class Meta: class Meta:
model = AMSAsset model = AMSAsset
fields = '__all__' fields = '__all__'
\ No newline at end of file
...@@ -10,6 +10,7 @@ from django.db import transaction ...@@ -10,6 +10,7 @@ from django.db import transaction
from app.applicationlayer.utils import( from app.applicationlayer.utils import(
CustomPagination, status_message_response CustomPagination, status_message_response
) )
from rest_framework.decorators import action
class AMSAssetViewSet(viewsets.ModelViewSet): class AMSAssetViewSet(viewsets.ModelViewSet):
...@@ -70,7 +71,6 @@ class AMSAssetViewSet(viewsets.ModelViewSet): ...@@ -70,7 +71,6 @@ class AMSAssetViewSet(viewsets.ModelViewSet):
message message
) )
def retrieve(self, request, *args, **kwargs): def retrieve(self, request, *args, **kwargs):
instance = self.get_object() instance = self.get_object()
serializer = self.get_serializer(instance) serializer = self.get_serializer(instance)
...@@ -84,5 +84,33 @@ class AMSAssetViewSet(viewsets.ModelViewSet): ...@@ -84,5 +84,33 @@ class AMSAssetViewSet(viewsets.ModelViewSet):
return Response(status=status.HTTP_204_NO_CONTENT) 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
...@@ -7,8 +7,17 @@ class AssetGroupSerializer(serializers.ModelSerializer): ...@@ -7,8 +7,17 @@ class AssetGroupSerializer(serializers.ModelSerializer):
def to_representation(self, instance): def to_representation(self, instance):
ret = super().to_representation(instance) ret = super().to_representation(instance)
ret['asset_type_count'] = 0
ret['asset_count'] = 0 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() ret['asset_stock_count'] = instance.ams_asset_to_assetgroup.count()
return ret return ret
......
...@@ -11,6 +11,7 @@ from app.applicationlayer.utils import ( ...@@ -11,6 +11,7 @@ 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):
...@@ -82,3 +83,33 @@ class AssetGroupViewset(viewsets.ModelViewSet): ...@@ -82,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
)
...@@ -10,6 +10,7 @@ from django.db import transaction ...@@ -10,6 +10,7 @@ from django.db import transaction
from app.applicationlayer.utils import( from app.applicationlayer.utils import(
CustomPagination, status_message_response CustomPagination, status_message_response
) )
from rest_framework.decorators import action
class AMSAssetStockViewSet(viewsets.ModelViewSet): class AMSAssetStockViewSet(viewsets.ModelViewSet):
...@@ -86,5 +87,32 @@ class AMSAssetStockViewSet(viewsets.ModelViewSet): ...@@ -86,5 +87,32 @@ class AMSAssetStockViewSet(viewsets.ModelViewSet):
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 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
)
...@@ -7,8 +7,15 @@ class AssetTypeSerializer(serializers.ModelSerializer): ...@@ -7,8 +7,15 @@ class AssetTypeSerializer(serializers.ModelSerializer):
def to_representation(self, instance): def to_representation(self, instance):
ret = super().to_representation(instance) ret = super().to_representation(instance)
ret['asset_count'] = instance.ams_asset_type.count()
ret['asset_stock_count'] = 0 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 return ret
......
...@@ -11,6 +11,7 @@ from app.applicationlayer.utils import ( ...@@ -11,6 +11,7 @@ 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 AssetTypeViewset(viewsets.ModelViewSet): class AssetTypeViewset(viewsets.ModelViewSet):
...@@ -90,3 +91,33 @@ class AssetTypeViewset(viewsets.ModelViewSet): ...@@ -90,3 +91,33 @@ class AssetTypeViewset(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 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
)
\ No newline at end of file
# Generated by Django 2.2 on 2020-03-18 10:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('entities', '0009_auto_20200317_1203'),
]
operations = [
migrations.RemoveField(
model_name='amsasset',
name='deleted_at',
),
migrations.RemoveField(
model_name='amsassetgroup',
name='deleted_at',
),
migrations.RemoveField(
model_name='amsassetstock',
name='deleted_at',
),
migrations.RemoveField(
model_name='amsassetstocksupport',
name='deleted_at',
),
migrations.RemoveField(
model_name='amsassettype',
name='deleted_at',
),
migrations.AddField(
model_name='amsasset',
name='is_active',
field=models.BooleanField(default=True),
),
migrations.AddField(
model_name='amsassetgroup',
name='is_active',
field=models.BooleanField(default=True),
),
migrations.AddField(
model_name='amsassetstock',
name='is_active',
field=models.BooleanField(default=True),
),
migrations.AddField(
model_name='amsassetstocksupport',
name='is_active',
field=models.BooleanField(default=True),
),
migrations.AddField(
model_name='amsassettype',
name='is_active',
field=models.BooleanField(default=True),
),
]
# Generated by Django 2.2 on 2020-03-18 11:39 # Generated by Django 2.2 on 2020-03-18 12:20
from django.db import migrations, models from django.db import migrations, models
import django.db.models.deletion import django.db.models.deletion
class Migration(migrations.Migration): class Migration(migrations.Migration):
dependencies = [ dependencies = [
('entities', '0009_auto_20200317_1203'), ('entities', '0010_auto_20200318_1046'),
] ]
operations = [ operations = [
migrations.RemoveField( migrations.RemoveField(
model_name='amsreport', model_name='amsreport',
name='deleted_at', name='deleted_at',
), ),
migrations.RemoveField( migrations.RemoveField(
model_name='amsreporttype', model_name='amsreporttype',
name='deleted_at', name='deleted_at',
), ),
migrations.AddField( migrations.AddField(
model_name='amsreport', model_name='amsreport',
name='is_active', name='is_active',
field=models.BooleanField(default=True), field=models.BooleanField(default=True),
), ),
migrations.AddField( migrations.AddField(
model_name='amsreporttype', model_name='amsreporttype',
name='is_active', name='is_active',
field=models.BooleanField(default=True), field=models.BooleanField(default=True),
), ),
migrations.AlterField( migrations.AlterField(
model_name='amsreport', model_name='amsreport',
name='asset_stock', name='asset_stock',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='report_to_asset_stock', to='entities.AMSAssetStock', to_field='code'), field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='report_to_asset_stock', to='entities.AMSAssetStock', to_field='code'),
), ),
migrations.AlterField( migrations.AlterField(
model_name='amsreport', model_name='amsreport',
name='report_type', name='code',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='report_to_report_type', to='entities.AMSReportType', to_field='code'), field=models.CharField(default='', max_length=255, unique=True),
), ),
migrations.AlterField( migrations.AlterField(
model_name='amsreporttype', model_name='amsreport',
name='code', name='report_type',
field=models.CharField(default='', max_length=255, unique=True), field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='report_to_report_type', to='entities.AMSReportType', to_field='code'),
), ),
migrations.AlterField( migrations.AlterField(
model_name='entitylog', model_name='amsreporttype',
name='entity', name='code',
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')], default='Add', max_length=50), field=models.CharField(default='', max_length=255, unique=True),
), ),
] 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')], default='Add', max_length=50),
),
]
...@@ -1286,7 +1286,8 @@ class AMSAssetGroup(models.Model): ...@@ -1286,7 +1286,8 @@ class AMSAssetGroup(models.Model):
related_name='ams_asset_group_created_by' related_name='ams_asset_group_created_by'
) )
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
deleted_at = models.DateTimeField(null=True, blank=True) # deleted_at = models.DateTimeField(null=True, blank=True)
is_active = models.BooleanField(default=True)
class Meta: class Meta:
db_table = 'ams_asset_groups' db_table = 'ams_asset_groups'
...@@ -1324,7 +1325,8 @@ class AMSAssetType(models.Model): ...@@ -1324,7 +1325,8 @@ class AMSAssetType(models.Model):
related_name='ams_asset_type_created_by' related_name='ams_asset_type_created_by'
) )
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
deleted_at = models.DateTimeField(null=True, blank=True) # deleted_at = models.DateTimeField(null=True, blank=True)
is_active = models.BooleanField(default=True)
class Meta: class Meta:
db_table = 'ams_asset_types' db_table = 'ams_asset_types'
...@@ -1358,6 +1360,7 @@ class AMSAsset(models.Model): ...@@ -1358,6 +1360,7 @@ class AMSAsset(models.Model):
to_field='code', to_field='code',
related_name='ams_asset_type' related_name='ams_asset_type'
) )
# asset_type = models.ManyToManyField(AMSAssetType)
description = models.CharField( description = models.CharField(
blank=True, blank=True,
null=True, null=True,
...@@ -1369,7 +1372,8 @@ class AMSAsset(models.Model): ...@@ -1369,7 +1372,8 @@ class AMSAsset(models.Model):
related_name='ams_asset_created_by' related_name='ams_asset_created_by'
) )
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
deleted_at = models.DateTimeField(null=True, blank=True) # deleted_at = models.DateTimeField(null=True, blank=True)
is_active = models.BooleanField(default=True)
class Meta: class Meta:
db_table = 'ams_assets' db_table = 'ams_assets'
...@@ -1439,7 +1443,8 @@ class AMSAssetStock(models.Model): ...@@ -1439,7 +1443,8 @@ class AMSAssetStock(models.Model):
related_name='ams_asset_to_assetgroup' related_name='ams_asset_to_assetgroup'
) )
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
deleted_at = models.DateTimeField(null=True, blank=True) # deleted_at = models.DateTimeField(null=True, blank=True)
is_active = models.BooleanField(default=True)
class Meta: class Meta:
db_table = 'ams_asset_stocks' db_table = 'ams_asset_stocks'
...@@ -1484,7 +1489,8 @@ class AMSAssetStockSupport(models.Model): ...@@ -1484,7 +1489,8 @@ class AMSAssetStockSupport(models.Model):
to_field='code' to_field='code'
) )
created = models.DateTimeField(auto_now_add=True) created = models.DateTimeField(auto_now_add=True)
deleted_at = models.DateTimeField(null=True, blank=True) # deleted_at = models.DateTimeField(null=True, blank=True)
is_active = models.BooleanField(default=True)
class Meta: class Meta:
db_table = 'ams_asset_stock_supports' db_table = 'ams_asset_stock_supports'
......
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