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)
def quick_game_finder(qs, q): qs = Item.search_by_keyword(q, qs) return qs
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()
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