1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
def search(request):
    import SwishE
    from django.conf import settings
    from django.core.paginator import ObjectPaginator, InvalidPage
    from django.http import HttpResponse
    from django.template import RequestContext, loader
    
    if request.has_key('q'):
        terms = request['q']
        handle = SwishE.new(settings.SEARCH_INDEX_FILE)
        results = handle.query(request.GET['q'])
    
        numhits = results.hits()

        ids = [int(x.getproperty('swishdocpath')) for x in results]

        photo_found = Photo.objects.filter(id__in=ids)
        
        paginator = ObjectPaginator(photo_found,20)

        if request.has_key('page'):
            page = int(request.GET['page'])
        else:
            page = 0
            
        photos = paginator.get_page(page)
        
        c = RequestContext(request,{
        'search':photos,
        'is_paginated': True,
        'results_per_page': 20,
        'has_next': paginator.has_next_page(page),
        'has_previous': paginator.has_previous_page(page),
        'page': page+1,
        'next': page + 1,
        'previous' : page - 1,
        'pages' : paginator.pages,
        'hits' : numhits,
        'q' : request.GET['q']
        })
        
        t = loader.get_template('gallery/search_results.html')
        
    return HttpResponse(t.render(c))