Esempio n. 1
0
    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))
Esempio n. 2
0
 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
Esempio n. 3
0
 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