コード例 #1
0
ファイル: views.py プロジェクト: Makeystreet/makeystreet
def product_page(request, sku):
    if_email_add(request)

    user_details = get_user_details_json(request)

    product = Product.objects.get(pk=sku)
    # this is the redirect for products that are marked as identical
    if product.identicalto:
        return HttpResponseRedirect("/product/"+str(product.identicalto.id)+"/")
    if product:
        context = {
            'product_id': sku,
            'user_details': user_details,
            'product': product,
        }
        return render(request, 'catalog/product_page_new.html', context)
    else:
        return HttpResponse('404 Error - this product does not exist')
コード例 #2
0
ファイル: views.py プロジェクト: Makeystreet/makeystreet
def all_stores(request):
    if_email_add(request)
    # if request.user.is_authenticated() == False:
        # return HttpResponseRedirect("/launching_soon")
    login = request.user.is_authenticated()
    user_details = get_user_details_json(request)

    stores = Shop.objects.all()
    for store in stores:
        store.all_likes = LikeShop.objects.filter(shop=store)
        store.products = ProductShopUrl.objects.filter(shop=store).count()
    toindexstores = ToIndexStore.objects.all()

    context = {
        'static_blob': static_blob,
        'login': login,
        'stores': stores,
        'toindexstores': toindexstores,
        'user_details': user_details,
    }

    return render(request, 'catalog/all_stores.html', context)
コード例 #3
0
ファイル: views.py プロジェクト: Makeystreet/makeystreet
def search(request):
    if_email_add(request)

    login = request.user.is_authenticated()
    errors = []
    if 'q' in request.GET:
        form = SearchForm({'q': request.GET['q'], })
        cd = ''
        if form.is_valid():
            cd = form.cleaned_data
        if cd:
            q = cd['q']
        else:
            q = ''

        if not q:
            errors.append("Enter a search term.")
        elif len(q) < 1:
            errors.append("Enter atleast 1 characters.")
        elif len(q) > 50:
            errors.append("Enter atmost 50 characters.")
        else:
            if request.user.is_authenticated() is True:
                log = SearchLog(term=q, user=request.user, time=timezone.now())
            else:
                log = SearchLog(term=q, time=timezone.now())
            log.save()
            q_clean = unicodedata.normalize('NFKD', q).\
                encode('ascii', 'ignore').translate(string.maketrans("", ""),
                                                    string.punctuation).\
                strip().split(" ")
            qs = reduce(operator.and_, (Q(name__icontains=n) for n in q_clean))

            products = Product.objects.filter(qs).filter(identicalto=None).\
                order_by('-score')
            paginator = Paginator(products, 30)
            page = request.GET.get('page')
            if not page:
                page = 1
            try:
                products_page = paginator.page(page)
            except PageNotAnInteger:
                # If page is not an integer, deliver first page.
                products_page = paginator.page(1)
                page = 1
            except EmptyPage:
                # If page is out of range (e.g. 9999), deliver last
                # page of results.
                products_page = paginator.page(paginator.num_pages)
                page = paginator.num_pages

            if int(paginator.num_pages) == 1:
                list_pages = [1]
            elif int(paginator.num_pages) <= 8:
                list_pages = range(1, int(paginator.num_pages)+1)
            elif int(page) <= 2:
                list_pages = range(1, 5) + ['. . .'] + [paginator.num_pages]
            elif int(page) >= int(paginator.num_pages) - 2:
                list_pages = [1, '. . .'] + range(paginator.num_pages-3,
                                                  paginator.num_pages+1)
            else:
                list_pages = ['. . .'] + range(int(page)-2, int(page)+3) +\
                    ['. . .']

            for product in products_page:
                img = ProductImage.objects.filter(product=product.id,
                                                  is_enabled=True)
                if img:
                    product.image_p = img[0]

            context = {
                'static_blob': static_blob,
                'products': products_page,
                'list_pages': list_pages,
                'total_products': 0,
                'query': q,
                'login': login,
            }

            return render(request, 'catalog/search_result.html', context)
    stores = Shop.objects.count()
    products = Product.objects.count()
    return render(request, 'catalog/search_form.html', {'static_blob':
                  static_blob, 'login': login, 'errors': errors,
                  "stores": stores, "products": products})