def transform(self, resource, xslt_params={}): """ Transform a given Resource with the stylesheet. @type resource: IResource or basestring @return: Transformed xml data as a string """ if IResource.providedBy(resource): doc = resource.document.xml_doc else: doc = seishub.core.xmldb.resource.newXMLDocument(resource).xml_doc return str(self.parsed_doc.transform(doc, xslt_params))
def getIndexData(self, resource): """ Return indexed data for a given Resource as dictionary. @param resource: resource @type resource: L{seishub.xmldb.interfaces.IResource} """ if not IResource.providedBy(resource): msg = "getIndexData: Resource expected. Got a %s." raise TypeError(msg % type(resource)) # sanity check: document should have an id, else no data can be found assert resource.document._id elements = self.index_catalog.dumpIndexByResource(resource) values = {} for element in elements: values.setdefault(element.index.label, {}) if element.group_pos not in values[element.index.label]: values[element.index.label][element.group_pos] = list() values[element.index.label][element.group_pos].append(element.key) return values
def indexResource(self, resource, xmlindex_list=None): """ Index the given resource using all or any given XMLIndex objects. """ if not IResource.providedBy(resource): raise TypeError("%s is not an IResource." % str(resource)) if not xmlindex_list: xmlindex_list = self.getIndexes( package_id=resource.package.package_id, resourcetype_id=resource.resourcetype.resourcetype_id) elements = [] for xmlindex in xmlindex_list: temp = xmlindex.eval(resource.document, self.env) elements.extend(temp) for el in elements: try: self.store(el) except DbError: # ignore duplicate index elements pass return elements