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)
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 )
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)
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, )
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)
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)
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)
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)
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)
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, )
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, )
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)
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)
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)
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)
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)
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)
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, )
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)
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, )
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)
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)
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) )
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)
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)
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 )
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)
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 )
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 )
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 } )