def new_search(request): # When user submits search, they are sent to this view. # All relevant data is stored as session data search_term = request.GET['search_text'] formatted_url = re.sub(r'\W', '', search_term.replace(' ', '_')) request.session['_tweets'] = extreme_tweets(formatted_url.replace('_', ' ')) request.session['_tweet_index'] = 0 request.session['_search_term'] = formatted_url.replace('_', ' ') request.session['_favorite_indices'] = [] request.session['_newly_favorited'] = False return redirect('/mean/search/%s/' % (formatted_url,))
def search_result(request, formatted_url): # Check if the user has already searched for this term (aka if they are # refreshing page or using "prev/next" buttons. # If they search term doesn't match the URL, a new search is performed # Based on the URL. search_term = formatted_url.replace('_', ' ') try: if search_term != request.session['_search_term']: request.session['_tweets'] = extreme_tweets(search_term) request.session['_tweet_index'] = 0 request.session['_search_term'] = search_term request.session['_is_favorite'] = False request.session['_favorite_indices'] = [] request.session['_newly_favorited'] = False except: request.session['_tweets'] = extreme_tweets(search_term) request.session['_tweet_index'] = 0 request.session['_search_term'] = search_term request.session['_is_favorite'] = False request.session['_favorite_indices'] = [] request.session['_newly_favorited'] = False tweets = request.session['_tweets'] if len(tweets) == 0: return redirect('/insufficient/') try: # Change page index based on whether user hit "next/prev" button if request.GET["next_prev"] == 'next' and \ request.session['_tweet_index'] + 1 < len(tweets): request.session['_tweet_index'] += 1 elif request.GET["next_prev"] == 'prev' and \ request.session['_tweet_index'] > 0: request.session['_tweet_index'] -= 1 except: pass tweet_index = request.session['_tweet_index'] try: favorite_count = FavoriteWorst.objects.get( tweet_id=tweets[tweet_index]["id"]).upvote_count except: favorite_count = 0 if tweet_index in request.session['_favorite_indices']: favorite_button = False else: favorite_button = True # Rules for displaying "next/prev" buttons if request.session['_tweet_index'] + 1 < len(tweets): next_button = True else: next_button = False if request.session['_tweet_index'] > 0: prev_button = True else: prev_button = False to_render = {'search_term': search_term, 'tweet': tweets[tweet_index], 'next_button_visible': next_button, 'prev_button_visible': prev_button, 'nice_term': nice_term()[0], 'favorite_button_visible': favorite_button, 'upvote_count': favorite_count, 'newly_favorited': request.session['_newly_favorited']} request.session['_newly_favorited'] = False return render(request, 'search_results.html', to_render,)