コード例 #1
0
 def add_product(self, data):
     results = {}
     user = ''
     admin = ''
     if 'admin' in data:
         admin = data['admin']
         serializer = ProductSerializer(data=data)
         if serializer.is_valid():
             serializer.save()
             results['result'] = 'success'
         else:
             print(serializer.errors)
         return
     token = data['token']
     user = Token.objects.get(key=token).user
     if user or 'yes' in admin:
         if user.has_perm() or 'yes' in admin:
             serializer = ProductSerializer(data=data)
             if serializer.is_valid():
                 serializer.save()
                 results['result'] = 'success'
             else:
                 results['result'] = 'error'
                 if 'image' in serializer.errors:
                     results['error'] = ": nie prawidłowy plik najpewniej nie jest to zdjęcie"
                 if 'productName' in serializer.errors:
                     if 'error' in results:
                         results['error'] = results['error'] + " " + "oraz produkt o takiej nazwie już istnieje"
                     else:
                         results['error'] = ": produkt o takiej nazwie już istnieje"
         else:
             results['error'] = "Nie masz uprawnień bądź zostałeś wylogowany"
     else:
         results['error'] = "Nie masz uprawnień bądź zostałeś wylogowany"
     return results
コード例 #2
0
 def put(self, request, pk, format=None):
     product = self.get_object(pk)
     serializer = ProductSerializer(product, data=request.data)
     if serializer.is_valid():
         serializer.save()
         return Response(serializer.data)
     return Response(serializer.errors, status= status.HTTP_400_BAD_REQUEST)
コード例 #3
0
 def bar(self, request):
     bar_code = self.request.query_params.get('bar', '')
     if not bar_code:
         return HttpResponseBadRequest('No bar code in get parameters')
     products = Product.objects.filter(bar_code=bar_code)
     if products:
         return Response(ProductSerializer(instance=products[0]).data)
     else:
         url = 'http://goodsmatrix.ru/goods/d/' + bar_code + '.html'
         resp = requests.get(url)
         soup = BeautifulSoup(resp.text)
         if soup.find(id='ctl00_ContentPH_GoodsName'):
             name = soup.find(id='ctl00_ContentPH_GoodsName').text
             description = soup.find(id='ctl00_ContentPH_Comment').text
             composition = soup.find(id='ctl00_ContentPH_Composition').text
             image_url = 'http://goodsmatrix.ru/BigImages/' + bar_code + '.jpg'
             img = requests.get(image_url)
             path = join(settings.MEDIA_ROOT, 'big_images', bar_code + '.jpg')
             with open('/tmp/food_debug', 'w') as outp:
                 outp.write(path)
             with open(path, 'wb') as img_file:
                 img_file.write(img.content)
             product = Product(name=name, bar_code=bar_code, description=description, composition=composition)
             product.image.name = path
             product.save()
             return Response(ProductSerializer(instance=product).data)
         else:
             return HttpResponseBadRequest('No such bar code in database')
コード例 #4
0
 def post(self, request):
     request.data["company"] = request.user.company.id
     serializer = ProductSerializer(data=request.data)
     if serializer.is_valid():
         serializer.save()
         product_id = serializer.data['id']
         Storage.objects.create(product_id=product_id, rest=0, last_price=0, market_price=0, total_price=0)
         return Response(serializer.data, status=status.HTTP_201_CREATED)
     return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
