def getTechMDXmlDataForParameterSets(self, experiment, parameterSets, type="experiment"): _xmlData = xmlData() paramObj = ExperimentParameter if type == "experiment": elementName = "experiment" paramObj = ExperimentParameter elif type == "dataset": elementName = "dataset" paramObj = DatasetParameter else: elementName = "datafile" paramObj = DatafileParameter for parameterSet in parameterSets: parameters = paramObj.objects.filter( parameterset=parameterSet).select_related('name') metadataDict = {} for parameter in parameters: # print parameter.name if parameter.name.data_type is ParameterName.NUMERIC: store_metadata_value( metadataDict, parameter.name.name, str(parameter.numerical_value) or 'None') elif parameter.name.data_type is ParameterName.FILENAME and \ parameter.name.units.startswith('image') and \ self.export_images == True: # encode image as b64 file_path = abspath( join(experiment.get_or_create_directory(), parameter.string_value)) try: store_metadata_value(metadataDict, parameter.name.name, b64encode(open(file_path).read())) except: logger.exception('b64encoding failed: %s' % file_path) else: try: store_metadata_value( metadataDict, parameter.name.name, parameter.string_value.strip() or 'None') except AttributeError: store_metadata_value(metadataDict, parameter.name.name, 'None') _xmlData.add_xsdAny_( self.createXmlDataContentForParameterSets( elementName=elementName, schemaURI=parameterSet.schema.namespace, metadataDict=metadataDict)) return _xmlData
def getTechMDXmlDataForParameterSets(self, experiment, parameterSets, type="experiment"): _xmlData = xmlData() paramObj = ExperimentParameter if type == "experiment": elementName = "experiment" paramObj = ExperimentParameter elif type == "dataset": elementName = "dataset" paramObj = DatasetParameter else: elementName = "datafile" paramObj = DatafileParameter for parameterSet in parameterSets: parameters = paramObj.objects.filter(parameterset=parameterSet).select_related('name') metadataDict = {} for parameter in parameters: # print parameter.name if parameter.name.data_type is ParameterName.NUMERIC: store_metadata_value(metadataDict, parameter.name.name, str(parameter.numerical_value) or 'None') elif parameter.name.data_type is ParameterName.FILENAME and \ parameter.name.units.startswith('image') and \ self.export_images == True: # encode image as b64 file_path = abspath(join(experiment.get_or_create_directory(), parameter.string_value)) try: store_metadata_value(metadataDict, parameter.name.name, b64encode(open(file_path).read())) except: logger.exception('b64encoding failed: %s' % file_path) else: try: store_metadata_value(metadataDict, parameter.name.name, parameter.string_value.strip() or 'None') except AttributeError: store_metadata_value(metadataDict, parameter.name.name, 'None') _xmlData.add_xsdAny_(self.createXmlDataContentForParameterSets( elementName=elementName, schemaURI=parameterSet.schema.namespace, metadataDict=metadataDict)) return _xmlData
def characters(self, chars): if self.processExperimentStruct: # handle the different experiment fields if self.grabTitle: self.metsObject.title = chars elif self.grabExperimentUrl: self.metsObject.url = chars elif self.grabAbstract: self.metsObject.description += chars elif self.grabMightBeAuthor: self.mightBeAuthor = chars elif self.grabStartTime: self.metsObject.start_time = chars elif self.grabEndTime: self.metsObject.end_time = chars # if it's really an author, add the mightBeAuthor into the # experiment's author list elif self.grabRoleTerm and chars == 'author': self.metsObject.authors.append(self.mightBeAuthor) elif self.grabInstitution: self.institution = chars elif self.processDatasetStruct: if self.grabTitle: self.metsObject.title = chars elif self.customHandler is not None: self.customHandler.characters(chars) elif chars.strip() != '' and self.parameterName is not None and \ self.processMetadata: # save the parameter values in the temporary metadata dictionary store_metadata_value(self.tempMetadataHolder, self.parameterName, chars)
def characters(self, chars): if self.processExperimentStruct: # handle the different experiment fields if self.grabTitle: self.metsObject.title = chars elif self.grabExperimentUrl: self.metsObject.url = chars elif self.grabAbstract: self.metsObject.description += chars elif self.grabMightBeAuthor: self.mightBeAuthor = chars elif self.grabStartTime: self.metsObject.start_time = chars elif self.grabEndTime: self.metsObject.end_time = chars # if it's really an author, add the mightBeAuthor into the # experiment's author list elif self.grabRoleTerm and chars == 'author': self.metsObject.authors.append(self.mightBeAuthor) elif self.grabInstitution: self.institution = chars elif self.processDatasetStruct: if self.grabTitle: self.metsObject.title = chars elif self.customHandler is not None: self.customHandler.characters(chars) elif chars.strip() != '' and self.parameterName is not None and \ self.processMetadata: # save the parameter values in the temporary metadata dictionary store_metadata_value(self.tempMetadataHolder, self.parameterName, chars)