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)
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)