Beispiel #1
0
def filter_items(request, c, items):
    if 'sort' in request.GET:
        request.session['catalog_sort'] = request.GET['sort']
    if 'catalog_sort' in request.session:
        items = items.order_by(request.session['catalog_sort'])
        c['sort'] = request.session['catalog_sort']
    else:
        items = items.order_by('name')
        c['sort'] = 'name'
    
    if 'brand' in request.GET:
        request.session['catalog_brand'] = request.GET['brand']
    if 'catalog_brand' in request.session and request.session['catalog_brand']:
        if Brand.get_by_slug(request.session['catalog_brand']) in c['brands']:
            items = items.filter(brand=Brand.get_by_slug(request.session['catalog_brand']))
            c['brand'] = request.session['catalog_brand']
        else:
            del request.session['catalog_brand']
         
    
    if 'from_price' in request.GET:
        request.session['catalog_from_price'] = request.GET['from_price']
    if 'catalog_from_price' in request.session and request.session['catalog_from_price']:
        items = items.filter(price__gte=int(request.session['catalog_from_price']))
        c['from_price'] = request.session['catalog_from_price']
        
    if 'to_price' in request.GET:
        request.session['catalog_to_price'] = request.GET['to_price']
    if 'catalog_to_price' in request.session and request.session['catalog_to_price']:
        items = items.filter(price__lte=int(request.session['catalog_to_price']))
        c['to_price'] = request.session['catalog_to_price']
        
    if 'season_change' in request.GET:
        request.session['catalog_season'] = request.GET.getlist('season', [])
    if 'catalog_season' in request.session and request.session['catalog_season']:
        items = items.filter(season__in=request.session['catalog_season'])
        c['season'] = request.session['catalog_season']
        
    if 'novelty_sale' in request.GET:
        request.session['catalog_for_sale'] = request.GET.get('for_sale', False)
        request.session['catalog_novelty'] = request.GET.get('novelty', False)
    if 'catalog_for_sale' in request.session and request.session['catalog_for_sale']:
        items = items.exclude(price_old__exact=None)
        c['for_sale'] = True
    if 'catalog_novelty' in request.session and request.session['catalog_novelty']:
        items = items.filter(date__gte=(datetime.datetime.now() - datetime.timedelta(days=7)))
        c['novelty'] = True
    
    if 'color' in request.GET:
        request.session['catalog_color'] = request.GET['color']
    if 'catalog_color' in request.session and request.session['catalog_color']:
        if Color.objects.get(id=int(request.session['catalog_color'])) in c['colors']:
            items = items.filter(color=request.session['catalog_color'])
            c['color'] = int(request.session['catalog_color'])
        else:
            del request.session['catalog_color']
            
        
    if 'material' in request.GET:
        request.session['catalog_material'] = request.GET['material']
    if 'catalog_material' in request.session and request.session['catalog_material']:
        if Material.objects.get(id=int(request.session['catalog_material'])) in c['materials']:
            items = items.filter(material=request.session['catalog_material'])
            c['material'] = int(request.session['catalog_material'])
        else:
            del request.session['catalog_material']
    
    if 'count' in request.GET:
        request.session['catalog_count'] = request.GET['count']
    if 'catalog_count' in request.session:
        c['count'] = request.session['catalog_count']
    else:
        request.session['catalog_count'] = 10
        c['count'] = 10
    
    paginator = Paginator(items, request.session['catalog_count'])
    page = int(request.GET.get('page', '1'))
    try:
        items = paginator.page(page)
    except PageNotAnInteger:
        page = 1
        items = paginator.page(page)
    except EmptyPage:
        page = paginator.num_pages
        items = paginator.page(page)
    c['page'] = page
    c['page_range'] = paginator.page_range
    if len(c['page_range']) > 1:
        c['need_pagination'] = True
    
    c['items'] = items
    return c
Beispiel #2
0
def brand(request, slug):
    c = get_common_context(request)
    c['brand'] = Brand.get_by_slug(slug)
    items = Item.objects.filter(brand=c['brand'])
    return render_to_response('brand.html', filter_items(request, c, items), context_instance=RequestContext(request))