예제 #1
0
	def inner_search():
	    q = Listing.basic_query()
	    q.filter('featured =', True)
	    q.order('-created')
	    listings = q.fetch(self.limit)
	    if encoded:
		listings = [lst.encode_builtin() for lst in listings]
	    return listings
예제 #2
0
	def inner_search():
	    listings, qs = [], self.qs
	    for mb in qs.get('mb', [])[0:self.max_defs]:
		try:
		    mb = int(mb)
		except (ValueError, ):
		    continue
		q = Listing.basic_query()
		q.filter('min_bid =', mb)
		listings += q.fetch(self.limit)
	    listings = dict((lst.key(), lst) for lst in listings).values() ## remove dupes
	    listings.sort(key=lambda o:o.expires) ## TODO:  verify this is desired
	    if encoded:
		listings = [lst.encode_builtin() for lst in listings]
	    return listings, '', False
예제 #3
0
    def run(self, encoded=True):
	q = Listing.basic_query()
	qs = self.qs
	@cache(self.rqs, ttl=180)
	def inner_search():
	    for key, title in self.filter_items():
		if qs.get(key, [''])[0] == 'on':
		    q.filter('categories =', key)
	    sort = qs.get('sort', ['created'])[0]
	    title, order = self.orders.get(sort, self.orders['created'])
	    if order:
		order(q)
	    if 'c' in qs:
		q.with_cursor(qs['c'][0])
	    try:
		limit = min(self.limit, int(qs['limit'][0]))
	    except (Exception, ), exc:
		limit = self.limit
	    listings = q.fetch(limit)
	    if encoded:
		listings = [lst.encode_builtin(feedback=False) for lst in listings]
	    return listings, self.next_qs(q, qs), self.more(q)