def from_parameter(parameter): if parameter is None: return None if parameter.id not in parameter_cache: cp = CachedParameter() cp.id = parameter.id cp.name = parameter.name cp.parameter_type = parameter.parameter_type.value if parameter.parameter_type is not None else None cp.value_encoding = parameter.value_encoding.value if parameter.value_encoding is not None else None cp.code_set = parameter.code_set.value if parameter.code_set is not None else None cp.unit = parameter.unit.value if parameter.unit is not None else None if parameter.fill_value is not None: cp.fill_value = parameter.fill_value.value elif parameter.value_encoding is not None and parameter.value_encoding in app.config['FILL_VALUES']: cp.fill_value = app.config['FILL_VALUES'][parameter.value_encoding] else: cp.fill_value = None cp.display_name = parameter.display_name cp.standard_name = parameter.standard_name cp.precision = parameter.precision cp.parameter_function_map = parameter.parameter_function_map cp.data_product_identifier = parameter.data_product_identifier cp.description = parameter.description cp.parameter_function = CachedFunction.from_function(parameter.parameter_function) cp.streams = [stream.id for stream in parameter.streams] cp.needs = parameter_util.needs(parameter) cp.needs_cc = parameter_util.needs_cc(parameter) parameter_cache[parameter.id] = cp return parameter_cache[parameter.id]
def test_parameters(self): """ Test whether we can retrieve a parameter by id and verify that it contains the correct data. :return: """ pmap = { 195: { 'name': 'pressure', 'ptype': 'quantity', 'encoding': 'int32', 'needs': [], 'cc': [], }, 1963: { 'name': 'ctdpf_ckl_seawater_density', 'ptype': 'function', 'encoding': 'float32', 'needs': [193, 194, 195, 1959, 1960, 1961, 1962], 'cc': ['CC_latitude', 'CC_longitude'], }, } # by id for pdid in pmap: parameter = Parameter.query.get(pdid) self.assertIsNotNone(parameter) self.assertEqual(parameter.name, pmap[pdid]['name']) self.assertEqual(parameter.id, pdid) self.assertEqual(parameter.parameter_type.value, pmap[pdid]['ptype']) self.assertEqual(parameter.value_encoding.value, pmap[pdid]['encoding']) self.assertEqual(sorted([pdref.pdid for pdref in parameter_util.needs(parameter)]), pmap[pdid]['needs']) self.assertEqual(sorted(parameter_util.needs_cc(parameter)), pmap[pdid]['cc'])