Commit 2a5d3674 authored by John Red Medrano's avatar John Red Medrano

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

Feature/rms.v2.1 ams

See merge request rms/Backend/api-main-service!987
parents 2db826b1 d8ac6cc3
......@@ -7,16 +7,12 @@ 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()
return ret
class Meta:
model = AMSAsset
fields = (
'code'
'name',
'asset_type',
)
read_only_fields = (
'created',
)
\ No newline at end of file
fields = '__all__'
......@@ -6,17 +6,18 @@ 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
)
class AMSAssetViewSet(viewsets.ModelViewSet):
queryset = models.AMSAsset.objects
queryset = AMSAsset.objects.all()
serializer_class = serializers.AMSAssetSerializer
pagination_class = CustomPagination
lookup_field = 'code'
filter_backends(
filter_backends = (
DjangoFilterBackend, SearchFilter,
OrderingFilter
)
......@@ -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)
......@@ -8,4 +8,4 @@ class AssetTypeSerializer(serializers.ModelSerializer):
class Meta:
model = models.AMSAssetType
fields = '__all__'
read_only_fields = ['created', 'code']
\ No newline at end of file
read_only_fields = ['created', 'created_by', 'code']
\ No newline at end of file
......@@ -29,17 +29,19 @@ class AssetTypeViewset(viewsets.ModelViewSet):
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
# 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 Asset Type created', serializer.data
)
message = status_message_response(
201, 'success',
'New Asset Type created', serializer.data
)
return Response(
message
)
return Response(
message
)
def list(self, request, *args, **kwargs):
......
......@@ -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_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
router = routers.DefaultRouter()
router.register(r'asset-group', assetgroup.AssetGroupViewset)
router.register(r'asset-type', assettype.AssetTypeViewset)
router.register(r'ams-privilege', amsprivilege.AMSPrivilegeViewSet)
router.register(r'assets', AMSAssetViewSet)
router.register(r'assets-stock-list', AMSAssetStockViewSet)
urlpatterns = [
path('', include(router.urls)),
......
# Generated by Django 2.2 on 2020-03-17 10:12
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('entities', '0007_auto_20200317_1005'),
]
operations = [
migrations.DeleteModel(
name='AssetGroup',
),
]
# 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'),
),
]
......@@ -1246,47 +1246,16 @@ class ChangeRequestSettings(models.Model):
**********************
"""
class AssetGroup(models.Model):
code = models.CharField(
unique=True,
max_length=255)
name = models.CharField(
unique=True,
max_length=255)
asset_group = models.CharField(
unique=True,
max_length=255)
created = models.DateTimeField(
blank=True,
null=True)
class Meta:
db_table = 'asset_groups'
ordering = ['-created']
def __str__(self):
return f'{self.code}'
def save(self, *args, **kwargs):
super(AssetGroup, self).save(*args, **kwargs)
code = number_generator(enums.GenerateCode.ASSET_GROUP.value, self.id)
if self.code == '':
self.code = code
self.created = datetime.now()
self.save()
class AMSPrivilege(models.Model):
id_number = models.ForeignKey(
User,
on_delete=models.CASCADE,
on_delete=models.PROTECT,
to_field='code',
related_name='ams_privilege_id_number'
)
department = models.ForeignKey(
Department,
on_delete=models.CASCADE,
on_delete=models.PROTECT,
related_name='ams_privilege_departments',
to_field='code'
)
......@@ -1312,7 +1281,7 @@ class AMSAssetGroup(models.Model):
max_length=255)
created_by = models.ForeignKey(
User,
on_delete=models.CASCADE,
on_delete=models.PROTECT,
to_field='code',
related_name='ams_asset_group_created_by'
)
......@@ -1350,7 +1319,7 @@ class AMSAssetType(models.Model):
)
created_by = models.ForeignKey(
User,
on_delete=models.CASCADE,
on_delete=models.PROTECT,
to_field='code',
related_name='ams_asset_type_created_by'
)
......@@ -1378,13 +1347,14 @@ class AMSAsset(models.Model):
code = models.CharField(
unique=True,
max_length=255)
max_length=255,
default='')
name = models.CharField(
unique=True,
max_length=255)
asset_type = models.ForeignKey(
AMSAssetType,
on_delete=models.CASCADE,
on_delete=models.PROTECT,
to_field='code',
related_name='ams_asset_type'
)
......@@ -1394,7 +1364,7 @@ class AMSAsset(models.Model):
max_length=255)
created_by = models.ForeignKey(
User,
on_delete=models.CASCADE,
on_delete=models.PROTECT,
to_field='code',
related_name='ams_asset_created_by'
)
......@@ -1422,7 +1392,8 @@ class AMSAssetStock(models.Model):
code = models.CharField(
unique=True,
max_length=255)
max_length=255,
default='')
unique_identifier = models.CharField(
unique=True,
max_length=255)
......@@ -1441,13 +1412,13 @@ class AMSAssetStock(models.Model):
)
user_client = models.ForeignKey(
User,
on_delete=models.CASCADE,
on_delete=models.PROTECT,
to_field='code',
related_name='ams_asset_user_client'
)
manager = models.ForeignKey(
User,
on_delete=models.CASCADE,
on_delete=models.PROTECT,
to_field='code',
related_name='ams_asset_manager'
)
......@@ -1457,13 +1428,13 @@ class AMSAssetStock(models.Model):
)
asset = models.ForeignKey(
AMSAsset,
on_delete=models.CASCADE,
on_delete=models.PROTECT,
to_field='code',
related_name='ams_asset_to_assetdetail'
)
asset_group = models.ForeignKey(
AMSAssetGroup,
on_delete=models.CASCADE,
on_delete=models.PROTECT,
to_field='code',
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