mirror of
https://github.com/marking-hack/backend.git
synced 2025-02-21 11:40:33 +03:00
70 lines
1.8 KiB
Python
70 lines
1.8 KiB
Python
from numpy import nan
|
|
from rest_framework import serializers
|
|
|
|
from marking_hack.market.models import Store, Region, Item, ItemSale, ItemTransaction
|
|
|
|
|
|
class StoreSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Store
|
|
fields = ["id_sp", "region_name", "city_name", "postal_code"]
|
|
|
|
|
|
class ItemSerializer(serializers.ModelSerializer):
|
|
name = serializers.CharField(source="product_name")
|
|
category = serializers.CharField(source="product_short_name")
|
|
current_amount = serializers.SerializerMethodField()
|
|
volume = serializers.SerializerMethodField()
|
|
|
|
def get_current_amount(self, obj):
|
|
amount = obj.sales.first().amount
|
|
if amount == nan:
|
|
return 0
|
|
return float(amount)
|
|
|
|
def get_volume(self, obj):
|
|
print(obj.volume)
|
|
if obj.volume == nan:
|
|
return 0
|
|
return obj.volume
|
|
|
|
class Meta:
|
|
model = Item
|
|
fields = [
|
|
"gtin",
|
|
"name",
|
|
"category",
|
|
"brand",
|
|
"country",
|
|
"volume",
|
|
"current_amount",
|
|
]
|
|
|
|
|
|
class ListRegionSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Region
|
|
fields = ["code", "name"]
|
|
|
|
|
|
class ItemSaleSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = ItemSale
|
|
fields = ["date", "type_operation", "cnt"]
|
|
|
|
|
|
class ItemTransactionSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = ItemTransaction
|
|
fields = ["date", "cnt", "sender_region_code"]
|
|
|
|
|
|
class ShopItemSerializer(serializers.Serializer):
|
|
id_sp = serializers.CharField(max_length=32)
|
|
items = serializers.ListSerializer(child=serializers.CharField(max_length=32))
|
|
|
|
|
|
class PredictSerializer(serializers.Serializer):
|
|
date = serializers.DateField()
|
|
shops = ShopItemSerializer(many=True)
|