Exemplo n.º 1
0
def manage(request):
    idea_qs = Idea.objects.all().select_related()
    sort = request.GET.get('sort')
    available_sorts = {
        'num_votes': '-num_votes',
        'popular': '',
    }
    if sort and sort in available_sorts:
        if sort == 'popular':
            idea_qs = order_by_popular(idea_qs)
        else:
            idea_qs = idea_qs.order_by(available_sorts[sort])
    paginator = Paginator(idea_qs, settings.TORCH_PAGINATION)

    page = request.GET.get('page')

    try:
        ideas = paginator.page(page)
    except PageNotAnInteger:
        ideas = paginator.page(1)
    except EmptyPage:
        ideas = paginator.page(paginator.num_pages)
    context = RequestContext(request, {
        'sort': sort,
        'ideas': ideas,
    })
    return render_to_response(
        'idea/manage.html',
        context_instance=context,
    )
Exemplo n.º 2
0
    def test_order_by_popular(self):
        user = User.objects.create()
        idea1 = Idea.objects.create(author=user, tag=CREATIVITY)
        idea2 = Idea.objects.create(author=user, tag=CREATIVITY)
        now = datetime.now()
        yesterday = now - timedelta(days=1)
        idea1.created = yesterday
        idea1.save()

        Vote.objects.create(voter=user, idea=idea1)

        self.assertEqual(order_by_popular(Idea.objects.all()), [idea1, idea2])

        # Now add one vote to the newer one and watch the order change.
        Vote.objects.create(voter=User.objects.create(username="******"), idea=idea2)

        self.assertEqual(order_by_popular(Idea.objects.all()), [idea2, idea1])