Example #1
0
def question_list(request, verb_slug=None, page=1):
    p = int(page) - 1
    verb_cloud_cache_key = "%s_verb_cloud" % (site.domain)
    verb_cloud = cache.get(verb_cloud_cache_key)
    if not verb_cloud:
        print "if1"
        verb_cloud = Verb.objects.get_cloud()
        cache.set(verb_cloud_cache_key, verb_cloud, 60 * 60 * 24)

    if verb_slug:
        print "if2"
        verb = get_object_or_404(Verb, slug=verb_slug)
        query_set = Question.objects.filter(verb=verb)
        not_answered = Question.objects.get_not_answered().filter(verb=verb).distinct()[:8]
    else:
        print "else"
        verb = None
        query_set = Question.objects.all()
        not_answered = Question.objects.get_not_answered()[:8]

    paginator = Paginator(query_set, 10)
    questions = paginator.page(p)

    if request.user.is_authenticated():
        for i in xrange(len(questions)):
            try:
                a = Answer.objects.get(question=questions[i], user=request.user)
            except:
                pass
            else:
                questions[i].user_answer = a.answer

    next_page, previous_page = None, None
    if paginator.has_next_page(p):
        next_page = p + 2
    if paginator.has_previous_page(p):
        previous_page = p

    return render_to_response(
        "questions/question_list.html",
        {
            "object_list": questions,
            "page": page,
            "is_paginated": paginator.pages > 1,
            "has_next": paginator.has_next_page(p),
            "has_previous": paginator.has_previous_page(p),
            "next": next_page,
            "previous": previous_page,
            "pages": paginator.pages,
            "selected_tab": "questions",
            "verb": verb,
            "verb_cloud": verb_cloud,
            "not_answered": not_answered,
        },
        context_instance=RequestContext(request),
    )
Example #2
0
def question_list(request, verb_slug=None, page=1):
    p = int(page) - 1
    verb_cloud_cache_key = '%s_verb_cloud' % (site.domain)
    verb_cloud = cache.get(verb_cloud_cache_key)
    if not verb_cloud:
        print "if1"
        verb_cloud = Verb.objects.get_cloud()
        cache.set(verb_cloud_cache_key, verb_cloud, 60 * 60 * 24)

    if verb_slug:
        print "if2"
        verb = get_object_or_404(Verb, slug=verb_slug)
        query_set = Question.objects.filter(verb=verb)
        not_answered = Question.objects.get_not_answered().filter(
            verb=verb).distinct()[:8]
    else:
        print "else"
        verb = None
        query_set = Question.objects.all()
        not_answered = Question.objects.get_not_answered()[:8]

    paginator = Paginator(query_set, 10)
    questions = paginator.page(p)

    if request.user.is_authenticated():
        for i in xrange(len(questions)):
            try:
                a = Answer.objects.get(question=questions[i],
                                       user=request.user)
            except:
                pass
            else:
                questions[i].user_answer = a.answer

    next_page, previous_page = None, None
    if paginator.has_next_page(p):
        next_page = p + 2
    if paginator.has_previous_page(p):
        previous_page = p

    return render_to_response('questions/question_list.html', {
        'object_list': questions,
        'page': page,
        'is_paginated': paginator.pages > 1,
        'has_next': paginator.has_next_page(p),
        'has_previous': paginator.has_previous_page(p),
        'next': next_page,
        'previous': previous_page,
        'pages': paginator.pages,
        'selected_tab': 'questions',
        'verb': verb,
        'verb_cloud': verb_cloud,
        'not_answered': not_answered
    },
                              context_instance=RequestContext(request))
Example #3
0
def question_list(request, verb_slug=None, page=1):
    p = int(page) - 1
    verb_cloud_cache_key = '%s_verb_cloud' % (site.domain)
    verb_cloud = cache.get(verb_cloud_cache_key)
    if not verb_cloud:
        print "if1"
        verb_cloud = Verb.objects.get_cloud()
        cache.set(verb_cloud_cache_key, verb_cloud, 60*60*24)
    
    if verb_slug:
        print "if2"
        verb = get_object_or_404(Verb, slug=verb_slug)
        query_set = Question.objects.filter(verb=verb)
        not_answered = Question.objects.get_not_answered().filter(verb=verb).distinct()[:8]
    else:
        print "else"
        verb = None
        query_set = Question.objects.all()
        not_answered = Question.objects.get_not_answered()[:8]
    
    paginator = Paginator(query_set, 10)
    questions = paginator.page(p)
    
    if request.user.is_authenticated():
        for i in xrange(len(questions)):
            try:
                a = Answer.objects.get(question = questions[i],
                                       user = request.user)
            except:
                pass
            else:
                questions[i].user_answer = a.answer

    next_page, previous_page = None, None
    if paginator.has_next_page(p):
        next_page = p + 2
    if paginator.has_previous_page(p):
        previous_page = p
    
    return render_to_response('questions/question_list.html',
                              {'object_list': questions,
                               'page': page,
                               'is_paginated': paginator.pages > 1,
                               'has_next': paginator.has_next_page(p),
                               'has_previous': paginator.has_previous_page(p),
                               'next': next_page,
                               'previous': previous_page,
                               'pages': paginator.pages,
                               'selected_tab': 'questions',
                               'verb': verb,
                               'verb_cloud': verb_cloud,
                               'not_answered': not_answered},
                               context_instance=RequestContext(request))
