def index(): tag_url = tags.gen_tag_url(flask.request) order = flask.request.args.get("order") tag = flask.request.args.get("tag") try: return flask.render_template( 'index.html', polls=Poll.fetch_all(order, tag), tag_url=tag_url, order=order, tag=tag, cookie=flask.request.cookies.get('voteData')) except ValueError: flask.abort(400) # Args invalid
def search_view(): try: tag_url = tags.gen_tag_url(flask.request) search = flask.request.args.get("q") # Search terms if search is None: # When using /search, q should always be provided flask.abort(400) # Delete any trailing or inital spaces and not case sensitive search = search.lower().strip() tag = flask.request.args.get("tag") if tag is not None and len(tag) == 0: # If tag is empty, set to none tag = None order = flask.request.args.get("order") all_polls = Poll.fetch_all(order, tag) returned_polls = [] include = False # Search for string in title, description and responses for p in all_polls: if search in p.title.lower(): include = True if search in p.description.lower(): include = True responses = p.get_responses() for r in responses: if search in r.response_str.lower(): include = True if p not in returned_polls and include: returned_polls.append(p) include = False return flask.render_template('index.html', polls=returned_polls, tag_url=tag_url, order=order, tag=tag, search_term=search) except ValueError: flask.abort(400) # Order arg invalid