コード例 #1
0
    def post(self, request, **kwargs):
        try:
            product = request.data.get('product')
            category = request.data.get('category')
            limit = request.data.get('limit') or 3

            objs = ProductCategory.objects.filter(
                product__active=True,
                category=category).exclude(product=product)

            random_limit = objs.count() if objs.count() <= limit else limit
            random_products = random.sample(list(objs), random_limit)

            products = []
            for o in random_products:
                products.append(o.product)

            return custom_response(message='Related products',
                                   data=ProductSerializer(products,
                                                          many=True).data,
                                   status=status.HTTP_201_CREATED)

        except Exception as e:
            return custom_response(
                message=str(e), status=status.HTTP_500_INTERNAL_SERVER_ERROR)
コード例 #2
0
    def get(self, request):
        try:
            file = open('config/file.json')
            obj = json.load(file)

            data = {
                "pagination": {
                    "items_store": obj['pagination']['items_store']
                },
                "payment": {
                    "stripe_public": obj['payment']['stripe_public'],
                    "currency": obj['payment']['currency']
                }
            }

            return custom_response(
                message='Configurations fetched',
                status=status.HTTP_202_ACCEPTED,
                data=data
            )

        except Exception as e:
            return custom_response(
                message=str(e),
                status=status.HTTP_400_BAD_REQUEST
            )
コード例 #3
0
    def put(self, request, **kwargs):
        try:
            product = Product.objects.get(pk=kwargs['pk'])
            product.active = not product.active
            obj = ProductSerializer(product).data
            # Category
            if not obj['category']:
                raise ValueError('Category is required')
            # Descriptions
            if not obj['description_short']:
                raise ValueError('Description short is required')

            if not obj['description_long']:
                raise ValueError('Description long is required')
            # One image
            if len(obj['images']) < 1:
                raise ValueError('At least an image is required')

            product.save()

            return custom_response(
                message=
                f'Product {"Activated" if product.active else "Deactivated"}',
                status=status.HTTP_202_ACCEPTED,
                data=ProductSerializer(product).data)

        except Exception as e:
            return custom_response(message=str(e),
                                   status=status.HTTP_400_BAD_REQUEST)
コード例 #4
0
    def get(self, request):
        try:
            # Check for shop
            shop = request.GET.get('shop')
            check_shop(shop)

            model = Newsletter.objects.filter(shop=shop).order_by('-created')
            objs, pagination_data = pagination(
                model=model,
                page=request.GET.get('page') or 1,
                admin=request.GET.get('admin') or True
            )

            return custom_response(
                message="emails fetched",
                status=status.HTTP_200_OK,
                data=NewsletterSerializer(objs, many=True).data,
                pagination=pagination_data,
                filters={}
            )
        except Exception as error:
            return custom_response(
                message=str(error),
                status=status.HTTP_500_INTERNAL_SERVER_ERROR,
            )
コード例 #5
0
    def delete(self, request, **kwargs):
        try:
            product = Product.objects.delete(pk=kwargs['pk'])

            return custom_response(message='Product removed successfully',
                                   status=status.HTTP_204_NO_CONTENT,
                                   data=ProductSerializer(product).data)

        except Exception as e:
            return custom_response(message=str(e),
                                   status=status.HTTP_400_BAD_REQUEST)
コード例 #6
0
    def put(self, request, **kwargs):
        try:
            product = Product.objects.edit(pk=kwargs['pk'], **request.data)

            return custom_response(message='Product edited',
                                   status=status.HTTP_200_OK,
                                   data=ProductSerializer(product).data)

        except Exception as e:
            return custom_response(message=str(e),
                                   status=status.HTTP_400_BAD_REQUEST)
コード例 #7
0
    def post(self, request):
        try:
            product = Category.objects.create(**request.data)

            return custom_response(message='Category created',
                                   data=CategorySerializer(product).data,
                                   status=status.HTTP_201_CREATED)

        except Exception as e:
            return custom_response(
                message=str(e), status=status.HTTP_500_INTERNAL_SERVER_ERROR)
コード例 #8
0
    def delete(self, request, **kwargs):
        try:
            obj = Category.objects.delete(pk=kwargs['pk'])

            return custom_response(message='Category deleted',
                                   data=CategorySerializer(obj).data,
                                   status=status.HTTP_204_NO_CONTENT)

        except Exception as e:
            return custom_response(
                message=str(e), status=status.HTTP_500_INTERNAL_SERVER_ERROR)
コード例 #9
0
    def get(self, request, **kwargs):
        try:
            obj = Order.objects.get(pk=kwargs['pk'])

            return custom_response(message='Order fetched',
                                   data=OrderSerializer(obj).data,
                                   status=status.HTTP_200_OK)

        except Exception as error:
            return custom_response(message=str(error),
                                   status=status.HTTP_400_BAD_REQUEST)
