def update(self, view): self.set_name, self.element_name = self.result.getId().split(':') service = getUtility(IMetadataService) metadata_set = service.getMetadataSet(self.set_name) metadata_element = metadata_set.getElement(self.element_name) assert IMetadataElement.providedBy(metadata_element),\ u"Unknow metadata element %s" % self.result.getId() self.renderValue = metadata_element.renderView if metadata_element.metadata_in_catalog_p: # If the metadata is available on the brain, directly use it metadata_key = createIndexId(metadata_element) self.getValue = lambda item: getattr(item, metadata_key) else: self.getValue = lambda item: service.getMetadataValue( item.getObject(), self.set_name, self.element_name)
def update(self, view): self.set_name, self.element_name = self.result.getId().split(':') service = getUtility(IMetadataService) metadata_set = service.getMetadataSet(self.set_name) metadata_element = metadata_set.getElement(self.element_name) assert IMetadataElement.providedBy(metadata_element),\ "Unknow metadata element %s" % self.result.getId() self.renderValue = metadata_element.renderView if metadata_element.metadata_in_catalog_p: # If the metadata is available on the brain, directly use it metadata_key = createIndexId(metadata_element) self.getValue = lambda item: getattr(item, metadata_key) else: self.getValue = lambda item: service.getMetadataValue( item.getObject(), self.set_name, self.element_name)
def getIndexId(self): return createIndexId(self.getMetadataElement())