def cart_add(request, product_id): cart = Cart(request) product = get_object_or_404(Product, id=product_id) form = CartAddProductForm(request.POST) if form.is_valid(): cd = form.cleaned_data cart.add(product=product, quantity=cd['quantity'], update_quantity=cd['update']) return redirect('cart:cart_detail')
def book_detail(request,slug): book = get_object_or_404(Book, slug= slug) categories = Category.objects.filter(is_active=True) related_books = Book.objects.filter(category=book.category) #delete oneself from the filter result and get the first four result related_books = related_books.exclude(id = book.id)[:4] form = CartAddProductForm() if request.method == 'POST': form = CartAddProductForm(request.POST) '''import pdb; pdb.set_trace()''' if form.is_valid(): cd = form.cleaned_data cart = Cart(request) cart.add( book= book ,quantity = cd['quantity']) return HttpResponseRedirect(reverse('cart:show_cart')) else: return render(request,'catalog/book_detail.html',{'book':book,'related_books':related_books,'categories':categories,'form':form})
def product_detail(request, id, slug): language = request.LANGUAGE_CODE product = get_object_or_404(Product, translations__language_code=language, translations__slug=slug, available=True) cart_product_form = CartAddProductForm() r = Recommender() recommended_products = r.suggest_products_for([product], 4) return render( request, 'shop/product/detail.html', { 'product': product, 'cart_product_form': cart_product_form, 'recommended_products': recommended_products })
def chiTietSanPham(request, id): listCategory = Category.objects.all() productcate = Product.objects.filter(id=id) detail = Product.objects.get(id=id) brand = Brand.objects.all() otherPro = Product.objects.filter(cate_id=detail.cate_id) product = get_object_or_404(Product, id=id, status=True) cart_product_form = CartAddProductForm() context = { 'productcate': productcate, 'listscan': listCategory, 'detail': detail, 'brand': brand, 'otherPro': otherPro, 'product': product, 'cart_product_form': cart_product_form, } return render(request, 'homepage/chiTietSanPham.html', context=context)
def home(request,): category = Category.objects.all() products = Product.objects.all() cart_product_form = CartAddProductForm() # paginate paginator = Paginator(products, 4) page = request.GET.get('page') try: products = paginator.page(page) except PageNotAnInteger: products = paginator.page(1) except EmptyPage: products = paginator.page(paginator.num_pages) return render(request, 'home.html', {'products':products, 'categories': category, 'cart_product_form': cart_product_form})
def place_search(request): category = Category.objects.all() cart_product_form = CartAddProductForm() errors = {} if 'q' in request.GET: q = request.GET['q'] if not q: errors = 'Введите название товара для поиска.' elif len(q) > 20: errors = 'Введите не более 20 символов.' else: products = Product.objects.filter(name__icontains=q) return render(request, 'search.html', {'products': products, 'categories': category, 'query': q, 'cart_product_form': cart_product_form }) return render(request, 'search.html', {'errors': errors, 'categories': category, 'cart_product_form': cart_product_form})
def product_detail(request, id, slug): language = request.LANGUAGE_CODE product = get_object_or_404( Product, id=id, translations__language_code=language, translations__slug=slug, available=True, ) cart_product_form = CartAddProductForm() return render( request, "shop/product/detail.html", { "product": product, "cart_product_form": cart_product_form }, )
def product_detail(request, id, slug): """ Single Product view to display product detail page via ID. Slug passed in for urls building """ title = "LR Ireland | Product Detail" product = get_object_or_404(Product, id=id, slug=slug, available=True) category = None categories = Category.objects.all() cart_product_form = CartAddProductForm() return render( request, 'shop/product/detail.html', { 'product': product, 'category': category, 'categories': categories, 'cart_product_form': cart_product_form, 'title': title })
def dashboard(request: WSGIRequest) -> HttpResponse: filter = ProductFilter(request.GET, queryset=Product.objects.all()) producents = Producent.objects.all() categories = Category.objects.all() products = Product.objects.all() cart_product_form = CartAddProductForm() name = request.GET.get("name") if name: return redirect('products_list', filter=name) return render(request, 'shop/dashboard.html', { 'filter': filter, 'producents': producents, 'categories': categories, 'products:': products, 'cart_product_form': cart_product_form }, status=HTTPStatus.OK)
def ProductDetail(request, id, slug): rating_form = RatingCreateForm() cart_product_form = CartAddProductForm() categories = Category.objects.all() product = get_object_or_404(Product, id=id, slug=slug, available=True) ## все цвета и размеры на станице товара для данной модели ## clrs = [] sizs = [] for cs in list( Product.objects.filter(slug=slug).values('size__sz', 'color__name')): if cs['color__name'] not in clrs: clrs.append(cs['color__name']) if cs['size__sz'] not in sizs: sizs.append(cs['size__sz']) clrs = (', ').join(clrs) sizs = (', ').join(sizs) ###### if request.method == "POST": rating_form = RatingCreateForm(request.POST) if rating_form.is_valid(): cd = rating_form.cleaned_data Rating.objects.create(rating=cd['rating'], product_id=product.id, email=cd['email'], author=cd['author'], ratingcomment=cd['ratingcomment']) link = 'http://www.docsimvol.ru' + product.get_absolute_url() text = 'от: %s. \ne-mail: %s. \nОтзыв: %s. \nПоставил(а) оценку: %s. \nссылка на товар: %s \nНапоминание: необходимо разрешить показывать' \ ' этот отзыв на сайте или удалить...' % ( cd['author'].title(), cd['email'], cd['ratingcomment'].capitalize(), cd['rating'], link) sender_mail.delay('Оставлен новый комментарий о товаре', text) return render(request, 'ratecreated.html', {'author': cd['author']}) return render( request, 'product-detail.html', { 'categories': categories, 'product': product, 'cart_product_form': cart_product_form, 'clrs': clrs, 'sizs': sizs, 'rating_form': rating_form })
def get_context_data(self, **kwargs): if self.request.method == 'POST' and self.request.is_ajax(): project_id = self.request.POST.get('changePrice', '') else: project_id = 0 active_category_id = self.request.GET.get('category_id') main_categories = Category.get_main_categories() print project_id cart_product_form = CartAddProductForm() add_product_id = self.request.GET.get('category_id') url = self.request.get_full_path() self.request.session['url'] = url print url if not active_category_id: products = Product.objects.all() active_category = None #print Cart.__len__() print products else: # active_category_id = int(active_category_id) products = Product.objects.filter( category_id=int(active_category_id)) active_category = Category.objects.get(id=int(active_category_id)) def post(self, request, *args, **kwargs): self.object = self.get_object() context = self.get_context_data(object=self.object) return self.render_to_response(context) context = super(CategoryListView, self).get_context_data(**kwargs) # context['categories'] = ServiceCategory.objects.filter(parent_id = active_category_id) context['products'] = products context['series'] = Product.objects.all() context['active_category_id'] = active_category_id context['active_category'] = active_category context['cart_product_form'] = cart_product_form return context
def dashboard(request): orders = get_orders_of_user(request.user) # favorites = get_favorite_products(request.user) # chart_qty = chart_ordered_products(request.user) # chart_amount = get_chart_ordered_amounts(request.user) # return render(request, 'shop/dashboard.html', {'orders': orders, 'products':favorites, 'chart_qty':chart_qty, 'chart_amount':chart_amount}) cart = Cart(request) for item in cart: print(item) item['update_form'] = CartAddProductForm( initial={ 'product_name': item['product'].id, 'quantity': item['quantity'], 'um': item['um'], 'update': True }) quick_submit_form = OrderCreateForm() custID = int(request.session.get("customer_selected", '0')) if custID > 0: cust = get_object_or_404(Customer, id=custID) quick_submit_form.initial['customer'] = custID quick_submit_form.initial['first_name'] = cust.first_name quick_submit_form.initial['last_name'] = cust.last_name quick_submit_form.initial['email'] = cust.email quick_submit_form.initial['address'] = cust.address quick_submit_form.initial['phone'] = cust.phone # quick_submit_form.initial['first_name'] = request.user.first_name # quick_submit_form.initial['last_name'] = request.user.last_name # quick_submit_form.initial['email'] = request.user.email # if request.user.profile: # quick_submit_form.initial['address'] = request.user.profile.address # quick_submit_form.initial['phone'] = request.user.profile.phone return render( request, 'shop/dashboard.html', { 'orders': orders, 'search_form': CartAddProductForm, 'cart': cart, 'quick_submit_form': quick_submit_form } ) #, {'orders': orders, 'products':favorites, 'chart_qty':chart_qty, 'chart_amount':chart_amount})
def get_context_data(self, **kwargs): context = super(CartPageView, self).get_context_data(**kwargs) title = "Pomelo.Net | Koszyk" cart = Cart(self.request) for item in cart: item['update_quantity_form'] = CartAddProductForm( initial={ 'quantity': item['quantity'], 'update': True }) context.update({ 'cart': cart, 'title': title, 'category': Category.objects.all() }) return context
def product_detail(request, id, slug): product = get_object_or_404(Product, id=id, slug=slug, available=True) cart_product_form = CartAddProductForm() comment = Comment.objects.all() if request.method == "POST": form = CommentForm(request.POST) if form.is_valid(): form.save() form = CommentForm() else: form = CommentForm() return render(request, 'shop/product/detail.html', {'product': product, 'cart_product_form': cart_product_form, 'comments': comment, 'form': form})
def get_context_data(self, **kwargs): context = super(ProductDetail, self).get_context_data(**kwargs) context['product'] = get_object_or_404(Product, slug=kwargs['product']) initial = { 'obj': context['product'], 'request': self.request, } comment_form = CommentForm(initial=initial) context['comment_form'] = comment_form context['comments'] = ProductComment.objects.filter( is_show=True, product_id=context['product'].id) context['catalog'] = get_object_or_404(Catalog, slug=kwargs['catalog']) context['cart_product_form'] = CartAddProductForm() context['next_prev'] = get_next_prev(Product, context['product']) context['leftbar'] = get_leftbar(Catalog, context['catalog']) return context
def cart_detail(request): cart = Cart(request) for item in cart: item['update_quantity_form'] = CartAddProductForm( initial={ 'quantity': item['quantity'], 'update': True }) coupon_apply_form = CouponApplyForm() r = Recommender() cart_products = [item['product'] for item in cart] recommended_products = r.suggest_products_for(cart_products, max_results=4) return render( request, 'cart/detail.html', { 'cart': cart, 'coupon_apply_form': coupon_apply_form, 'recommended_products': recommended_products })
def get(self, request, id): # product = Product.objects.get(id=id) detail_images = Images.objects.filter(product_id=id) main_img = Images.objects.filter(product_id=id).first() details = ProductDetails.objects.get(product_id=id) specs = Specifications.objects.filter(product_id=id) desc = Description.objects.filter(product_id=id) cap = Capacity.objects.filter(product_id=id) context = get_ecommerence_context_data() # context['pro'] = product context['detail_images'] = detail_images context['main_img'] = main_img context['details'] = details context['specs'] = specs context['desc'] = desc context['cap'] = cap context['product_id'] = id context['cart_product_form'] = CartAddProductForm() return render(request, self.template_name, context)
class ProductDetail(generic.DetailView): model = Product template_name = "product_detail.html" cart_product_form = CartAddProductForm() def get_context_data(self, **kwargs): context = super(ProductDetail, self).get_context_data(**kwargs) context['similar_products'] = Product.objects.all() context['cart_product_form'] = self.cart_product_form return context def get_object(self): # Call the superclass object = super(ProductDetail, self).get_object() # Update the views everytime this product is viewed object.views = object.views + 1 object.save() # Return the object return object
def product_list(request, category_slug=None): category = None categories = Category.objects.all() products = Product.objects.filter(available=True) cart_product_form = CartAddProductForm() cart_product_form.fields['quantity'].initial = 1 if category_slug: category = get_object_or_404(Category, slug=category_slug) products = products.filter(category=category) return render( request, 'shop/list.html', { 'category': category, 'categories': categories, 'products': products, 'cart_product_form': cart_product_form })
def product_list(request, category_slug=None): category = None categories = Category.objects.all() products = Product.objects.filter() cart_product_form = CartAddProductForm() if category_slug: category = get_object_or_404(Category, slug=category_slug) products = products.filter(category=category) template = 'shop/product/smartphones.html', else: template = 'index.html' return render( request, template, { 'category': category, 'categories': categories, 'products': products, 'cart_product_form': cart_product_form })
class ProductDetailView(DetailView): model = Product template_name = 'shop/product/detail.html' context_object_name = 'product' query_pk_and_slug = True extra_context = { 'cart_product_form': CartAddProductForm() } def get_object(self): language = self.request.LANGUAGE_CODE id = self.kwargs['id'] slug = self.kwargs['slug'] product = get_object_or_404(self.model, id=id, translations__language_code=language, translations__slug=slug, available=True) return product
def index(request): banners = Activity.objects.all() kinds = Tag.objects.all() all_fruit = {} form = CartAddProductForm() for kind in kinds: fruit = Fruit.objects.filter(kinds__in=[kind])[:6] all_fruit[smart_unicode(kind)] = fruit if request.method == "POST": fruits = Fruit.objects.filter(title__contains=request.POST['query']) return render(request, 'search.html', {'fruits': fruits}) return render(request, "index.html", { "banners": banners, "all_fruit": all_fruit, "form": form })
def shop(request): product = Product.objects.all() product_list = Product.objects.all() cart_product_form = CartAddProductForm() page = request.GET.get('page', 1) paginator = Paginator(product_list, 6) try: products = paginator.page(page) except PageNotAnInteger: products = paginator.page(1) except EmptyPage: products = paginator.page(paginator.num_pages) context = {'cart_product_form': cart_product_form, 'producent': product, 'products': products, } return render(request, 'shop/shop.html', context)
def get_detail(request, pk): product = Product.objects.get(pk=pk) product.views += 1 product.save(update_fields=['views']) cart_product_form = CartAddProductForm() if request.method == 'POST': form = CommentForm(request.POST) if form.is_valid(): comment = form.save(commit=False) comment.product = product comment.authored_by = request.user comment.save() return redirect('get_detail_url', pk=pk) form = CommentForm() return render(request, 'product/detail.html', { 'product': product, 'form': form, 'cart_product_form': cart_product_form })
def product_list(request, category_slug=None): """ Product Catalog view to display all available products or to display products filtered by category. """ title = "LR Ireland | All Products" categories = Category.objects.all() products = Product.objects.filter(available=True) cart_product_form = CartAddProductForm() if category_slug: category = get_object_or_404(Category, slug=category_slug) products = products.filter(category=category) return render( request, 'shop/product/list.html', { 'products': products, 'categories': categories, 'cart_product_form': cart_product_form, 'title': title })
def product_search(request): form = SearchForm() query = None results = [] cart_product_form = CartAddProductForm() if 'query' in request.GET: form = SearchForm(request.GET) if form.is_valid(): query = form.cleaned_data['query'] available_prod = Product.objects.filter(available=True) results = available_prod.annotate(search=SearchVector( 'name', 'description'), ).filter(search=query) return render( request, 'search/search.html', { 'form': form, 'query': query, 'results': results, 'cart_product_form': cart_product_form })
def get(self, request): user = request.user cart, created = Cart.objects.get_or_create(user=user) items = cart.cartproduct_set.all() form_coupon = AddCouponForm() cart.total_price = 0 for item in items: item.update_quantity_form = CartAddProductForm( initial={ 'quantity': item.quantity, 'override_quantity': True }) item.total_price = item.quantity * item.product.price cart.total_price += item.total_price return render(request, 'cart/cart_detail.html', { 'items': items, 'cart': cart, 'form_coupon': form_coupon })
def get_context_data(self, *args, **kwargs): context = super(ProductDetailView, self).get_context_data(**kwargs) title = "Pomelo.Net | " + self.object.name total_quantity = 0 cart_product_form = CartAddProductForm(initial={'quantity': 1}) if self.request.user.is_authenticated(): user_form = User.objects.get(id=self.request.user.id) else: user_form = None product_review_form = ReviewForm(initial={ 'user': user_form, 'product': self.object.id }) # obliczam ilość produktu we wszystkich magazynach for stock in self.object.ProductStatus.all(): total_quantity += stock.quantity # zapisuje produkty powiązane po kategorii related = Product.objects.all().filter(category=self.object.category) # Jeśli nie bedzie obniżki w bazie danych przydzielam jej 0 try: discount = ProductDiscount.objects.get(product=self.object) except ProductDiscount.DoesNotExist: discount = 0 context.update({ 'title': title, 'product': Product.objects.all(), 'images': self.object.images, 'quantity': total_quantity, 'related': related, 'discount': discount, 'category': Category.objects.all(), 'form_cart': cart_product_form, 'form': product_review_form }) return context
def product_detail(request, id, slug): product = get_object_or_404(Product, id=id, slug=slug, available=True) # This will get a single product, using both ID and Slug. It will work with primary key alone, # but this method allows for URL pattern building cart_product_form = CartAddProductForm() # The recommender is called here to list suggestions on the product detail screen. r = Recommender() recommended_products = r.suggest_products_for([product], 4) # Here are the list of items send for use in the view, the product, handling input information via the form # and the list of calculated recommended products itself. return render(request, 'shop/product/detail.html', {'product': product, 'cart_product_form': cart_product_form, 'recommended_products': recommended_products})
def search_view(request): products = Product.objects.all() query = request.GET.get('q') founded = [] # т.к. SQLite не поддерживает регистронезависимый поиск Unicode, # поэтому нельзя использовать __icontains for product in products: if query.lower() in product.title.lower(): founded.append(product) categories = Category.objects.all() cart_product_form = CartAddProductForm() context = { 'cart_product_form': cart_product_form, 'categories': categories, 'founded': founded } return render(request, 'main/search.html', context)
def product_list(request, category_slug=None): category = None categories = Category.objects.all() products = Product.objects.filter(available=True).order_by('-id') cart_product_form = CartAddProductForm() if category_slug: category = get_object_or_404(Category, slug=category_slug) products = products.filter(category=category) try: profile = Profile.objects.get_or_create(user=request.user)[0] except: profile = None context = { 'category': category, 'categories': categories, 'products': products, 'cart_product_form': cart_product_form, 'profile': profile, } return render(request, 'Ecom/product/list.html', context)
def product_detail(request, id, slug): """ For displying All information related to ONE Products and listing all categories """ #for listing Categories othat has at least one published product categories = Category.objects.filter(products__is_published=True).distinct() product = get_object_or_404(Product,id=id,slug=slug,is_published=True) related_categories = product.categories.all() # Related products List has the same category as the current prodcut without repeatition. related_products = Product.objects.filter(categories__in=list(related_categories)).exclude(id=product.id).distinct() #intializing the cart form cart_product_form = CartAddProductForm() # Final Context Variables to Send back context = { 'categories': categories, 'product': product, 'related_products':related_products, 'cart_product_form':cart_product_form } return render(request,'product/detail.html', context)