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)
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')]
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')]