class orderSerializer(serializers.ModelSerializer): address = addressSerializer(many=False, read_only=True) class Meta: model = order fields = ('id', 'user', 'created', 'offer', 'rate', 'status', 'paymentType', 'paid', 'address', 'mobile', 'coupon', 'quantity', 'shipping', 'start', 'end') def create(self, validated_data): u = self.context['request'].user cp = customerProfile.objects.get(user=u) if cp.attachment == None: raise ValidationError( detail='Attachment not found in your account') street = self.context['request'].data['street'] pincode = self.context['request'].data['pincode'] state = self.context['request'].data['state'] city = self.context['request'].data['city'] a = address(street=street, city=city, pincode=pincode, state=state) a.save() o = order(**validated_data) o.user = u o.address = a o.save() return o def update(self, instance, validated_data): u = self.context['request'].user has_application_permission(u, ['app.ecommerce', 'app.ecommerce.orders']) status = validated_data['status'] if (status == 'inProgress' and not instance.status == 'new') or (status == 'complete' and not instance.status == 'inProgress') or \ (status == 'canceledByVendor' and not instance.status == 'new') or (status == 'canceledByCustomer' and not instance.status == 'new') or status=='new': raise ValidationError({'NOT_ACCEPTABLE'}) instance.status = status instance.save() return instance
class RelationshipSerializer(serializers.ModelSerializer): address = addressSerializer(many = False, read_only = True) class Meta: model = service fields = ('pk' ,'name' , 'address' , 'mobile', 'logo' , 'web' )
class customerProfileSerializer(serializers.ModelSerializer): address = addressSerializer(read_only=True, many=False) class Meta: model = customerProfile fields = ('pk', 'address', 'sendUpdates', 'user', 'mobile', 'attachment') read_only_fields = ('user', ) def create(self, validated_data): u = self.context['request'].user street = self.context['request'].data['street'] pincode = self.context['request'].data['pincode'] state = self.context['request'].data['state'] city = self.context['request'].data['city'] su = self.context['request'].data['sendUpdates'] cp, new = customerProfile.objects.get_or_create(user=user) if new: a = address(street=street, city=city, pincode=pincode, state=state) a.save() cp.address = a cp.save() return cp def update(self, instance, validated_data): u = self.context['request'].user cp = customerProfile.objects.get(user=u) try: a = cp.address except: a = address() if 'street' in self.context['request'].data: try: street = self.context['request'].data['street'] pincode = self.context['request'].data['pincode'] state = self.context['request'].data['state'] city = self.context['request'].data['city'] except: pass a.street = street a.city = city a.pincode = pincode a.state = state if 'lat' in self.context['request'].data: try: a.lat = self.context['request'].data['lat'] a.lon = self.context['request'].data['lon'] except: pass a.save() cp.address = a if 'sendUpdates' in self.context['request'].data: cp.sendUpdates = validated_data.pop('sendUpdates') if 'mobile' in self.context['request'].data: cp.mobile = validated_data.pop('mobile') if 'attachment' in self.context['request'].data: cp.attachment = validated_data.pop('attachment') cp.save() return cp