67 lines
2.2 KiB
Python
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
|