コード例 #5
0
ファイル: views.py プロジェクト: bounswe/bounswe2020group9
 def post(self, request, filter_type, sort_type):
     domain = get_current_site(request).domain
     token = request.META.get('HTTP_AUTHORIZATION')[6:]
     if token != "57bcb0493429453fad027bc6552cc1b28d6df955":
         serializer = SearchHistorySerializer(
             data={
                 "user": request.user.id,
                 "searched": request.data["searched"]
             })
         if serializer.is_valid():
             serializer.save(user_id=request.user.id)
             word_list = datamuse_call(request.data["searched"])
             product_list = search_product_db(word_list,
                                              request.data["searched"])
             filter_type = str(filter_type)
             sort_type = str(sort_type)
             filter_types = filter_type.split("&")
             product_list = filter_func(filter_types, product_list)
             product_list = sort_func(sort_type, product_list)
             product_list2 = []
             for i in range(len(product_list)):
                 product = ProductSerializer(
                     Product.objects.get(id=product_list[i]["id"]),
                     context={
                         'request': request
                     }).data
                 product_list2.append(product)
             product_dict = {}
             product_dict["product_list"] = product_list2
             return Response(product_dict, status=status.HTTP_200_OK)
         return Response(serializer._errors,
                         status=status.HTTP_400_BAD_REQUEST)
     else:
         word_list = datamuse_call(request.data["searched"])
         product_list = search_product_db(word_list,
                                          request.data["searched"])
         filter_type = str(filter_type)
         sort_type = str(sort_type)
         filter_types = filter_type.split("&")
         product_list = filter_func(filter_types, product_list)
         product_list = sort_func(sort_type, product_list)
         for i in range(len(product_list)):
             product = ProductSerializer(
                 Product.objects.get(id=product_list[i]["id"]),
                 context={
                     'request': request
                 }).data
             product_list.append(product)
         product_dict = {}
         product_dict["product_list"] = product_list
         return Response(product_dict, status=status.HTTP_200_OK)
コード例 #6
0
    def test_retrieve_products_nonadmin(self):
        """Test retrieving a list of products as a non admin user"""
        product1 = sample_product(user=self.user)
        product2 = sample_product(user=self.user,
                                  description="new description",
                                  status='borrador')

        res = self.client_nonadmin.get(PRODUCTS_URL)

        serializer1 = ProductSerializer(product1)
        serializer2 = ProductSerializer(product2)

        self.assertIn(serializer1.data, res.data.get('results'))
        self.assertNotIn(serializer2.data, res.data.get('results'))
コード例 #7
0
class CartListSerializer(serializers.Serializer):
	product = ProductSerializer()
	quantity = serializers.IntegerField()
	price = serializers.SerializerMethodField()

	def get_price(self, obj):
		return int(obj['product'].price) * obj['quantity']
コード例 #8
0
ファイル: test_product.py プロジェクト: divae/cecotec-test
    def test_retrieve_products_assigned_to_orders(self):
        product1 = Product.objects.create(user=self.user,
                                          price=2.22,
                                          name='Sandalia')
        product2 = Product.objects.create(user=self.user,
                                          price=2.22,
                                          name='Tacon')
        order = Order.objects.create(name='My order', user=self.user, number=1)
        order.products.add(product1)

        res = self.client.get(PRODUCT_URL, {'assigned_only': 1})

        serializer1 = ProductSerializer(product1)
        serializer2 = ProductSerializer(product2)
        self.assertIn(serializer1.data, res.data)
        self.assertNotIn(serializer2.data, res.data)
コード例 #9
0
ファイル: views.py プロジェクト: linkedweb/shop_time
    def get(self, request, format=None):
        user = self.request.user

        try:
            cart = Cart.objects.get(user=user)
            cart_items = CartItem.objects.order_by('product').filter(cart=cart)

            result = []

            if CartItem.objects.filter(cart=cart).exists():
                for cart_item in cart_items:
                    item = {}

                    item['id'] = cart_item.id
                    item['count'] = cart_item.count
                    product = Product.objects.get(id=cart_item.product.id)
                    product = ProductSerializer(product)

                    item['product'] = product.data

                    result.append(item)
            return Response({'cart': result}, status=status.HTTP_200_OK)
        except:
            return Response(
                {'error': 'Something went wrong when retrieving cart items'},
                status=status.HTTP_500_INTERNAL_SERVER_ERROR)
コード例 #10
0
 def get(self, request):
     cust_id = request.GET.get('cust_id')
     print(cust_id)
     cust_instance = Customer.objects.filter(id=cust_id)
     print(cust_instance)
     invoiceItems = InvoiceItems.objects.filter(
         invoice__customer=cust_instance[0]).select_related(
             'invoice', 'product')
     invoice_products = []
     for item in invoiceItems:
         product_data = ProductSerializer(item.product, many=False)
         temp = {
             "id": item.id,
             "original_product": product_data.data,
             "added_info": {
                 'custDescription': item.customerDescription,
                 'qoutedPrice': item.overiddenPrice,
                 'requiredQty': item.quatityOffered,
             }
         }
         invoice_products.append(temp)
     return Response({
         "status": status.HTTP_201_CREATED,
         "products": invoice_products
     })
