backend/inventory/serializers.py
2025-03-23 21:24:08 +10:00

67 lines
2.2 KiB
Python

from rest_framework import serializers
from .models import Nomenclature, Sticker, StickerMovement
from datetime import date
from django.contrib.auth.models import User
class NomenclatureSerializer(serializers.ModelSerializer):
class Meta:
model = Nomenclature
fields = '__all__'
class StickerSerializer(serializers.ModelSerializer):
is_expired = serializers.SerializerMethodField()
is_expiring_soon = serializers.SerializerMethodField()
nomenclature_name = serializers.CharField(source="nomenclature.name", read_only=True)
nomenclature_gtin = serializers.CharField(source="nomenclature.gtin", read_only=True)
class Meta:
model = Sticker
fields = '__all__'
def get_is_expired(self, obj):
return obj.is_expired()
def get_is_expiring_soon(self, obj):
return obj.is_expiring_soon()
def to_representation(self, instance):
"""Обновляем статус при каждом запросе"""
instance.save()
return super().to_representation(instance)
class StickerMovementSerializer(serializers.ModelSerializer):
class Meta:
model = StickerMovement
fields = '__all__'
""" Transfer sticks """
from rest_framework import serializers
from .models import StickerTransferRequest, StickerTransferItem, Sticker
class StickerTransferItemSerializer(serializers.ModelSerializer):
class Meta:
model = StickerTransferItem
fields = ['id', 'sticker', 'quantity']
class StickerTransferRequestSerializer(serializers.ModelSerializer):
items = StickerTransferItemSerializer(many=True)
from_user = serializers.StringRelatedField(read_only=True)
to_user = serializers.PrimaryKeyRelatedField(queryset=User.objects.all())
class Meta:
model = StickerTransferRequest
fields = ['id', 'from_user', 'to_user', 'status', 'created_at', 'items']
def create(self, validated_data):
items_data = validated_data.pop('items')
transfer = StickerTransferRequest.objects.create(**validated_data)
for item in items_data:
StickerTransferItem.objects.create(transfer=transfer, **item)
return transfer