handlers.py 861 Bytes

from piston.utils import rc
from piston.handler import BaseHandler

from colab.deprecated import solrutils


class SearchHandler(BaseHandler):
    allowed_methods = ('GET', )

    def read(self, request):
        query = request.GET.get('q')
        page = request.GET.get('p', 1)
        results_per_page = request.GET.get('n', 50)
        order = request.GET.get('o')

        if not query:
            return 'Query cannot be empty.'
        else:
            query = query.encode('utf-8')

        try: 
            n = int(results_per_page)
        except ValueError:
            n = 10
    
        if 1 > n > 500:
            n = 1
        
        try:
            page = int(page)
        except ValueError:
            page = 1
        
        if page < 1:
            page = 1

        return solrutils.select(query, results_per_page, page, order)