Пример #1
0
 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]
Пример #2
0
    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'])