コード例 #11
0
ファイル: views.py プロジェクト: mrnonz/mejai
def product_auction_create(request):

    if request.method == 'POST':
        data = JSONParser().parse(request)

        name = data['name']
        price = data['price']
        price_step = data['price_step']
        userId = data['userId']
        organizationId = data['organizationId']
        categoryId = data['categoryId']
        exp_time = data['exp_time']
        info = data['info']

        newProduct = Product(name=name,
                             detail=info,
                             price=price,
                             auction=1,
                             owner_id=userId,
                             organization_id=organizationId,
                             category_id=categoryId,
                             created_time=datetime.now())
        newProduct.save()

        serializerNewProduct = ProductSerializer(newProduct)

        newAuction = Auction(exp_time=datetime.fromtimestamp(float(exp_time)),
                             lastest_price=price,
                             price_step=price_step,
                             product_id=newProduct.pk)
        newAuction.save()

        return JsonResponse(serializerNewProduct.data, status=201)
コード例 #12
0
class CheckoutSerializer(serializers.ModelSerializer):
    ProductID = ProductSerializer()

    class Meta:
        model = Checkout
        fields = ('ProductID', 'User_ID', 'CreatedDate', 'Quantity',
                  'promocode', 'incheckout')
コード例 #13
0
class OrderSerializer(serializers.ModelSerializer):
    customer = CustomerSerializer(read_only=True)
    product = ProductSerializer(read_only=True)

    class Meta:
        model = Order
        fields = ["id", "customer", "product", "quantity", "created_at"]
コード例 #14
0
ファイル: serializers.py プロジェクト: pixies/beraca.org
class ProjectListSerializer(serializers.ModelSerializer):

    images = ProjectPictureSerializer(many=True, read_only=True)
    category = ProjectCategorySerializerNested(many=True)
    community = CommunityProductListSerializer(many=True)

    from product.serializers import ProductSerializer
    products = ProductSerializer()

    class Meta:
        model = Project
        fields = ('id', 'name', 'target_area', 'theme_description', 'goals',
                  'specific_goals', 'activities', 'results', 'schedule',
                  'target_audience', 'project_totals', 'taxes',
                  'community_tour', 'future_vision', 'category', 'images',
                  'products', 'community')
        read_only_fields = ('id', )

    def create(self, validated_data):
        categories_data = validated_data.pop('category')
        project = Project.objects.create(**validated_data)

        for category_data in categories_data:
            category = ProjectCategory.objects.create(**category_data)
            project.category.add(category)

        return project
コード例 #15
0
ファイル: views.py プロジェクト: vikram-acharya/cv_pyscripts
def products_list(request):
    """
    List all code product mapping.
    """
    try:
        if request.method == 'GET':
            product = Product.objects.all()
            serializer = ProductSerializer(product, many=True)
            if serializer:
                return JSONResponse({
                    "m": "success",
                    "s": 1,
                    "d": serializer.data
                })
            else:
                return JSONResponse(
                    {
                        "m": "fail",
                        "s": 0,
                        "d": "No data available."
                    },
                    status=200)
        else:
            return JSONResponse(
                {
                    "m": "fail",
                    "s": 0,
                    "d": "Requset Method must be GET"
                },
                status=200)
    except Exception as e:
        return JSONResponse({"m": "fail", "s": 0, "d": e}, status=200)
