Files
ihrm/horilla_api/api_serializers/asset/serializers.py
2024-10-10 15:45:44 +05:30

151 lines
4.1 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__'