コード例 #10
0
 def delete(self, requests, **kwargs):
     try:
         obj = UserMessage.objects.delete(pk=kwargs['pk'])
         return custom_response(message="user message deleted",
                                status=status.HTTP_204_NO_CONTENT,
                                data=UserMessageSerializer(obj).data)
     except Exception as error:
         return custom_response(
             message=str(error),
             status=status.HTTP_500_INTERNAL_SERVER_ERROR,
         )
コード例 #11
0
 def post(self, requests):
     try:
         obj = UserMessage.objects.create(**requests.data)
         return custom_response(message="user message created",
                                status=status.HTTP_201_CREATED,
                                data=UserMessageSerializer(obj).data)
     except Exception as error:
         return custom_response(
             message=str(error),
             status=status.HTTP_500_INTERNAL_SERVER_ERROR,
         )
コード例 #12
0
    def put(self, request, **kwargs):
        try:
            print(request.data.get('id'))
            obj = Order.objects.edit(pk=request.data['id'], **request.data)

            return custom_response(message='Order edited',
                                   status=status.HTTP_200_OK,
                                   data=OrderSerializer(obj).data)

        except Exception as e:
            return custom_response(message=str(e),
                                   status=status.HTTP_400_BAD_REQUEST)
コード例 #13
0
    def put(self, request, **kwargs):
        try:
            obj = Category.objects.get(pk=kwargs['pk'])
            category = Category.objects.edit(pk=obj.id, **request.data)

            return custom_response(message='Category edited',
                                   data=CategorySerializer(category).data,
                                   status=status.HTTP_200_OK)

        except Exception as e:
            return custom_response(
                message=str(e), status=status.HTTP_500_INTERNAL_SERVER_ERROR)
コード例 #14
0
    def delete(self, request, **kwargs):
        try:
            Product.objects.get(pk=kwargs['pk'])
            image = Images.objects.get(pk=kwargs['image_pk'])
            image.delete()

            return custom_response(message='Image deleted',
                                   status=status.HTTP_204_NO_CONTENT,
                                   data=ImagesSerializer(image).data)

        except Exception as e:
            return custom_response(message=str(e),
                                   status=status.HTTP_400_BAD_REQUEST)
コード例 #15
0
    def put(self, request, **kwargs):
        try:
            # Check for product
            Product.objects.get(pk=kwargs['pk'])
            spec = Specs.objects.edit(pk=kwargs['spec_pk'], **request.data)

            return custom_response(message='Spec updated',
                                   status=status.HTTP_200_OK,
                                   data=SpecsSerializer(spec).data)

        except Exception as e:
            return custom_response(message=e,
                                   status=status.HTTP_400_BAD_REQUEST)
コード例 #16
0
    def put(self, request, **kwargs):
        try:
            Product.objects.get(pk=kwargs['pk'])
            objs = Specs.objects.bulk_edit_index(
                product=kwargs['pk'], specs=request.data.get('specs'))

            return custom_response(message='Specs updated',
                                   status=status.HTTP_202_ACCEPTED,
                                   data=SpecsSerializer(objs, many=True).data)

        except Exception as e:
            return custom_response(message=str(e),
                                   status=status.HTTP_400_BAD_REQUEST)
コード例 #17
0
    def post(self, request, **kwargs):
        try:
            data = request.data
            data['product'] = Product.objects.get(pk=kwargs['pk'])
            spec = Specs.objects.create(**request.data)

            return custom_response(message='Spec created',
                                   status=status.HTTP_201_CREATED,
                                   data=SpecsSerializer(spec).data)

        except Exception as e:
            return custom_response(message=str(e),
                                   status=status.HTTP_400_BAD_REQUEST)
コード例 #18
0
 def delete(self, requests, **kwargs):
     try:
         obj = Newsletter.objects.delete(pk=kwargs['pk'])
         return custom_response(
             message="newsletter email unsubscribed",
             status=status.HTTP_204_NO_CONTENT,
             data=NewsletterSerializer(obj).data
         )
     except Exception as error:
         return custom_response(
             message=str(error),
             status=status.HTTP_500_INTERNAL_SERVER_ERROR,
         )
コード例 #19
0
    def put(self, requests, **kwargs):
        try:
            product = Product.objects.get(pk=kwargs['pk'])
            category = Category.objects.get(pk=kwargs['category_pk'])
            obj = ProductCategory.objects.edit(pk=product, category=category)

            return custom_response(message='Product category edited',
                                   data=ProductCategorySerializer(obj).data,
                                   status=status.HTTP_200_OK)

        except Exception as e:
            return custom_response(
                message=str(e), status=status.HTTP_500_INTERNAL_SERVER_ERROR)
