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(SubCategory)
|
||||||
admin.site.register(Country)
|
admin.site.register(Country)
|
||||||
admin.site.register(Tag)
|
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.
|
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())
|
country, created = Country.objects.get_or_create(label=item.country.strip())
|
||||||
i.country = country
|
i.country = country
|
||||||
|
|
|
@ -49,7 +49,7 @@ class Tag(models.Model):
|
||||||
def __unicode__(self):
|
def __unicode__(self):
|
||||||
return self.label
|
return self.label
|
||||||
|
|
||||||
class Item(models.Model):
|
class Card(models.Model):
|
||||||
|
|
||||||
country = models.ForeignKey(Country, verbose_name='Pays')
|
country = models.ForeignKey(Country, verbose_name='Pays')
|
||||||
subcategory = models.ForeignKey(SubCategory, verbose_name='Thème')
|
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.core.urlresolvers import reverse
|
||||||
from django.template import RequestContext
|
from django.template import RequestContext
|
||||||
from django import forms
|
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.context_processors import csrf
|
||||||
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
|
||||||
|
|
||||||
import cards.forms
|
import cards.forms
|
||||||
|
|
||||||
def index(request):
|
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}
|
context = { 'cards_list' : cards_list}
|
||||||
|
|
||||||
return render_to_response('cards/index.html', RequestContext(request, context))
|
return render_to_response('cards/index.html', RequestContext(request, context))
|
||||||
|
|
||||||
def details(request, item_id):
|
def details(request, card_id):
|
||||||
a = get_object_or_404(Item, pk=item_id)
|
a = get_object_or_404(Card, pk=card_id)
|
||||||
|
|
||||||
context = {'card': a }
|
context = {'card': a }
|
||||||
|
|
||||||
|
@ -37,6 +37,8 @@ def pagination(cards_list, request):
|
||||||
cards = paginator.page(1)
|
cards = paginator.page(1)
|
||||||
except EmptyPage:
|
except EmptyPage:
|
||||||
cards = paginator.page(paginator.num_pages)
|
cards = paginator.page(paginator.num_pages)
|
||||||
|
except:
|
||||||
|
cards = paginator.page(1)
|
||||||
|
|
||||||
return cards
|
return cards
|
||||||
|
|
||||||
|
@ -55,7 +57,7 @@ def query(request):
|
||||||
for term in terms.split(' '):
|
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)
|
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)
|
cards = pagination(cards_list, request)
|
||||||
|
|
||||||
|
@ -92,7 +94,7 @@ def advanced_query(request):
|
||||||
# la date de début
|
# la date de début
|
||||||
# faut modifier le modèle ici...
|
# faut modifier le modèle ici...
|
||||||
|
|
||||||
cards_list = Item.objects.filter(q)
|
cards_list = Card.objects.filter(q)
|
||||||
|
|
||||||
cards_list = pagination(cards_list, request)
|
cards_list = pagination(cards_list, request)
|
||||||
|
|
||||||
|
@ -110,7 +112,7 @@ def advanced_query(request):
|
||||||
def search_by_country(request, country_id):
|
def search_by_country(request, country_id):
|
||||||
country = get_object_or_404(Country, pk=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 }
|
context = { 'cards' : cards, 'title' : country.label }
|
||||||
|
|
||||||
|
@ -122,7 +124,7 @@ def search_by_category(request, category_id):
|
||||||
cards_list = list()
|
cards_list = list()
|
||||||
|
|
||||||
for subcat in category.subcategory_set.all():
|
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)
|
cards = pagination(cards_list, request)
|
||||||
|
|
||||||
|
@ -133,7 +135,7 @@ def search_by_category(request, category_id):
|
||||||
def search_by_subcategory(request, subcategory_id):
|
def search_by_subcategory(request, subcategory_id):
|
||||||
subcategory = get_object_or_404(SubCategory, pk=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 }
|
context = { 'cards' : cards, 'title' : subcategory.label }
|
||||||
|
|
||||||
|
|
|
@ -1,13 +1,14 @@
|
||||||
{% extends 'base.html' %}
|
{% extends 'base.html' %}
|
||||||
|
|
||||||
{% load image_tags %}
|
{% load image_tags %}
|
||||||
|
{% load filter_tags %}
|
||||||
|
|
||||||
{% block main_container %}
|
{% block main_container %}
|
||||||
|
|
||||||
<h2>{{title}}</h2>
|
<h2>{{title}}</h2>
|
||||||
|
|
||||||
<ul class="thumbnails">
|
<ul class="thumbnails">
|
||||||
{% for card in cards %}
|
{% for card in cards.object_list %}
|
||||||
<li class="span2">
|
<li class="span2">
|
||||||
<a href="{% url card-details card.id %}" class="thumbnail">
|
<a href="{% url card-details card.id %}" class="thumbnail">
|
||||||
{% if card.image %}
|
{% if card.image %}
|
||||||
|
@ -18,18 +19,33 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div class="pagination">
|
<div class="pagination" style="margin: 0 auto; display: inline-block; text-align: center;">
|
||||||
<span class="step-links">
|
<span class="step-links">
|
||||||
{% if cards.has_previous %}
|
{% 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 %}
|
{% endif %}
|
||||||
|
|
||||||
<span class="current">
|
{% for page_num in cards.paginator.num_pages|get_range %}
|
||||||
Page {{ cards.number }} de {{ cards.paginator.num_pages }}.
|
{% if page_num == cards.number %}
|
||||||
</span>
|
<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 %}
|
{% 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 %}
|
{% endif %}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
2
urls.py
2
urls.py
|
@ -10,7 +10,7 @@ urlpatterns = patterns('',
|
||||||
# url(r'^$', 'xcards.views.home', name='home'),
|
# url(r'^$', 'xcards.views.home', name='home'),
|
||||||
# url(r'^xcards/', include('xcards.foo.urls')),
|
# 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'^query/$', 'cards.views.query'),
|
||||||
url(r'^advanced-query/$', 'cards.views.advanced_query', name='advanced-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'),
|
url(r'^list/country/(?P<country_id>\d+)/$', 'cards.views.search_by_country', name='list-by-country'),
|
||||||
|
|
Loading…
Reference in New Issue