138 lines
4.0 KiB
Python
138 lines
4.0 KiB
Python
|
|
from rest_framework import serializers
|
||
|
|
from asset.models import *
|
||
|
|
|
||
|
|
|
||
|
|
class AssetCategorySerializer(serializers.ModelSerializer):
|
||
|
|
asset_count = serializers.SerializerMethodField()
|
||
|
|
class Meta:
|
||
|
|
model = AssetCategory
|
||
|
|
exclude = ['created_at', 'created_by', 'company_id', 'is_active']
|
||
|
|
|
||
|
|
def get_asset_count(self, obj):
|
||
|
|
return obj.asset_set.all().count()
|
||
|
|
|
||
|
|
|
||
|
|
class AssetCategoryMiniSerializer(serializers.ModelSerializer):
|
||
|
|
class Meta:
|
||
|
|
model = AssetCategory
|
||
|
|
fields = ['id', 'asset_category_name']
|
||
|
|
|
||
|
|
|
||
|
|
def get_asset_count(self, obj):
|
||
|
|
return obj.asset_set.all().count()
|
||
|
|
|
||
|
|
|
||
|
|
class AssetLotSerializer(serializers.ModelSerializer):
|
||
|
|
class Meta:
|
||
|
|
model = AssetLot
|
||
|
|
fields = '__all__'
|
||
|
|
|
||
|
|
|
||
|
|
class AssetGetAllSerializer(serializers.ModelSerializer):
|
||
|
|
class Meta:
|
||
|
|
model = Asset
|
||
|
|
fields = ['id', 'asset_name', 'asset_status']
|
||
|
|
|
||
|
|
|
||
|
|
class AssetSerializer(serializers.ModelSerializer):
|
||
|
|
class Meta:
|
||
|
|
model = Asset
|
||
|
|
fields = '__all__'
|
||
|
|
|
||
|
|
|
||
|
|
class AssetAssignmentSerializer(serializers.ModelSerializer):
|
||
|
|
class Meta:
|
||
|
|
model = AssetAssignment
|
||
|
|
fields = '__all__'
|
||
|
|
|
||
|
|
|
||
|
|
class AssetAssignmentGetSerializer(serializers.ModelSerializer):
|
||
|
|
asset = serializers.SerializerMethodField()
|
||
|
|
asset_category = serializers.SerializerMethodField()
|
||
|
|
allocated_user = serializers.SerializerMethodField()
|
||
|
|
class Meta:
|
||
|
|
model = AssetAssignment
|
||
|
|
fields = ['id', 'asset', 'asset_category', 'allocated_user', 'assigned_date', 'return_status']
|
||
|
|
|
||
|
|
def get_asset(self, obj):
|
||
|
|
return obj.asset_id.asset_name
|
||
|
|
|
||
|
|
def get_asset_category(self, obj):
|
||
|
|
return obj.asset_id.asset_category_id.asset_category_name
|
||
|
|
|
||
|
|
def get_allocated_user(self, obj):
|
||
|
|
return EmployeeGetSerializer(obj.assigned_to_employee_id).data
|
||
|
|
|
||
|
|
|
||
|
|
class AssetRequestSerializer(serializers.ModelSerializer):
|
||
|
|
class Meta:
|
||
|
|
model = AssetRequest
|
||
|
|
fields = '__all__'
|
||
|
|
|
||
|
|
|
||
|
|
class AssetRequestGetSerializer(serializers.ModelSerializer):
|
||
|
|
asset_category_id = serializers.SerializerMethodField()
|
||
|
|
requested_employee_id = serializers.SerializerMethodField()
|
||
|
|
class Meta:
|
||
|
|
model = AssetRequest
|
||
|
|
fields = '__all__'
|
||
|
|
|
||
|
|
def get_asset_category_id(self, obj):
|
||
|
|
return AssetCategoryMiniSerializer(obj.asset_category_id).data
|
||
|
|
|
||
|
|
def get_requested_employee_id(self, obj):
|
||
|
|
return EmployeeGetSerializer(obj.requested_employee_id).data
|
||
|
|
|
||
|
|
|
||
|
|
class EmployeeGetSerializer(serializers.ModelSerializer):
|
||
|
|
full_name = serializers.SerializerMethodField()
|
||
|
|
|
||
|
|
class Meta:
|
||
|
|
model = Employee
|
||
|
|
fields = ['id', 'full_name', 'employee_profile', 'badge_id']
|
||
|
|
|
||
|
|
def get_full_name(self, obj):
|
||
|
|
return obj.get_full_name()
|
||
|
|
|
||
|
|
|
||
|
|
class AssetApproveSerializer(serializers.ModelSerializer):
|
||
|
|
class Meta:
|
||
|
|
model = AssetAssignment
|
||
|
|
fields = ['id', 'asset_id', 'assigned_to_employee_id', 'assigned_by_employee_id', 'assign_images']
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
def validate_asset_id(self, value):
|
||
|
|
asset_request = self.context.get('asset_request')
|
||
|
|
asset_category = asset_request.asset_category_id
|
||
|
|
if value.asset_category_id != asset_category:
|
||
|
|
raise serializers.ValidationError("Invalid asset.")
|
||
|
|
return value
|
||
|
|
|
||
|
|
|
||
|
|
class AssetReturnSerializer(serializers.ModelSerializer):
|
||
|
|
return_status = serializers.CharField(required=True)
|
||
|
|
image = serializers.FileField(required=True)
|
||
|
|
|
||
|
|
class Meta:
|
||
|
|
model = AssetAssignment
|
||
|
|
fields = ['return_status', 'return_condition', 'image']
|
||
|
|
|
||
|
|
def validate_return_status(self, value):
|
||
|
|
if value not in [status[0] for status in AssetAssignment.STATUS]:
|
||
|
|
raise serializers.ValidationError("Invalid Choice")
|
||
|
|
return value
|
||
|
|
|
||
|
|
def validate(self, data):
|
||
|
|
if self.instance.return_date:
|
||
|
|
raise serializers.ValidationError("Already Returned")
|
||
|
|
return data
|
||
|
|
|
||
|
|
# class ReturnImageSerializer(serializers.ModelSerializer):
|
||
|
|
# image = serializers.FileField(required=True)
|
||
|
|
# class Meta:
|
||
|
|
# model = ReturnImages
|
||
|
|
# fields = '__all__'
|
||
|
|
|
||
|
|
|