# coding=utf-8 import datetime from rest_framework import serializers from .models import * from django.conf import settings from utils.booleancharfield import PriceShowCharField from apps.base import Formater class OrderSerializer(serializers.ModelSerializer): payment_name = serializers.CharField(source='get_payment_display', read_only=True) create_user_text = serializers.CharField(source='create_user.username', read_only=True) status_text = serializers.CharField(source='get_status_display', read_only=True) total_amount = PriceShowCharField(read_only=True) actual_amount = PriceShowCharField(read_only=True) class Meta: model = Order fields = '__all__' def create(self, validated_data): validated_data['create_user'] = self.context['request'].user instance = super(OrderSerializer, self).create(validated_data) instance.no = instance.get_no() instance.save() return instance class CouponSerializer(serializers.ModelSerializer): create_user_text = serializers.CharField(source='create_user.username', read_only=True) amount = PriceShowCharField(read_only=True) class Meta: model = Coupon fields = '__all__' def create(self, validated_data): validated_data['create_user'] = self.context['request'].user instance = super(CouponSerializer, self).create(validated_data) instance.save() return instance class ShoppingCartSerializer(serializers.ModelSerializer): name = serializers.CharField(source='commodity.name', read_only=True) stock = serializers.CharField(source='commodity.stock', read_only=True) price = serializers.SerializerMethodField() images = serializers.SerializerMethodField() def get_price(self, obj): return Formater.formatAmountShow(obj.commodity.price * obj.commodity.discount) def get_images(self, obj): if obj.commodity.main_image: img = Upload.objects.filter(id=obj.commodity.main_image.id).first() if img: return img.get_path() return '' class Meta: model = ShoppingCart fields = ( 'id', 'name', 'price', 'stock', 'images', 'quantity', 'commodity' ) def create(self, validated_data): validated_data['create_user'] = self.context['request'].user validated_data['quantity'] = validated_data.get('quantity') instance = ShoppingCart.objects.filter(commodity=self.initial_data['commodity'], create_user=validated_data['create_user']).first() if instance: instance.quantity += validated_data['quantity'] instance.save() else: instance = super(ShoppingCartSerializer, self).create(validated_data) return instance