コード例 #16
0
ファイル: views.py プロジェクト: mrnonz/mejai
def product_create_attribute(request):
    if request.method == 'POST':
        data = JSONParser().parse(request)

        name = data['name']
        price = data['price']
        sellerId = data['sellerId']
        organizationId = data['organizationId']
        categoryId = data['categoryId']
        # quantity = sum()
        attributes = data['attributes']
        info = data['info']

        newProduct = Product(name=name,
                             detail=info,
                             price=price,
                             auction=0,
                             owner_id=sellerId,
                             organization_id=organizationId,
                             category_id=categoryId,
                             created_time=datetime.now())
        newProduct.save()

        for attribute in attributes['values']:
            newAttribute = ProductAttribute(name=attributes['name'],
                                            product_id=newProduct.id,
                                            quantity=attribute['quantity'],
                                            value=attribute['value'])
            newAttribute.save()

        serializerNewProduct = ProductSerializer(newProduct)

        return JsonResponse(serializerNewProduct.data, status=201)
コード例 #17
0
    def get(self, request, format=None):
        user = self.request.user

        try:
            wishlist = WishList.objects.get(user=user)
            wishlist_items = WishListItem.objects.filter(wishlist=wishlist)

            result = []

            if WishListItem.objects.filter(wishlist=wishlist).exists():
                for wishlist_item in wishlist_items:
                    item = {}

                    item['id'] = wishlist_item.id
                    product = Product.objects.get(id=wishlist_item.product.id)
                    product = ProductSerializer(product)

                    item['product'] = product.data

                    result.append(item)

            return Response({'wishlist': result}, status=status.HTTP_200_OK)
        except:
            return Response(
                {
                    'error':
                    'Something went wrong when retrieving wishlist items'
                },
                status=status.HTTP_500_INTERNAL_SERVER_ERROR)
コード例 #18
0
ファイル: views.py プロジェクト: malabdullah89/EstiloProject
 def get(self, request):
     week1_revenue = 0.0
     week2_revenue = 0.0
     week3_revenue = 0.0
     week4_revenue = 0.0
     delivered_orders_one = Seller.objects.get(pk=request.user.id).seller_orders.filter(order_status='delivered',date__range=[date.today() - relativedelta(weeks=1), date.today()])
     delivered_orders_two = Seller.objects.get(pk=request.user.id).seller_orders.filter(order_status='delivered',date__range=[date.today() - relativedelta(weeks=2),date.today() - relativedelta(weeks=1)])
     delivered_orders_three = Seller.objects.get(pk=request.user.id).seller_orders.filter(order_status='delivered',date__range=[date.today() - relativedelta(weeks=3), date.today() - relativedelta(weeks=2)])
     delivered_orders_four = Seller.objects.get(pk=request.user.id).seller_orders.filter(order_status='delivered',date__range=[date.today() - relativedelta(weeks=4), date.today() - relativedelta(weeks=3)])
     
     for order in delivered_orders_one:
         week1_revenue = week1_revenue+order.sub_total
     
     for order in delivered_orders_two:
         week2_revenue = week2_revenue+order.sub_total
     
     for order in delivered_orders_three:
         week3_revenue = week3_revenue+order.sub_total
     
     for order in delivered_orders_four:
         week4_revenue = week4_revenue + order.sub_total
     revenues = {"week1_revenue": week1_revenue}
     revenues.update({"week2_revenue": week2_revenue})
     revenues.update({"week3_revenue": week3_revenue})
     revenues.update({"week4_revenue": week4_revenue})
     revenues.update({"total_revenue": week1_revenue + week2_revenue + week3_revenue + week4_revenue})
     products = Seller.objects.get(pk=request.user.id).products.all()
     serializer=ProductSerializer(products,many=True)
     revenues['products']=serializer.data
     return Response(revenues)
