예제 #1
0
def quick(request):
    if not request.is_ajax():
        return redirect('search:search')

    q = request.REQUEST.get('q')
    qs = Item.search_by_keyword(q)
        
    try:        
        res = []
        for i in qs[:7]:
            res.append({
                'url': i.get_absolute_url(),
                'title': i.get_cropped_name() + ' ' + unicode(i.category),
                'upc': i.upc,
                'release_date': defaultfilters.date(i.release_date) if i.release_date else None,
                'icon': i.get_nano_thumb(),
            })
    except Exception, e:
        debug(e)
예제 #2
0
def quick_game_finder(qs, q):
    qs = Item.search_by_keyword(q, qs)
    return qs
예제 #3
0
        elif order_by == 3: #Value: Low to High
            qs = qs.filter(trade_flag=True, trade_price__gt='0.0').order_by('trade_price')
        elif order_by == 4: #Value: High to Low
            qs = qs.filter(trade_flag=True, trade_price__gt='0.0').order_by('-trade_price')
        elif order_by == 5: #Rent Availability
            qs = qs.filter(rent_status__lt=6).order_by('-rent_status')
        elif order_by == 6: #Release Date
            qs = qs.exclude(release_date=None).order_by('-release_date')
        elif order_by == 7: ## of Players
            qs = qs.order_by('-number_of_players')
    
    q = request.GET.get('q')
    if q:
        title = q
        base_url['q'] = q
        qs = Item.search_by_keyword(q, qs=qs)
        
    if title and category:
        title += ' (' + category.name + ')'
        
    title = title or 'All Games'

    base_url = '&'.join(['%s=%s' % (k, urlquote(v)) for k, v in base_url.items()])    

    paginator = Paginator(qs, settings.SEARCH_RESULTS_PER_PAGE, 2)
    try:
        current_page = paginator.page(page)
    except Exception, e:
        debug(e)
        raise Http404()
예제 #4
0
def wimgw(request):
    if request.is_ajax():
        if 'wimgw' in request.GET:
            return render_to_response('partials/wimgw.html', get_wimgw_context(request), RequestContext(request))
        elif 'carousel' in request.GET:
            carousel = request.GET['carousel']
            if carousel not in ['rent', 'trade', 'buy']:
                return HttpResponseBadRequest()
            if 'c' in request.GET:
                category = get_object_or_404(Category, slug=request.GET['c'])
            else:
                category = None
            carousel = {
                'trade': ('hottest_tradeins_carousel', {
                    'hot_trades': Item.list_all(category=category).filter(trade_flag=True, trade_price__gt=0).order_by('-trade_amount', 'id')[:20],}),
                'rent': ('most_rentals_carousel', {
                    'most_rentals': Item.list_all(category=category).filter(rent_flag=True).order_by('-rent_amount', 'id')[:20],}),
                'buy': ('best_sellers_carousel', {
                    'best_sellers': Item.list_hottest_selling(category=category)}),
            }[carousel]
            return render_to_response('partials/wimgw/%s.html' % carousel[0],
                                      carousel[1], RequestContext(request))

    q = None
    current_category = None
    objects = Item.list_all()
    applied_filters = 2
    if request.is_ajax():
        if 'q' in request.GET:
            q = request.GET['q']
            objects = Item.search_by_keyword(q).filter(trade_flag=True, trade_price__gt=0)

        c = request.GET.get('c', '')
        if c:
            objects = objects.filter(category__slug=c)
            current_category = Category.objects.get(slug=c)

        g = request.GET.get('g', '')
        if g:
            applied_filters += 1
            g = map(int, g.split(','))
            ff = map(lambda x: Q(genre_list__contains=Genre.objects.get(id=x).name), g)
            objects = objects.filter(reduce(operator.or_, ff))
        y = request.GET.get('y', '')
        if y:
            applied_filters += 1
            y = map(int, y.split(','))
            ff = map(lambda x: Q(release_date__year=x), y)
            objects = objects.filter(reduce(operator.or_, ff))
        r = request.GET.get('r', '')
        if r:
            applied_filters += 1
            r = map(int, r.split(','))
            ff = map(lambda x: Q(ratio__gte=x, ratio__lt=x+1), r)
            objects = objects.filter(reduce(operator.or_, ff))
        pr = request.GET.get('pr', '')
        if pr:
            applied_filters += 1
            rr = [('0.01', '20'), ('20', '50'), ('50', '10000')]
            pr = set(map(int, pr.split(',')))
            if 3 in pr:
                show_used = True
                pr.remove(3)
            else:
                show_used = False
            if pr:
                ff = map(lambda x: Q(retail_price_new__gte=rr[x][0], retail_price_new__lt=rr[x][1]) | Q(retail_price_used__gte=rr[x][0], retail_price_used__lt=rr[x][1]), pr)
                objects = objects.filter(reduce(operator.or_, ff))
            if show_used:
                objects = objects.filter(pre_owned=True)
        a = request.GET.get('a', '')
        if a:
            applied_filters += 1
            a = map(int, a.split(','))
            if 100 in a:
                ff = [Q(top_rental=True)]
            else:
                ff = []
            ff += map(lambda x: Q(rent_status=x), a)
            objects = objects.filter(reduce(operator.or_, ff))
        else:
            objects = objects.exclude(rent_status=ItemRentStatus.NotRentable)
        t = request.GET.get('t', '')
        if t:
            applied_filters += 1
            rr = [15, 25, 35]
            t = set(map(int, t.split(',')))
            if 100 in t:
                wimgw = True
                t.remove(100)
            else:
                wimgw = False
            if t:
                ff = map(lambda x: Q(trade_price__gte=rr[x], trade_flag=True, release_date__lte=datetime.now()), t)
                objects = objects.filter(reduce(operator.or_, ff))
        e = request.GET.get('e', '')
        if e:
            applied_filters += 1
            e = map(int, e.split(','))
            ff = map(lambda x: Q(rating=x), e)
            objects = objects.filter(reduce(operator.or_, ff))
        cs = request.GET.get('cs', '')
        if cs:
            applied_filters += 1
            cs = int(cs)
            today = datetime.today()
            if cs == 0:
                objects = objects.filter(release_date__gt=today)
            elif cs == 1:
                objects = objects.filter(release_date__gt=today, release_date__lte=today + timedelta(30))
            elif cs == 2:
                objects = objects.filter(release_date__gt=today + timedelta(30), release_date__lte=today + timedelta(60))
            objects = objects.order_by('release_date')


    if 'p' in request.GET:
        page = request.GET['p'].lower()
        if page != 'show all':
            try:
                page = int(page)
            except:
                return redirect(request.META['PATH_INFO'])
        elif applied_filters < 2:
            page = 1
    else:
        page = 1

    items_found = objects.count()

    if page != 'show all':
        paginator = Paginator(objects, 16, 4)
        try:
            current_page = paginator.page(page)
        except Exception, _e:
            raise Http404()
        objects = current_page.object_list