Esempio n. 1
0
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'))
Esempio n. 2
0
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'))
Esempio n. 3
0
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'))
Esempio n. 4
0
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'))