コード例 #19
0
ファイル: serializers.py プロジェクト: pixies/beraca.org
class CommunitySerializer(serializers.ModelSerializer):

    leadership = CommunityLeadershipSerializer()
    contacts = CommunityContactsSerializer(many=True)
    images = CommunityPictureSerializer(many=True)
    schools = CommunitySchoolSerializer(many=True)
    biomes = CommunityBiomesSerializer(many=True)
    craftworks = CommunityCraftworkSerializer(many=True)
    address = AddressSerializer()
    products = ProductSerializer(many=True)

    class Meta:
        model = Community
        fields = ('id', 'name', 'geo_lat', 'geo_long', 'distance_from_capital',
                  'idh_state', 'idh_city', 'energy_type', 'families_number',
                  'religion', 'traditional_culture', 'craftworks', 'traditional_events',
                  'sanctuaries', 'hospitals_number', 'ready_care_number', 'psf_number',
                  'address', 'leadership', 'products', 'contacts', 'images', 'schools',
                  'biomes')
        read_only_fields = ('id',)

    def create(self, validated_data):
        address_data = validated_data.pop('address')
        address = Address.objects.create(**address_data)

        community = Community(**validated_data)
        community.address = address
        community.save()

        leaderships_data = validated_data.pop('leadership')

        for leadership_data in leaderships_data:
            CommunityLeadership.objects.create(community=community, **leadership_data)

        contacts_data = validated_data.pop('contacts')

        for contact_data in contacts_data:
            CommunityContacts.objects.create(community=community, **contact_data)

        images_data = validated_data.pop('images')

        for image_data in images_data:
            CommunityPicture.objects.create(community=community, **image_data)

        schools_data = validated_data.pop('schools')

        for school_data in schools_data:
            CommunitySchools.objects.create(community=community, **school_data)

        biomes_data = validated_data.pop('biomes')

        for biome_data in biomes_data:
            CommunityBiomes.objects.create(community=community, **biome_data)

        craftworks_data = validated_data.pop('craftwork')

        for craftwork_data in craftworks_data:
            CommunityCraftwork.objects.create(community=community, **craftwork_data)

        return community
コード例 #20
0
ファイル: views.py プロジェクト: hvrc/thrift_store
def product_list_posted(request):
    products = Product.objects.filter(published=True)

    # find all products with published = True:
    if request.method == 'GET':
        products_serializer = ProductSerializer(products, many=True)
        return JsonResponse(products_serializer.data, safe=False)
コード例 #21
0
ファイル: test_views.py プロジェクト: Y4phets/product_catalog
 def test_get_valid_single_product(self):
     response = client.get(
         reverse('get_delete_update_product', kwargs={'pk': self.apple.pk}))
     product = Product.objects.get(pk=self.apple.pk)
     serializer = ProductSerializer(product)
     self.assertEqual(response.data, serializer.data)
     self.assertEqual(response.status_code, status.HTTP_200_OK)
コード例 #22
0
    def test_update_single_product(self):
        updated_payload = {'name': 'Updated Product Heehe', 'category': [1]}
        product = Product.objects.get(id=1)

        response = self.client.put(f'/api/v1/products/{product.slug}/',
                                   updated_payload,
                                   format='json',
                                   **self.user_jwt)
        self.assertEqual(response.status_code, status.HTTP_403_FORBIDDEN)

        response = self.client.put(f'/api/v1/products/{product.slug}/',
                                   updated_payload,
                                   format='json',
                                   **self.admin_jwt)
        self.assertEqual(response.status_code, status.HTTP_200_OK)
        self.assertEqual(
            response.data,
            ProductSerializer(
                Product.objects.get(slug='updated-product-heehe')).data)

        response = self.client.put(f'/api/v1/products/{product.slug}/',
                                   updated_payload,
                                   format='json',
                                   **self.admin_jwt)
        self.assertEqual(response.status_code, status.HTTP_404_NOT_FOUND)
コード例 #23
0
ファイル: views.py プロジェクト: mrnonz/mejai
def product_create(request):
    if request.method == 'POST':
        data = JSONParser().parse(request)

        name = data['name']
        price = data['price']
        userId = data['userId']
        organizationId = data['organizationId']
        categoryId = data['categoryId']
        quantity = data['quantity']
        info = data['info']

        newProduct = Product(name=name,
                             detail=info,
                             price=price,
                             quantity=quantity,
                             auction=0,
                             owner_id=userId,
                             organization_id=organizationId,
                             category_id=categoryId,
                             created_time=datetime.now())
        newProduct.save()

        serializerNewProduct = ProductSerializer(newProduct)

        return JsonResponse(serializerNewProduct.data, status=201)
