def filter_products(self, request, **kwargs): data = self.get_filter_kwargs() bg_colors = data.get('bg_color[]', None) design_colors = data.get('design_color[]', None) designs = data.get('design[]', None) f_types = data.get('f_type[]', None) branches = data.get('branch[]', None) materials = data.get('material[]', None) filter_items = {} if bg_colors is not None and len(bg_colors): filter_items['background_color__pk__in'] = bg_colors if design_colors is not None and len(design_colors): filter_items['design_color__pk__in'] = design_colors if designs is not None and len(designs): filter_items['design__pk__in'] = designs if f_types is not None and len(f_types): filter_items['f_type__pk__in'] = f_types if branches is not None and len(branches): filter_items['branch__pk__in'] = branches if materials is not None and len(materials): filter_items['material__pk__in'] = materials products = Product.objects.filter(**filter_items) page = self.paginate_queryset(products) if page is not None: serializer = ProductDetailSerializer(page, many=True) return self.get_paginated_response(serializer.data) serializer = ProductDetailSerializer(products, many=True) return Response(serializer.data)
def get_product_using_code(self, request): code = self.request.query_params.get('code', None) try: product = Product.objects.get(code=code) return Response(ProductDetailSerializer(product).data) except ObjectDoesNotExist: return Response({'چنین محصولی یافت نشد.'}, status=HTTP_404_NOT_FOUND)
def test_view_product_detail(self): """Test viewing a product detail""" product = sample_product(user=self.user) product.tags.add(sample_tag(user=self.user)) url = detail_url(product.id) res = self.client.get(url) serializer = ProductDetailSerializer(product) self.assertEqual(res.data, serializer.data)
class SupplierProductsSerializer(serializers.ModelSerializer): """Serializer for supplier products objects""" product = ProductDetailSerializer(many=False, read_only=True) supplier = SupplierSerializer(many=False, read_only=True) class Meta: model = SupplierProducts fields = ('id', 'product', 'supplier', 'price', 'stock') read_only_fields = ('id', )
def test_success_view_product_detail_by_non_manager(self): """Test viewing a product detail""" unit = sample_unit() product = sample_product(unit=unit) product.categories.add(sample_category()) url = detail_url(product.id) self.client = APIClient() self.client.force_authenticate(self.cashier) res = self.client.get(url) self.assertEqual(res.status_code, status.HTTP_200_OK) serializer = ProductDetailSerializer(product) self.assertEqual(res.data, serializer.data)
def retrieve(self, request, pk=None): product = self.get_object(request, pk) if product is not None: serialized = ProductDetailSerializer(product) return Response(serialized.data, status=status.HTTP_200_OK) return Response("Try Again", status=status.HTTP_204_NO_CONTENT)
class SupplierProductDetailSerializer(SupplierProductsSerializer): """Serializer for supplier product detail""" product = ProductDetailSerializer(many=False, read_only=True) supplier = SupplierSerializer(many=False, read_only=True)
class SupplierBillItemSerializer(serializers.ModelSerializer): product = ProductDetailSerializer() class Meta: model = SupplierBillItem fields = ('pk', 'product', 'amount')