예제 #1
0
파일: views.py 프로젝트: simple0426/mysite
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')
예제 #2
0
파일: views.py 프로젝트: zshuangyan/syan
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})
예제 #3
0
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
        })
예제 #4
0
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)
예제 #5
0
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})
예제 #6
0
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})
예제 #7
0
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
        },
    )
예제 #8
0
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
        })
예제 #9
0
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)
예제 #10
0
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
        })
예제 #11
0
    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
예제 #12
0
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})
예제 #13
0
    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
예제 #14
0
파일: views.py 프로젝트: Kolbaev/Repos
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})
예제 #15
0
파일: views.py 프로젝트: marychev/pyap_v100
    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
예제 #16
0
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
        })
예제 #17
0
 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)
예제 #18
0
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
예제 #19
0
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
        })
예제 #20
0
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
        })
예제 #21
0
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
예제 #22
0
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
    })
예제 #23
0
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)
예제 #24
0
파일: views.py 프로젝트: vlad1ee/new_shop
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
    })
예제 #25
0
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
        })
예제 #26
0
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
        })
예제 #27
0
 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
     })
예제 #28
0
    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
예제 #29
0
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})
예제 #30
0
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)
예제 #31
0
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)
예제 #32
0
파일: views.py 프로젝트: amosleh1/ecommerce
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)