Fin de la fonctionnalite de pagination
This commit is contained in:
parent
36fa059237
commit
1220aa8a11
|
@ -5,4 +5,4 @@ admin.site.register(Category)
|
|||
admin.site.register(SubCategory)
|
||||
admin.site.register(Country)
|
||||
admin.site.register(Tag)
|
||||
admin.site.register(Item)
|
||||
admin.site.register(Card)
|
||||
|
|
|
@ -107,7 +107,7 @@ class Command(BaseCommand):
|
|||
Insère un item provenant de GCStar dans la base de données.
|
||||
"""
|
||||
|
||||
i = Item()
|
||||
i = Card()
|
||||
|
||||
country, created = Country.objects.get_or_create(label=item.country.strip())
|
||||
i.country = country
|
||||
|
|
|
@ -49,7 +49,7 @@ class Tag(models.Model):
|
|||
def __unicode__(self):
|
||||
return self.label
|
||||
|
||||
class Item(models.Model):
|
||||
class Card(models.Model):
|
||||
|
||||
country = models.ForeignKey(Country, verbose_name='Pays')
|
||||
subcategory = models.ForeignKey(SubCategory, verbose_name='Thème')
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
from django import template
|
||||
from django.conf import settings
|
||||
from cards.models import Country, Category
|
||||
|
||||
register = template.Library()
|
||||
|
||||
def get_range(value):
|
||||
"""
|
||||
See http://djangosnippets.org/snippets/1357/
|
||||
|
||||
Filter - returns a list containing range made from given value
|
||||
Usage (in template):
|
||||
|
||||
<ul>{% for i in 3|get_range %}
|
||||
<li>{{ i }}. Do something</li>
|
||||
{% endfor %}</ul>
|
||||
|
||||
Results with the HTML:
|
||||
<ul>
|
||||
<li>0. Do something</li>
|
||||
<li>1. Do something</li>
|
||||
<li>2. Do something</li>
|
||||
</ul>
|
||||
|
||||
Instead of 3 one may use the variable set in the views
|
||||
"""
|
||||
return range(1, value + 1 )
|
||||
|
||||
register.filter(get_range)
|
|
@ -6,21 +6,21 @@ from django.http import HttpResponseRedirect, HttpResponse, Http404
|
|||
from django.core.urlresolvers import reverse
|
||||
from django.template import RequestContext
|
||||
from django import forms
|
||||
from cards.models import Item, Country, Category, SubCategory
|
||||
from cards.models import Card, Country, Category, SubCategory
|
||||
from django.core.context_processors import csrf
|
||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||
|
||||
import cards.forms
|
||||
|
||||
def index(request):
|
||||
cards_list = Item.objects.order_by('-created_at')[:25]
|
||||
cards_list = Card.objects.order_by('-created_at')[:25]
|
||||
|
||||
context = { 'cards_list' : cards_list}
|
||||
|
||||
return render_to_response('cards/index.html', RequestContext(request, context))
|
||||
|
||||
def details(request, item_id):
|
||||
a = get_object_or_404(Item, pk=item_id)
|
||||
def details(request, card_id):
|
||||
a = get_object_or_404(Card, pk=card_id)
|
||||
|
||||
context = {'card': a }
|
||||
|
||||
|
@ -37,6 +37,8 @@ def pagination(cards_list, request):
|
|||
cards = paginator.page(1)
|
||||
except EmptyPage:
|
||||
cards = paginator.page(paginator.num_pages)
|
||||
except:
|
||||
cards = paginator.page(1)
|
||||
|
||||
return cards
|
||||
|
||||
|
@ -55,7 +57,7 @@ def query(request):
|
|||
for term in terms.split(' '):
|
||||
q.add((Q(label__icontains=term) | Q(subcategory__label__icontains=term) | Q(subcategory__category__label__icontains=term) | Q(country__label__icontains=term) ), q.AND)
|
||||
|
||||
cards_list = Item.objects.filter(q)
|
||||
cards_list = Card.objects.filter(q)
|
||||
|
||||
cards = pagination(cards_list, request)
|
||||
|
||||
|
@ -92,7 +94,7 @@ def advanced_query(request):
|
|||
# la date de début
|
||||
# faut modifier le modèle ici...
|
||||
|
||||
cards_list = Item.objects.filter(q)
|
||||
cards_list = Card.objects.filter(q)
|
||||
|
||||
cards_list = pagination(cards_list, request)
|
||||
|
||||
|
@ -110,7 +112,7 @@ def advanced_query(request):
|
|||
def search_by_country(request, country_id):
|
||||
country = get_object_or_404(Country, pk=country_id)
|
||||
|
||||
cards = pagination(country.item_set.all(), request)
|
||||
cards = pagination(country.card_set.all(), request)
|
||||
|
||||
context = { 'cards' : cards, 'title' : country.label }
|
||||
|
||||
|
@ -122,7 +124,7 @@ def search_by_category(request, category_id):
|
|||
cards_list = list()
|
||||
|
||||
for subcat in category.subcategory_set.all():
|
||||
cards_list.extend(subcat.item_set.all())
|
||||
cards_list.extend(subcat.card_set.all())
|
||||
|
||||
cards = pagination(cards_list, request)
|
||||
|
||||
|
@ -133,7 +135,7 @@ def search_by_category(request, category_id):
|
|||
def search_by_subcategory(request, subcategory_id):
|
||||
subcategory = get_object_or_404(SubCategory, pk=subcategory_id)
|
||||
|
||||
cards = pagination(subcategory.item_set.all(), request)
|
||||
cards = pagination(subcategory.card_set.all(), request)
|
||||
|
||||
context = { 'cards' : cards, 'title' : subcategory.label }
|
||||
|
||||
|
|
|
@ -1,13 +1,14 @@
|
|||
{% extends 'base.html' %}
|
||||
|
||||
{% load image_tags %}
|
||||
{% load filter_tags %}
|
||||
|
||||
{% block main_container %}
|
||||
|
||||
<h2>{{title}}</h2>
|
||||
|
||||
<ul class="thumbnails">
|
||||
{% for card in cards %}
|
||||
{% for card in cards.object_list %}
|
||||
<li class="span2">
|
||||
<a href="{% url card-details card.id %}" class="thumbnail">
|
||||
{% if card.image %}
|
||||
|
@ -18,18 +19,33 @@
|
|||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<div class="pagination">
|
||||
<div class="pagination" style="margin: 0 auto; display: inline-block; text-align: center;">
|
||||
<span class="step-links">
|
||||
{% if cards.has_previous %}
|
||||
<a href="?page={{ cards.previous_page_number }}">page précédente</a>
|
||||
<a href="?page={{ cards.previous_page_number }}">«</a>
|
||||
{% else %}
|
||||
<span class="disabled">
|
||||
<a href="?page={{ cards.previous_page_number }}">«</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
|
||||
<span class="current">
|
||||
Page {{ cards.number }} de {{ cards.paginator.num_pages }}.
|
||||
</span>
|
||||
|
||||
|
||||
{% for page_num in cards.paginator.num_pages|get_range %}
|
||||
{% if page_num == cards.number %}
|
||||
<span class="active">
|
||||
<a class="active" href="?page={{ page_num }}">{{ page_num }}</a>
|
||||
</span>
|
||||
{% else %}
|
||||
<a href="?page={{ page_num }}">{{ page_num }}</a>
|
||||
{% endif %}
|
||||
|
||||
{% endfor %}
|
||||
|
||||
{% if cards.has_next %}
|
||||
<a href="?page={{ cards.next_page_number }}">page suivante</a>
|
||||
<a href="?page={{ cards.next_page_number }}">»</a>
|
||||
{% else %}
|
||||
<span class="disabled">
|
||||
<a href="?page={{ cards.next_page_number }}">»</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
|
|
2
urls.py
2
urls.py
|
@ -10,7 +10,7 @@ urlpatterns = patterns('',
|
|||
# url(r'^$', 'xcards.views.home', name='home'),
|
||||
# url(r'^xcards/', include('xcards.foo.urls')),
|
||||
|
||||
url(r'^details/(?P<item_id>\d+)/$', 'cards.views.details', name='card-details'),
|
||||
url(r'^details/(?P<card_id>\d+)/$', 'cards.views.details', name='card-details'),
|
||||
url(r'^query/$', 'cards.views.query'),
|
||||
url(r'^advanced-query/$', 'cards.views.advanced_query', name='advanced-query'),
|
||||
url(r'^list/country/(?P<country_id>\d+)/$', 'cards.views.search_by_country', name='list-by-country'),
|
||||
|
|
Loading…
Reference in New Issue