def images_reg(request, page=1): form = imagefilterform_factory(request)(request.GET) if form.is_valid(): lookup_args={} qs = Image.objects.filter(is_public=True).order_by('caption', '-date_added') for (key, value) in form.cleaned_data.items(): if value: if value == 'all': # ugly hack to get content type, should be fixed model = getattr(Image.objects.get(pk=1), key).model q_object = Q() for value in model.objects.values('name'): q_object = q_object | Q(**{'%s__name' % key: value['name']}) qs = qs.filter(q_object).distinct() else: lookup_args.update({'%s__name' % key: value}) qs = qs.filter(**lookup_args) # filter communications and archives if not request.user.is_staff: for value in Communications.objects.values('name'): qs = qs.exclude(communications__name=value['name']) for value in Archive.objects.values('name'): qs = qs.exclude(archives__name=value['name']) image_paginator = Paginator(qs, getattr(settings, 'PAGINATE_BY', 25)) try: images = image_paginator.page(page) except (EmptyPage, InvalidPage): images = image_paginator.page(image_paginator.num_pages) " Initialize variables " in_leading_range = in_trailing_range = False pages_outside_leading_range = pages_outside_trailing_range = range(0) page = images if (page.paginator.num_pages <= LEADING_PAGE_RANGE_DISPLAYED): in_leading_range = in_trailing_range = True page_numbers = page.paginator.page_range elif (page.number <= LEADING_PAGE_RANGE): in_leading_range = True page_numbers = [n for n in range(1, LEADING_PAGE_RANGE_DISPLAYED + 1) if n > 0 and n <= page.paginator.num_pages] pages_outside_leading_range = [n + page.paginator.num_pages for n in range(0, -NUM_PAGES_OUTSIDE_RANGE, -1)] elif (page.number > page.paginator.num_pages - TRAILING_PAGE_RANGE): in_trailing_range = True page_numbers = [n for n in range(page.paginator.num_pages - TRAILING_PAGE_RANGE_DISPLAYED + 1, page.paginator.num_pages + 1) if n > 0 and n <= page.paginator.num_pages] pages_outside_trailing_range = [n + 1 for n in range(0, NUM_PAGES_OUTSIDE_RANGE)] else: page_numbers = [n for n in range(page.number - ADJACENT_PAGES, page.number + ADJACENT_PAGES + 1) if n > 0 and n <= page.paginator.num_pages] pages_outside_leading_range = [n + page.paginator.num_pages for n in range(0, -NUM_PAGES_OUTSIDE_RANGE, -1)] pages_outside_trailing_range = [n + 1 for n in range(0, NUM_PAGES_OUTSIDE_RANGE)] context = { "page_numbers": page_numbers, "in_leading_range" : in_leading_range, "in_trailing_range" : in_trailing_range, "pages_outside_leading_range": pages_outside_leading_range, "pages_outside_trailing_range": pages_outside_trailing_range } context.update( {'images':images, 'form':form, 'query':request.GET.urlencode()}) return render_to_response( 'image_list.html', RequestContext( request, context)) else: return HttpResponseBadRequest(form.errors)
def image_front_reg(request, page=1): image_form = imagefilterform_factory(request)() return render_to_response('image_front.html', RequestContext(request, {'form':image_form,}))