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), )
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))
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))
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')
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")
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)