예제 #1
0
파일: search.py 프로젝트: akn/pi
def search_aux(query, services=None, add_to_history=True):
    '''give a list of services, and a query, executes the search on
    those services. If the list is None, search on all services.
    add_to_history is a boolean that indicates if this search should be
    added to the user search history'''
    if services==None:
        services= Service.query.all()
    if add_to_history:
        add_search_to_history(query, services)
    search_methods= [m.global_search() for m in services]
    matches = match_search_to_methods_keywords(query, search_methods)
    method_parameters = []
    for squery, method in matches:
        if method.parameters[0].parameter == rest_method_parameters.NOME:
            method_parameters.append((method, {rest_method_parameters.NOME: squery}))
        else:
            method_parameters.append((method, {rest_method_parameters.QUERY: query}))

    results= filter(lambda x:x is not None, ResourceMethod.execute_several(method_parameters, locale=get_locale()))

    xml = ElementTree.Element("entity", type='list')
    for result in results:
        result_xml = ElementTree.fromstring(result)
        if result_xml.tag == 'data':
            result_xml = result_xml.getchildren()[0]
        for e in result_xml:
            xml.append(e)

    html= xml_to_html.render(xml)
    return render_template('search.html', html=html)
예제 #2
0
파일: services.py 프로젝트: akn/pi
def browse_resource_paginated(url, service, method, args):
    args= complete_method_args(service, url, method, args, add_start_end=True)
    xml= method.execute(args)
    html= xml_to_html.render(ElementTree.fromstring(xml))
    n= RESULTS_PER_PAGINATED_PAGE
    if args["end"]==n:
        #first page
        html+= '''
        <script>
        var doing_request= false;
        $(document).bind('scrollstop',function()
            {
            var x= $('body').height() +$(document).scrollTop() ;
            var y= $(document).height();
            if ((x>=y) && (!doing_request))
                    {
                    var url = $('div.ui-page-active').attr('data-url');
                    var start = $('div.ui-page-active ul.list').children().length
                    doing_request= true;
                    $.mobile.pageLoading();
                    $.ajax({url: url+"?start="+start+"&end="+(start+%i), success:
                    function (data)
                        {
                        start+=%i;
                        $("div.ui-page-active ul.list").append(data);
                        $("ul.list").listview("refresh");
                        $.mobile.pageLoading(true);
                        doing_request= false;
                        } });
                    }
            });

        </script>'''%(n, n )
        return render_template('service_browse_resource.html', service=service, html=html, url=url)
    else:
        #not first page, don't return all the page, only li elements
        html_tree= ElementTree.fromstring(html.encode('utf-8'))
        assert html_tree.tag=="ul"
        html= "".join(map(ElementTree.tostring, html_tree.getchildren() ))
        return html
예제 #3
0
파일: services.py 프로젝트: akn/pi
def browse_resource_unpaginated(url, service, method, args):
    args= complete_method_args(service, url, method, args)
    xml= method.execute(args, url_override=service.url+url)
    element = ElementTree.fromstring(xml)
    html= xml_to_html.render(element)
    return render_template('service_browse_resource.html', c="page-map" if element.get('type') == "map" else "", service=service, html=html, url=url)