コード例 #24
0
ファイル: views.py プロジェクト: harizMunawar/La-Virtuele
    def put(self, request, slug):
        """
        Update Product

        Update product that the slug mentioned, returned the updated product if succesful.<br>
        Return 404 if no product with that slug is found.
        """

        product = self.get_object(slug)
        try:
            serializer = ProductSerializer(product, data=request.data)
            if serializer.is_valid():
                serializer.save()
                return Response(serializer.data)
        except ValidationError:
            return Response(serializer.errors, status=status.HTTP_409_CONFLICT)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
コード例 #25
0
ファイル: views.py プロジェクト: harizMunawar/La-Virtuele
    def get(self, request, pk):
        products = Product.objects.filter(Q(category__id__icontains=pk))
        serializer = ProductSerializer(products, many=True)

        if not products:
            return Response(status=status.HTTP_204_NO_CONTENT)

        return Response(serializer.data, status.HTTP_200_OK)
コード例 #26
0
class InvoiceItemsSerializer(serializers.ModelSerializer):
    product = ProductSerializer()
    invoice = InvoiceSerlializer()

    class Meta:
        model = InvoiceItems
        fields = ('id', 'overiddenPrice', 'quatityOffered',
                  'customerDescription', 'product', 'invoice')
コード例 #27
0
 def get(self, request, id):
     product = self.get_product(id)
     serializer = ProductSerializer(product)
     try:
         return Response(serializer.data)
     except:
         return HttpResponse("product id " + str(id) + " not found",
                             status=HTTP_404_NOT_FOUND)
コード例 #28
0
ファイル: views.py プロジェクト: xstation1021/MyFirstDjango
def product_create(request):
    if request.method == 'POST':

        data = {'name': request.DATA.get('name'), 
        'brand': request.DATA.get('brand'), 
        'measure': request.DATA.get('measure'), 
        'unit_size': request.DATA.get('unit_size'), 
        'unit_price': request.DATA.get('unit_price'), 
        'category_id': request.DATA.get('category_id'), 
        'ingredient_id': request.DATA.get('ingredient_id'), 
        }  

        serializer = ProductSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
コード例 #29
0
def test_product_get(db, client):
    """Test"""
    product = baker.make(Product)
    url = reverse("product:get", args=(product.pk, ))
    response = client.get(url)
    data = response.json()
    assert response.status_code == 200
    assert ProductSerializer(product).data == data
コード例 #30
0
def getProductDetail(request, pk):
    # find product by pk (id)
    try:
        product = BaseProduct.objects.get(pk=pk)
    except BaseProduct.DoesNotExist:
        return JsonResponse({'message': 'The product does not exist'},
                            status=status.HTTP_404_NOT_FOUND)

    if request.method == 'GET':
        product_serializer = ProductSerializer(product)
        return JsonResponse(product_serializer.data)

    elif request.method == 'PUT':
        product_data = JSONParser().parse(request)
        product_serializer = ProductSerializer(product, data=product_data)
        if product_serializer.is_valid():
            product_serializer.save()
            return JsonResponse(product_serializer.data)
        return JsonResponse(product_serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        product.delete()
        return JsonResponse({'message': 'Product was deleted successfully!'},
                            status=status.HTTP_204_NO_CONTENT)
コード例 #31
0
ファイル: ProductView.py プロジェクト: AjitJ01/echosmart
def product_list(request):
    # GET list of Product, POST a new Product, DELETE all Product
    if request.method == 'GET':
        product = Product.objects.all()

        name = request.GET.get('name', None)
        if name is not None:
            product = product.filter(name__icontains=name)

        product_serializer = ProductSerializer(product, many=True)
        return JsonResponse(product_serializer.data, safe=False)

        # 'safe=False' for objects serialization
    elif request.method == 'POST':
        # product_data = JSONParser().parse(request)
        product_serializer = ProductSerializer(data=request.data)
        if product_serializer.is_valid():
            product_serializer.save()
            return JsonResponse(product_serializer.data,
                                status=status.HTTP_201_CREATED)
        return JsonResponse(product_serializer.errors,
                            status=status.HTTP_400_BAD_REQUEST)

    elif request.method == 'DELETE':
        count = Product.objects.all().delete()
        return JsonResponse(
            {
                'message':
                '{} Product was/were deleted successfully!'.format(count[0])
            },
            status=status.HTTP_204_NO_CONTENT)