#coding=utf-8 from rest_framework import serializers from apps.exceptions import CustomError from django.db.models import Q from apps.foundation.models import BizLog from .models import * from apps.serializer_errors import dump_serializer_errors from apps.foundation.models import BizLog class BranchSerializer(serializers.ModelSerializer): enabled_text = serializers.SerializerMethodField() class Meta: model = Branch fields = '__all__' def get_enabled_text(self, obj): if obj.enabled: return u'是' return u'否' @staticmethod def factory(user, data, id=None): if id: instance = Branch.getById(id) else: instance = None serializer = BranchSerializer(instance, data=data) serializer.user = user return serializer def validSave(self): if self.is_valid(): return self.save() else: raise CustomError(dump_serializer_errors(self)) def create(self, validated_data): instance = super(BranchSerializer, self).create(validated_data) instance.save() BizLog.objects.addnew(self.user, BizLog.INSERT, u"添加门店[%s],id=%s" % (instance.name, instance.id),validated_data) return instance def update(self, instance, validated_data): BizLog.objects.addnew(self.user, BizLog.UPDATE, u"修改门店[%s],id=%s" % (instance.name, instance.id),validated_data) instance = super(BranchSerializer, self).update(instance, validated_data) return instance class MemberSerializer(serializers.ModelSerializer): create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True) class Meta: model = Member fields = '__all__' class MemberCouponSerializer(serializers.ModelSerializer): activity_name = serializers.CharField(source='activity.title', read_only=True) coupon_name = serializers.CharField(source='coupon.name', read_only=True) write_off_text = serializers.SerializerMethodField() write_off_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True) class Meta: model = MemberCoupon fields = '__all__' def get_write_off_text(self, obj): if obj.write_off: return u'是' return u'否' class OrderSerializer(serializers.ModelSerializer): activity_name = serializers.CharField(source='activity.title', read_only=True) member_name = serializers.CharField(source='member.nickname', read_only=True) member_tel = serializers.CharField(source='member.tel', read_only=True) status_text = serializers.CharField(source='get_status_display', read_only=True) delete_text = serializers.SerializerMethodField() create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True) class Meta: model = Order fields = '__all__' def get_delete_text(self, obj): if obj.delete: return u'是' return u'否'