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