def search(request): # if this is a POST request we need to process the form data if request.method == 'POST': # create a form instance and populate it with data from the request: form = SearchForm(request.POST) if 'ranks' in request.session: del request.session['ranks'] # check whether it's valid: if form.is_valid(): words = form.cleaned_data['search_words'] request.session['keywords'] = words request.session['created'] = time.strftime("%d,%m,%Y,%H,%M,%S") if 'keywords' in request.session: base_tuples = generalRanking(request.session['keywords']) if base_tuples is None: return HttpResponseRedirect(reverse('ds:index')) rs, lists, glist, graw = zip(*base_tuples) if lists is not None: ratings = [0] * len(lists) ratings_lists = zip(ratings, lists, rs, glist, graw) paginator = Paginator(ratings_lists, PAGE_NUM) # Show 25 contacts per page page = request.GET.get('page') try: ratings_lists = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. ratings_lists = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. ratings_lists = paginator.page(paginator.num_pages) context = { 'lists_top': ratings_lists, 'instruction': 'nothing', 'keyword': request.session['keywords'] } return render(request, 'search/results.html', context) else: del request.session['keywords'] del request.session['created'] return HttpResponseRedirect(reverse('ds:index'))
def search(request): # if this is a POST request we need to process the form data if request.method == 'POST': # create a form instance and populate it with data from the request: form = SearchForm(request.POST) if 'ranks' in request.session: del request.session['ranks'] # check whether it's valid: if form.is_valid(): words = form.cleaned_data['search_words'] request.session['keywords'] = words request.session['created'] = time.strftime("%d,%m,%Y,%H,%M,%S") if 'keywords' in request.session: base_tuples = generalRanking(request.session['keywords']) if base_tuples is None: return HttpResponseRedirect(reverse('ds:index')) rs, lists, glist, graw = zip(*base_tuples) if lists is not None: ratings = [0] * len(lists) ratings_lists = zip(ratings, lists, rs, glist, graw) paginator = Paginator(ratings_lists, PAGE_NUM) # Show 25 contacts per page page = request.GET.get('page') try: ratings_lists = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. ratings_lists = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. ratings_lists = paginator.page(paginator.num_pages) context = {'lists_top': ratings_lists, 'instruction':'nothing', 'keyword':request.session['keywords']} return render(request, 'search/results.html', context) else: del request.session['keywords'] del request.session['created'] return HttpResponseRedirect(reverse('ds:index'))
def refresh(request): if request.method == 'POST': # create a form instance and populate it with data from the request: form = RankForm(request.POST) # check whether it's valid: if form.is_valid(): data = form.cleaned_data['rank_info'] print >>sys.stderr, str(data) ranks = data.split(',')[:-1] rank_string = unicodedata.normalize('NFKD', '{'+','.join(ranks)+'}').encode('ascii', 'ignore') rank = ast.literal_eval(rank_string) print >>sys.stderr, str(rank) if 'ranks' in request.session: current = ast.literal_eval(request.session['ranks']) for key,value in rank.iteritems(): if int(value) == 0: continue; print >>sys.stderr, 'New Rating Updated: '+str(key)+': '+str(value) current[key] = value request.session['ranks'] = str(current) print >>sys.stderr, 'Updated Session' print >>sys.stderr, request.session['ranks'] else: print >>sys.stderr, 'New Session Created' current = {} for key,value in rank.iteritems(): if int(value) == 0: continue print >>sys.stderr, 'New Rating Updated: '+str(key)+': '+str(value) current[key] = value if len(current.values()): request.session['ranks'] = str(current) if not 'ranks' in request.session: print >>sys.stderr, 'No ranks in session' return search(request) if 'keywords' in request.session: print >>sys.stderr, 'keywords Processing Part' base_tuples = generalRanking(request.session['keywords']) if base_tuples is None: return HttpResponseRedirect(reverse('ds:index')) rs, base, glist, jraw = zip(*base_tuples) if base is None: return HttpResponseRedirect(reverse('ds:index')) ratings_lists = preferenceRanking(rs, base, request.session['ranks']) context = {'lists_top': ratings_lists, 'instruction':'nothing', 'keyword':request.session['keywords']} paginator = Paginator(ratings_lists, PAGE_NUM) # Show 25 contacts per page page = request.GET.get('page') try: ratings_lists = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. ratings_lists = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. ratings_lists = paginator.page(paginator.num_pages) context = {'lists_top': ratings_lists, 'instruction':'nothing', 'keyword':request.session['keywords']} saveRatings(request) return render(request, 'search/results.html', context) print >>sys.stderr, 'Invalid: redirect to search' return HttpResponseRedirect(reverse('ds:search'))
def refresh(request): if request.method == 'POST': # create a form instance and populate it with data from the request: form = RankForm(request.POST) # check whether it's valid: if form.is_valid(): data = form.cleaned_data['rank_info'] print >> sys.stderr, str(data) ranks = data.split(',')[:-1] rank_string = unicodedata.normalize('NFKD', '{' + ','.join(ranks) + '}').encode('ascii', 'ignore') rank = ast.literal_eval(rank_string) print >> sys.stderr, str(rank) if 'ranks' in request.session: current = ast.literal_eval(request.session['ranks']) for key, value in rank.iteritems(): if int(value) == 0: continue print >> sys.stderr, 'New Rating Updated: ' + str( key) + ': ' + str(value) current[key] = value request.session['ranks'] = str(current) print >> sys.stderr, 'Updated Session' print >> sys.stderr, request.session['ranks'] else: print >> sys.stderr, 'New Session Created' current = {} for key, value in rank.iteritems(): if int(value) == 0: continue print >> sys.stderr, 'New Rating Updated: ' + str( key) + ': ' + str(value) current[key] = value if len(current.values()): request.session['ranks'] = str(current) if not 'ranks' in request.session: print >> sys.stderr, 'No ranks in session' return search(request) if 'keywords' in request.session: print >> sys.stderr, 'keywords Processing Part' base_tuples = generalRanking(request.session['keywords']) if base_tuples is None: return HttpResponseRedirect(reverse('ds:index')) rs, base, glist, jraw = zip(*base_tuples) if base is None: return HttpResponseRedirect(reverse('ds:index')) ratings_lists = preferenceRanking(rs, base, request.session['ranks']) context = { 'lists_top': ratings_lists, 'instruction': 'nothing', 'keyword': request.session['keywords'] } paginator = Paginator(ratings_lists, PAGE_NUM) # Show 25 contacts per page page = request.GET.get('page') try: ratings_lists = paginator.page(page) except PageNotAnInteger: # If page is not an integer, deliver first page. ratings_lists = paginator.page(1) except EmptyPage: # If page is out of range (e.g. 9999), deliver last page of results. ratings_lists = paginator.page(paginator.num_pages) context = { 'lists_top': ratings_lists, 'instruction': 'nothing', 'keyword': request.session['keywords'] } saveRatings(request) return render(request, 'search/results.html', context) print >> sys.stderr, 'Invalid: redirect to search' return HttpResponseRedirect(reverse('ds:search'))