Esempio n. 1
0
 def rdfxml_to_html(self, graph, query, title="", is_test=False):
     """Convert RDF data to XML
     @param graph The RDFlib graph object
     @param title The page header to show (optional)
     """
     elem = from_model(graph, query)
     renderer = pystache.Renderer(search_dirs=resolve("html/"))
     data_html = renderer.render_name("rdf2html", elem)
     return self.render_html(title, data_html, is_test)
Esempio n. 2
0
 def search(self, start_response, query, prop, offset):
     limit = 20
     start_response(
         '200 OK', [('Content-type', 'text/html; charset=utf-8')])
     results = self.backend.search(query, prop, offset, limit)
     prev = max(0, offset - limit)
     nxt = offset + limit
     pages = "%d - %d" % (offset + 1, offset + min(limit, len(results)))
     if offset == 0:
         has_prev = " disabled"
     else:
         has_prev = ""
     if len(results) <= limit:
         has_next = " disabled"
     else:
         has_next = ""
     qs = "&query=" + quote_plus(query)
     if prop:
         qs = "&property=" + quote_plus(prop)
     results2 = [{
         "title": r["label"],
         "link": r["link"],
         "model": from_model(
             self.backend.summarize(r["id"]),
             BASE_NAME + r["id"])}
         for r in results]
     page = pystache.render(
         open(resolve('html/search.html')).read(),
         {'results': results2[:limit],
          'context': CONTEXT,
          'prev': prev,
          'has_prev': has_prev,
          'next': nxt,
          'has_next': has_next,
          'pages': pages,
          'query': qs})
     return [self.render_html(DISPLAY_NAME, page).encode('utf-8')]
Esempio n. 3
0
    def list_resources(self, start_response, offset, prop, obj, obj_offset):
        """Build the list resources page
        @param start_response The response object
        @param offset The offset to show from
        """
        limit = 20
        has_more, results = self.backend.list_resources(
            offset, limit, prop, obj)
        template = open(resolve("html/list.html")).read()
        if offset > 0:
            has_prev = ""
        else:
            has_prev = "disabled"
        prev = max(offset - limit, 0)
        if has_more:
            has_next = ""
        else:
            has_next = "disabled"
        nxt = offset + limit
        pages = "%d - %d" % (offset + 1, offset + min(limit, len(results)))
        facets = []
        for facet in FACETS:
            if "list" not in facet or facet["list"] is True:
                facet['uri_enc'] = quote_plus(facet['uri'])
                if ("<%s>" % facet['uri']) != prop:
                    facets.append(facet)
                else:
                    facet = copy(facet)
                    mv, val_results = self.backend.list_values(obj_offset, 20,
                                                               prop)
                    facet['values'] = [{
                        'prop_uri': facet['uri_enc'],
                        'value_enc': quote_plus(v['link']),
                        'value': v['label'][:100],
                        'count': v['count'],
                        'offset': obj_offset} for v in val_results]
                    if mv:
                        facet['more_values'] = obj_offset + 20
                    facets.append(facet)

        start_response(
            '200 OK', [('Content-type', 'text/html; charset=utf-8')])
        query = ""
        if prop:
            query += "&prop=" + quote_plus(prop[1:-1])
        if obj:
            query += "&obj=" + quote_plus(obj)
        if obj_offset:
            query += "&obj_offset=" + obj_offset

        results2 = [{
            "title": r["label"],
            "link": r["link"],
            "model": from_model(
                self.backend.summarize(r["id"]),
                BASE_NAME + r["id"])}
            for r in results]
        mres = pystache.render(template, {
            'facets': facets,
            'results': results2,
            'has_prev': has_prev,
            'prev': prev,
            'has_next': has_next,
            'next': nxt,
            'pages': pages,
            'query': query,
            'context': CONTEXT})
        return [self.render_html(DISPLAY_NAME, mres).encode('utf-8')]