Example #1
0
def show_product(request, product_slug, template_name):
    object      = get_object_or_404(Product.objects.select_related(), slug=product_slug)
    
    try:
        metainfo = object.metatags.all()
    except:
        metainfo = ''
   
    # evaluate http method
    if request.method == 'POST':
        # add to cart...create the bound form
        postdata = request.POST.copy()
        #form     = ProductAddToCartForm(request, postdata)
        # check if posted data is valid
        #if form.is_valid():
            # add to cart and redirect
            #cart_functions.add_to_cart(request)
            # if test cookie worked, delete id
            #if request.session.test_cookie_worked():
                #request.session.delete_test_cookie()
            #url = urlresolvers.reverse('show_cart')
            #return redirect(url)
        #else:
	    #print form.errors
    #else:
        # it's a GET, so create the unbound form, note request as kwarg
        #form = ProductAddToCartForm(request=request, label_suffix=':')
    # assign the hidden input to the product_slug
    #form.fields['product_slug'].widget.attrs['value'] = object.slug
    # set the test cookie in the first GET request of a product
    # we already do this in index, but there can be a direct link to a product
    # and we must be ready to add it to cart
    request.session.set_test_cookie()
    # log product view in order to show it to others probably interested in it
    stats_functions.log_product_view(request, object)
    
    view_recs	    = stats_functions.recommended_from_views(request)
    #view_related    = object.cross_sells()
    recently_viewed = stats_functions.get_recently_viewed(request)

    return render_to_response(template_name, {
            'object'            : object,
            'page_title'        : object.nombre,
            'metainfo'          : metainfo,
            #'form'              : form,
            'view_recs'         : view_recs,
            #'view_related'      : view_related,
            'recently_viewed'   : recently_viewed,
        },
        context_instance=RequestContext(request))
Example #2
0
def show_category(request, path, template_name, brand_slug=None, page_number=1):

    if request.POST:
        if brand_slug and brand_slug != 'all':
            url = urlresolvers.reverse('catalog_brand', kwargs={'path': path, 'brand_slug': brand_slug})
        else:
            url = urlresolvers.reverse('catalog_category', kwargs={'path': path})
        return redirect(url)

    # reutilizamos variables del contexto
    context = RequestContext(request)
    current_site = context['site']
    
    try:
        brand = Brand.objects.get(slug=brand_slug)
    except:
        brand = None

    path = path.rstrip("/") # eliminamos la barra más a la derecha si la hay
    if path.count("/") > 0:
	parent_slug = path.split("/")[-2] # si hay al menos uno es que hay un slug padre
    else:
	parent_slug = None # si no únicamente hay un slug
    slug = path.split("/")[-1]

    # para no confundir categorias con mismo slug y distinto padre
    if parent_slug:
	object = get_object_or_404(Category, slug=slug, parent__slug=parent_slug)
    else:
	object = get_object_or_404(Category, slug=slug, parent=None)


    order_slug = request.GET.get('orden', None)
    ORDERING = {
      'nombre-a-z' : {'key':'nombre', 'reverse':''},
      'nombre-z-a' : {'key':'nombre', 'reverse':'-'},
    }
    if order_slug:
	ordering = ORDERING[order_slug]
    else: #default
	ordering = ORDERING['nombre-a-z']
    
    # recuperar productos para categoría (e hijos) y marca (e hijos) si la hay
    object_list = object.all_product_set(brand_slug)
    # ordenar segun se haya solicitado
    object_list = object_list.order_by('%s%s' % (ordering['reverse'], ordering['key']))
    page_title  = object.nombre
    
    if not object_list:
	recently_viewed = stats_functions.get_recently_viewed(request)
	view_recs       = stats_functions.recommended_from_views(request)
	paginator       = None
    else:
        # paginar
        products_per_page = 15 if current_site.id == 1 else 16
        try:
            paginator       = DiggPaginator(object_list, products_per_page, body=3, padding=1, margin=1,).page(page_number)
        except InvalidPage, e:
            return HttpResponseGone()
        object_list     = paginator.object_list
        recently_viewed = None
        view_recs       = None