"""Product app back-office serializers.""" from django.utils.translation import gettext_lazy as _ from rest_framework import serializers from product import models from gallery.models import Image class ProductBackOfficeGallerySerializer(serializers.ModelSerializer): """Serializer class for model ProductGallery.""" class Meta: """Meta class""" model = models.ProductGallery fields = [ 'id', 'is_main', ] def get_request_kwargs(self): """Get url kwargs from request.""" return self.context.get('request').parser_context.get('kwargs') def validate(self, attrs): """Override validate method.""" product_pk = self.get_request_kwargs().get('pk') image_id = self.get_request_kwargs().get('image_id') product_qs = models.Product.objects.filter(pk=product_pk) image_qs = Image.objects.filter(id=image_id) if not product_qs.exists(): raise serializers.ValidationError({'detail': _('Product not found')}) if not image_qs.exists(): raise serializers.ValidationError({'detail': _('Image not found')}) product = product_qs.first() image = image_qs.first() attrs['product'] = product attrs['image'] = image return attrs