Esempio n. 1
0
def search(page):
  sort  = "d"
  order = "d"
  keywords = []
  if "sort" in request.args: sort = request.args["sort"]
  if "order" in request.args: order = request.args["order"]
  if "keywords" in request.args: keywords = request.args["keywords"].split()
  if order == "d": useOrder = -1
  else:            useOrder = 1
  if   sort == "t": useSort = "title"
  elif sort == "p": useSort = "favAmount"
  else:             useSort = "_id"
  if keywords:
    artLookup = db.db.art.find({"keywords" : {"$in": map(lambda keyword: keyword.lower(), keywords) } } ).skip(config.displayedWorksPerPage * page).limit( config.displayedWorksPerPage ).sort(useSort,useOrder)
  else:
    artLookup = db.db.art.find().skip(config.displayedWorksPerPage * page).limit( config.displayedWorksPerPage ).sort(useSort,useOrder)
  # Create page index
  artCount = artLookup.count()
  if not artCount: artLookup = None
  if artCount % config.displayedWorksPerPage: extraPage = 1
  else:                                       extraPage = 0
  pages = range(0,(artCount / config.displayedWorksPerPage) + extraPage)
  pageCount = len(pages)
  pagesLeft = len(pages[page:])
  if pagesLeft > config.pageIndexes:
    pages = pages[page: page + config.pageIndexes]
    more = True
  else:
    pages = pages[page: page + pagesLeft]
    more = False
  return render_template("search.html", art=artLookup, keywords=util.unsplit(keywords), sort=sort, order=order, currentPage=page, pages=pages, last=pageCount - 1)
Esempio n. 2
0
def search(page):
  """
  Displays a page for searching Drawrawr for artworks based on given criteria.
  By default, the most recent artworks are displayed.
  """
  sort  = "d"
  order = "d"
  keywords = []
  if "sort" in request.args: sort = request.args["sort"]
  if "order" in request.args: order = request.args["order"]
  if "keywords" in request.args: keywords = request.args["keywords"].split()
  if order == "d": user_order = -1
  else:            user_order = 1
  if   sort == "t": user_sort = "title"
  elif sort == "p": user_sort = "fav_amount"
  else:             user_sort = "_id"
  if keywords:
    art_lookup = art_model.get({"keywords" : {"$in": map(lambda keyword: keyword.lower(), keywords) } } ).skip(config.displayed_works_per_page * page).limit( config.displayed_works_per_page ).sort(user_sort,user_order)
  else:
    art_lookup = art_model.get().skip(config.displayed_works_per_page * page).limit( config.displayed_works_per_page ).sort(user_sort,user_order)
  # Create page index
  art_count = art_lookup.count()
  if not art_count: art_lookup = None
  if art_count % config.displayed_works_per_page: extra_page = 1
  else:                                       extra_page = 0
  pages = range(0,(art_count / config.displayed_works_per_page) + extra_page)
  page_count = len(pages)
  pages_left = len(pages[page:])
  if pages_left > config.page_indexes:
    pages = pages[page: page + config.page_indexes]
    more = True
  else:
    pages = pages[page: page + pages_left]
    more = False
  return render_template("search.html", art=art_lookup, keywords=util.unsplit(keywords), sort=sort, order=order, current_page=page, pages=pages, last=page_count - 1)