Example #4
0
    def buildListHTML(self, pageNumber, propertyName, parent):
        modelClass, modelClassName = self.modelClass, self.modelClassName
        modelClassDisplayName = modelClass.getPrettyClassName()
        if propertyName and parent:
            gql = 'WHERE %s = :1 ORDER BY %s' % (propertyName,
                                                 modelClass.NAME_PROPERTY)
            #logging.debug(gql + '(' + parent + ')')
            models = (propertyName and modelClass.gql(
                gql, db.get(parent))) or modelClass.get()
        else:
            models = modelClass.all()

        paginator = ObjectPaginator(models, 10, orphans=2)
        if paginator.pages < pageNumber:
            pageNumber = paginator.pages
        pageNumber0 = pageNumber - 1
        models = paginator.get_page(pageNumber0)

        firstOnPage, lastOnPage, numModels = \
            paginator.first_on_page(pageNumber0), paginator.last_on_page(pageNumber0), paginator.hits
        hasPreviousPage, hasNextPage = \
            paginator.has_previous_page(pageNumber0), paginator.has_next_page(pageNumber0)
        previousPage, nextPage = pageNumber - 1, pageNumber + 1

        listItems = []
        for model in models:
            modelToListItemHTML = \
                lambda model, s=self, p=parent, pn=propertyName: s.modelToListItemHTML(model,p,pn)
            cacheKey = 'listItemHTML' + parent
            self.modelClass.setEntityCacheFunctionForKey(
                modelToListItemHTML, cacheKey)
            listItems.append(model.getEntityCache(cacheKey))
        listItems = '\n'.join(listItems)
        return self.renderManagementTemplate(locals(), 'List.html')
Example #5
0
    def buildListHTML(self, pageNumber, propertyName, parent):
        modelClass, modelClassName = self.modelClass, self.modelClassName
        modelClassDisplayName = modelClass.getPrettyClassName()
        if propertyName and parent:
            gql = "WHERE %s = :1 ORDER BY %s" % (propertyName, modelClass.NAME_PROPERTY)
            # logging.debug(gql + '(' + parent + ')')
            models = (propertyName and modelClass.gql(gql, db.get(parent))) or modelClass.get()
        else:
            models = modelClass.all()

        paginator = ObjectPaginator(models, 10, orphans=2)
        if paginator.pages < pageNumber:
            pageNumber = paginator.pages
        pageNumber0 = pageNumber - 1
        models = paginator.get_page(pageNumber0)

        firstOnPage, lastOnPage, numModels = (
            paginator.first_on_page(pageNumber0),
            paginator.last_on_page(pageNumber0),
            paginator.hits,
        )
        hasPreviousPage, hasNextPage = paginator.has_previous_page(pageNumber0), paginator.has_next_page(pageNumber0)
        previousPage, nextPage = pageNumber - 1, pageNumber + 1

        listItems = []
        for model in models:
            modelToListItemHTML = lambda model, s=self, p=parent, pn=propertyName: s.modelToListItemHTML(model, p, pn)
            cacheKey = "listItemHTML" + parent
            self.modelClass.setEntityCacheFunctionForKey(modelToListItemHTML, cacheKey)
            listItems.append(model.getEntityCache(cacheKey))
        listItems = "\n".join(listItems)
        return self.renderManagementTemplate(locals(), "List.html")
Example #6
0
    def wrapper(request, *args, **kwargs):
        page = kwargs.pop('page', None)
        variables = func(request, *args, **kwargs)

        object_list = variables['object_list']
        paginate_by = variables.get('paginate_by', 10)

        paginator = Paginator(object_list, paginate_by)
        if not page:
            page = request.GET.get('page', 1)
        try:
            page_number = int(page)
        except ValueError:
            if page == 'last':
                page_number = paginator.pages
            else:
                # Page is not 'last', nor can it be converted to an int
                raise Http404
    
        try:
            object_list = paginator.get_page(page_number - 1)
        except InvalidPage:
            if page_number == 1 and allow_empty:
                object_list = []
            else:
                raise Http404

        variables.update({
            'object_list': object_list,
            'paginate_by': paginate_by,
            'page': page,
            'is_paginated': paginator.pages > 1,
            'results_per_page': paginate_by,
            'has_next': paginator.has_next_page(page_number - 1),
            'has_previous': paginator.has_previous_page(page_number - 1),
            'page': page_number,
            'next': page_number + 1,
            'previous': page_number - 1,
            'last_on_page': paginator.last_on_page(page_number - 1),
            'first_on_page': paginator.first_on_page(page_number - 1),
            'pages': paginator.pages,
            'hits' : paginator.hits,
            'page_range' : paginator.page_range
            })
        string = django_template_to_string(request, variables, template)
        return HttpResponse(string)