コード例 #20
0
 def post(self, requests):
     try:
         obj = Newsletter.objects.create(**requests.data)
         return custom_response(
             message="Email sent",
             status=status.HTTP_201_CREATED,
             data=NewsletterSerializer(obj).data
         )
     except Exception as error:
         return custom_response(
             message=str(error),
             status=status.HTTP_500_INTERNAL_SERVER_ERROR,
         )
コード例 #21
0
    def post(self, request, **kwargs):
        try:
            obj = Order.objects.get(pk=kwargs['pk'])
            obj.canceled = not obj.canceled
            obj.save()

            return custom_response(
                message=f'Order {"canceled" if obj.canceled else "uncanceled"}',
                status=status.HTTP_202_ACCEPTED,
                data=OrderSerializer(obj).data)

        except Exception as e:
            return custom_response(message=str(e),
                                   status=status.HTTP_400_BAD_REQUEST)
コード例 #22
0
    def delete(self, request, **kwargs):
        try:
            # Check for product
            Product.objects.get(pk=kwargs['pk'])
            spec = Specs.objects.get(pk=kwargs['spec_pk'])
            spec.delete()

            return custom_response(message='Spec deleted',
                                   status=status.HTTP_204_NO_CONTENT,
                                   data=SpecsSerializer(spec).data)

        except Exception as e:
            return custom_response(message=str(e),
                                   status=status.HTTP_400_BAD_REQUEST)
コード例 #23
0
 def post(self, request):
     shop = request.GET.get('shop')
     try:
         obj = check_shop(shop)
         return custom_response(
             status=status.HTTP_200_OK,
             message='Store OK',
             data=obj
         )
     except Exception as e:
         return custom_response(
             status=status.HTTP_400_BAD_REQUEST,
             message=str(e)
         )
コード例 #24
0
    def get(self, request):
        try:
            shop = request.GET.get('shop')
            check_shop(shop)

            categories = Category.objects.get_all(shop=shop)

            return custom_response(message='Categories fetched',
                                   data=CategorySerializer(categories,
                                                           many=True).data,
                                   status=status.HTTP_200_OK)

        except Exception as e:
            return custom_response(
                message=str(e), status=status.HTTP_500_INTERNAL_SERVER_ERROR)
コード例 #25
0
    def post(self, request, **kwargs):
        try:
            product = Product.objects.get(pk=kwargs['pk'])
            images = request.FILES.getlist('path')

            for image in images:
                data = {'path': image, 'product': product}
                Images.objects.create(**data)

            return custom_response(message='Image created',
                                   status=status.HTTP_201_CREATED)

        except Exception as e:
            return custom_response(message=str(e),
                                   status=status.HTTP_400_BAD_REQUEST)
コード例 #26
0
    def get(self, request):
        try:
            if request.user.is_anonymous:
                raise ValueError('No account found')
            return custom_response(
                data=AccountSerializer(request.user).data,
                message=f'Account checked',
                status=status.HTTP_200_OK
            )

        except Exception as e:
            return custom_response(
                message=str(e),
                status=status.HTTP_400_BAD_REQUEST
            )
コード例 #27
0
    def post(self, request):
        products = check_cart(request.data)

        file = open('config/file.json')
        obj = json.load(file)
        shipping = obj['taxes']['shipping']
        free_shipping_over = obj['taxes']['free_shipping_over']

        total_products_price, total_quantity = calculate_totals(products)

        if total_products_price >= free_shipping_over:
            shipping = 0

        total_price = shipping + total_products_price

        data = {
            "products": products,
            "total_products_price": round(total_products_price, 2),
            "shipping": shipping,
            "total_price": round(total_price, 2),
            "total_quantity": total_quantity
        }

        return custom_response(message="cart items fetched",
                               status=status.HTTP_200_OK,
                               data=data)
コード例 #28
0
    def get(self, request):
        try:
            file = open('config/file.json')
            obj = json.load(file)

            return custom_response(
                message='Configurations fetched',
                status=status.HTTP_202_ACCEPTED,
                data=obj
            )

        except Exception as e:
            return custom_response(
                message=str(e),
                status=status.HTTP_400_BAD_REQUEST
            )
コード例 #29
0
    def post(self, request, **kwargs):
        try:
            account = Account.objects.create_superuser(**request.data)
            token, _ = Token.objects.get_or_create(user=account)
            data = AccountSerializer(account).data
            data['token'] = token.key

            return custom_response(
                data=data,
                message=f'Account was created',
                status=status.HTTP_200_OK
            )

        except Exception as e:
            return custom_response(
                message=str(e),
                status=status.HTTP_400_BAD_REQUEST
            )
コード例 #30
0
    def get(self, request):
        obj = Account.objects.filter(is_admin=True)
        allow = obj.count() < 1

        return custom_response(
            status=status.HTTP_200_OK,
            message=f'{"ALLOWED" if allow else "NOT ALLOWED"}',
            data={
                'register': allow
            }
        )