7 from django.template import RequestContext |
7 from django.template import RequestContext |
8 from egonomy.models import ImageMetadata, Image, Fragment |
8 from egonomy.models import ImageMetadata, Image, Fragment |
9 from egonomy.search_indexes import QueryParser |
9 from egonomy.search_indexes import QueryParser |
10 from egonomy.search_indexes.paginator import SearchPaginator |
10 from egonomy.search_indexes.paginator import SearchPaginator |
11 from egonomy.search_indexes.query import ModelRelatedSearchQuerySet |
11 from egonomy.search_indexes.query import ModelRelatedSearchQuerySet |
|
12 from haystack.query import RelatedSearchQuerySet |
12 import logging |
13 import logging |
13 |
14 |
14 logger = logging.getLogger(__name__) |
15 logger = logging.getLogger(__name__) |
15 |
16 |
16 |
17 |
123 {'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "search":search, "nb_results":nb_results, "url_pagination":url_pagination}, |
124 {'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "search":search, "nb_results":nb_results, "url_pagination":url_pagination}, |
124 context_instance=RequestContext(request)) |
125 context_instance=RequestContext(request)) |
125 |
126 |
126 |
127 |
127 def all_fragments(request): |
128 def all_fragments(request): |
128 |
129 |
129 # Get the cur_page_nb number parameter if possible |
130 # Get the cur_page_nb number parameter if possible |
130 cur_page_nb = request.GET.get("page") or 1 |
131 cur_page_nb = request.GET.get("page") or 1 |
131 cur_page_nb = int(cur_page_nb) |
132 cur_page_nb = int(cur_page_nb) |
132 |
133 |
133 frg_list = Fragment.objects.all().order_by('pk').select_related('image', 'image__info', 'image__metadata','author') |
134 search = None |
|
135 nb_results = 1 |
|
136 if "search" in request.GET: |
|
137 search = request.GET["search"] |
|
138 field = "all" |
|
139 if "field" in request.GET: |
|
140 field = request.GET["field"] |
|
141 |
|
142 frg_list = Fragment.objects.select_related('image', 'image__info', 'image__metadata','author') |
134 nb = getattr(settings,"IMAGES_PER_PAGE", 32) |
143 nb = getattr(settings,"IMAGES_PER_PAGE", 32) |
135 paginator = Paginator(frg_list, nb) |
144 if search: |
|
145 if not field or field == 'all': |
|
146 field = 'text' |
|
147 qp = QueryParser(field) |
|
148 res = RelatedSearchQuerySet().filter(qp.parse(search)).models(Fragment).load_all_queryset(Fragment, frg_list).load_all() |
|
149 paginator = SearchPaginator(res, nb) |
|
150 else: |
|
151 frg_list = frg_list.order_by('pk').all() |
|
152 paginator = Paginator(frg_list, nb) |
|
153 |
136 try: |
154 try: |
137 results = paginator.page(cur_page_nb) |
155 results = paginator.page(cur_page_nb) |
138 except (EmptyPage, InvalidPage): |
156 except (EmptyPage, InvalidPage): |
139 results = paginator.page(paginator.num_pages) |
157 results = paginator.page(paginator.num_pages) |
|
158 |
|
159 url_pagination = reverse("all_fragments") |
|
160 if search: |
|
161 url_pagination = url_pagination + "?search=" + search |
|
162 |
140 |
163 |
141 return render_to_response("egonomy_all_fragments.html", |
164 return render_to_response("egonomy_all_fragments.html", |
142 {'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb}, |
165 {"search_fragment":True, 'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "search":search, "nb_results":nb_results, "url_pagination":url_pagination}, |
143 context_instance=RequestContext(request)) |
166 context_instance=RequestContext(request)) |
144 |
167 |
145 |
168 |
146 |
169 |