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

Merge branch 'red-develop' into 'feature/RMS.v2.1-AMS'

Red develop

See merge request rms/Backend/api-main-service!986
parents e2390e5e 2557e5a8
...@@ -7,16 +7,12 @@ class AMSAssetSerializer(serializers.ModelSerializer): ...@@ -7,16 +7,12 @@ class AMSAssetSerializer(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'] = instance.asset_type.name 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()
return ret return ret
class Meta: class Meta:
model = AMSAsset model = AMSAsset
fields = ( fields = '__all__'
'code'
'name',
'asset_type',
)
read_only_fields = (
'created',
)
\ No newline at end of file
...@@ -6,17 +6,18 @@ from django_filters.rest_framework import DjangoFilterBackend ...@@ -6,17 +6,18 @@ from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import SearchFilter, OrderingFilter from rest_framework.filters import SearchFilter, OrderingFilter
from app.applicationlayer.ams.asset.table_filters import AMSAssetFilter from app.applicationlayer.ams.asset.table_filters import AMSAssetFilter
from app.applicationlayer.ams.asset import serializers from app.applicationlayer.ams.asset import serializers
from django.db import transaction
from app.applicationlayer.utils import( from app.applicationlayer.utils import(
CustomPagination, status_message_response CustomPagination, status_message_response
) )
class AMSAssetViewSet(viewsets.ModelViewSet): class AMSAssetViewSet(viewsets.ModelViewSet):
queryset = models.AMSAsset.objects queryset = AMSAsset.objects.all()
serializer_class = serializers.AMSAssetSerializer serializer_class = serializers.AMSAssetSerializer
pagination_class = CustomPagination pagination_class = CustomPagination
lookup_field = 'code' lookup_field = 'code'
filter_backends( filter_backends = (
DjangoFilterBackend, SearchFilter, DjangoFilterBackend, SearchFilter,
OrderingFilter OrderingFilter
) )
...@@ -53,4 +54,35 @@ class AMSAssetViewSet(viewsets.ModelViewSet): ...@@ -53,4 +54,35 @@ class AMSAssetViewSet(viewsets.ModelViewSet):
) )
@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 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)
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
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
)
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)
...@@ -7,12 +7,16 @@ from app.applicationlayer.ams.asset_group import views as assetgroup ...@@ -7,12 +7,16 @@ 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_type import views as assettype
from app.applicationlayer.ams.asset.views import AMSAssetViewSet
from app.applicationlayer.ams.asset_stock.views import AMSAssetStockViewSet
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'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)
urlpatterns = [ urlpatterns = [
path('', include(router.urls)), path('', include(router.urls)),
......
# Generated by Django 2.2 on 2020-03-17 12:03
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('entities', '0008_delete_assetgroup'),
]
operations = [
migrations.AlterField(
model_name='amsasset',
name='asset_type',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ams_asset_type', to='entities.AMSAssetType', to_field='code'),
),
migrations.AlterField(
model_name='amsasset',
name='code',
field=models.CharField(default='', max_length=255, unique=True),
),
migrations.AlterField(
model_name='amsasset',
name='created_by',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ams_asset_created_by', to=settings.AUTH_USER_MODEL, to_field='code'),
),
migrations.AlterField(
model_name='amsassetgroup',
name='created_by',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ams_asset_group_created_by', to=settings.AUTH_USER_MODEL, to_field='code'),
),
migrations.AlterField(
model_name='amsassetstock',
name='asset',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ams_asset_to_assetdetail', to='entities.AMSAsset', to_field='code'),
),
migrations.AlterField(
model_name='amsassetstock',
name='asset_group',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ams_asset_to_assetgroup', to='entities.AMSAssetGroup', to_field='code'),
),
migrations.AlterField(
model_name='amsassetstock',
name='code',
field=models.CharField(default='', max_length=255, unique=True),
),
migrations.AlterField(
model_name='amsassetstock',
name='manager',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ams_asset_manager', to=settings.AUTH_USER_MODEL, to_field='code'),
),
migrations.AlterField(
model_name='amsassetstock',
name='user_client',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ams_asset_user_client', to=settings.AUTH_USER_MODEL, to_field='code'),
),
migrations.AlterField(
model_name='amsassettype',
name='created_by',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ams_asset_type_created_by', to=settings.AUTH_USER_MODEL, to_field='code'),
),
migrations.AlterField(
model_name='amsprivilege',
name='department',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ams_privilege_departments', to='entities.Department', to_field='code'),
),
migrations.AlterField(
model_name='amsprivilege',
name='id_number',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='ams_privilege_id_number', to=settings.AUTH_USER_MODEL, to_field='code'),
),
]
...@@ -1249,13 +1249,13 @@ class ChangeRequestSettings(models.Model): ...@@ -1249,13 +1249,13 @@ class ChangeRequestSettings(models.Model):
class AMSPrivilege(models.Model): class AMSPrivilege(models.Model):
id_number = models.ForeignKey( id_number = models.ForeignKey(
User, User,
on_delete=models.CASCADE, on_delete=models.PROTECT,
to_field='code', to_field='code',
related_name='ams_privilege_id_number' related_name='ams_privilege_id_number'
) )
department = models.ForeignKey( department = models.ForeignKey(
Department, Department,
on_delete=models.CASCADE, on_delete=models.PROTECT,
related_name='ams_privilege_departments', related_name='ams_privilege_departments',
to_field='code' to_field='code'
) )
...@@ -1281,7 +1281,7 @@ class AMSAssetGroup(models.Model): ...@@ -1281,7 +1281,7 @@ class AMSAssetGroup(models.Model):
max_length=255) max_length=255)
created_by = models.ForeignKey( created_by = models.ForeignKey(
User, User,
on_delete=models.CASCADE, on_delete=models.PROTECT,
to_field='code', to_field='code',
related_name='ams_asset_group_created_by' related_name='ams_asset_group_created_by'
) )
...@@ -1319,7 +1319,7 @@ class AMSAssetType(models.Model): ...@@ -1319,7 +1319,7 @@ class AMSAssetType(models.Model):
) )
created_by = models.ForeignKey( created_by = models.ForeignKey(
User, User,
on_delete=models.CASCADE, on_delete=models.PROTECT,
to_field='code', to_field='code',
related_name='ams_asset_type_created_by' related_name='ams_asset_type_created_by'
) )
...@@ -1347,13 +1347,14 @@ class AMSAsset(models.Model): ...@@ -1347,13 +1347,14 @@ class AMSAsset(models.Model):
code = models.CharField( code = models.CharField(
unique=True, unique=True,
max_length=255) max_length=255,
default='')
name = models.CharField( name = models.CharField(
unique=True, unique=True,
max_length=255) max_length=255)
asset_type = models.ForeignKey( asset_type = models.ForeignKey(
AMSAssetType, AMSAssetType,
on_delete=models.CASCADE, on_delete=models.PROTECT,
to_field='code', to_field='code',
related_name='ams_asset_type' related_name='ams_asset_type'
) )
...@@ -1363,7 +1364,7 @@ class AMSAsset(models.Model): ...@@ -1363,7 +1364,7 @@ class AMSAsset(models.Model):
max_length=255) max_length=255)
created_by = models.ForeignKey( created_by = models.ForeignKey(
User, User,
on_delete=models.CASCADE, on_delete=models.PROTECT,
to_field='code', to_field='code',
related_name='ams_asset_created_by' related_name='ams_asset_created_by'
) )
...@@ -1391,7 +1392,8 @@ class AMSAssetStock(models.Model): ...@@ -1391,7 +1392,8 @@ class AMSAssetStock(models.Model):
code = models.CharField( code = models.CharField(
unique=True, unique=True,
max_length=255) max_length=255,
default='')
unique_identifier = models.CharField( unique_identifier = models.CharField(
unique=True, unique=True,
max_length=255) max_length=255)
...@@ -1410,13 +1412,13 @@ class AMSAssetStock(models.Model): ...@@ -1410,13 +1412,13 @@ class AMSAssetStock(models.Model):
) )
user_client = models.ForeignKey( user_client = models.ForeignKey(
User, User,
on_delete=models.CASCADE, on_delete=models.PROTECT,
to_field='code', to_field='code',
related_name='ams_asset_user_client' related_name='ams_asset_user_client'
) )
manager = models.ForeignKey( manager = models.ForeignKey(
User, User,
on_delete=models.CASCADE, on_delete=models.PROTECT,
to_field='code', to_field='code',
related_name='ams_asset_manager' related_name='ams_asset_manager'
) )
...@@ -1426,13 +1428,13 @@ class AMSAssetStock(models.Model): ...@@ -1426,13 +1428,13 @@ class AMSAssetStock(models.Model):
) )
asset = models.ForeignKey( asset = models.ForeignKey(
AMSAsset, AMSAsset,
on_delete=models.CASCADE, on_delete=models.PROTECT,
to_field='code', to_field='code',
related_name='ams_asset_to_assetdetail' related_name='ams_asset_to_assetdetail'
) )
asset_group = models.ForeignKey( asset_group = models.ForeignKey(
AMSAssetGroup, AMSAssetGroup,
on_delete=models.CASCADE, on_delete=models.PROTECT,
to_field='code', to_field='code',
related_name='ams_asset_to_assetgroup' related_name='ams_asset_to_assetgroup'
) )
......
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