def test_storage_and_retrieval_of_bidimensional_measurement(self): arbitrary_default_unit = 'mi__hr' arbitrary_value = 65 arbitrary_measure = measure.Speed arbitrary_measurement = utils.get_measurement( arbitrary_measure, arbitrary_value, arbitrary_default_unit, ) instance = MeasurementTestModel.objects.create( measurement=arbitrary_measurement) instance.save() retrieved = MeasurementTestModel.objects.all()[0] self.assertEqual( retrieved.measurement.unit, arbitrary_default_unit, ) self.assertEqual( retrieved.measurement.__class__, arbitrary_measure, ) self.assertAlmostEqual( retrieved.measurement.mi__hr, arbitrary_value, )
def test_storage_and_retrieval_of_measurement(self): arbitrary_default_unit = 'lb' arbitrary_value = 124 arbitrary_measure = measure.Weight arbitrary_measurement = utils.get_measurement( arbitrary_measure, arbitrary_value, arbitrary_default_unit, ) instance = MeasurementTestModel.objects.create( measurement=arbitrary_measurement) instance.save() retrieved = MeasurementTestModel.objects.all()[0] self.assertEqual( retrieved.measurement._default_unit, arbitrary_default_unit, ) self.assertEqual( retrieved.measurement.__class__, arbitrary_measure, ) self.assertAlmostEqual( retrieved.measurement.lb, arbitrary_value, )
def test_storage_and_retrieval_of_measurement(self): arbitrary_default_unit='lb' arbitrary_value=124 arbitrary_measure=measure.Weight arbitrary_measurement=utils.get_measurement( arbitrary_measure, arbitrary_value, arbitrary_default_unit, ) instance = MeasurementTestModel.objects.create( measurement=arbitrary_measurement ) instance.save() retrieved = MeasurementTestModel.objects.all()[0] self.assertEqual( retrieved.measurement._default_unit, arbitrary_default_unit, ) self.assertEqual( retrieved.measurement.__class__, arbitrary_measure, ) self.assertAlmostEqual( retrieved.measurement.lb, arbitrary_value, )
def test_storage_and_retrieval_of_bidimensional_measurement(self): arbitrary_default_unit='mi__hr' arbitrary_value=65 arbitrary_measure=measure.Speed arbitrary_measurement=utils.get_measurement( arbitrary_measure, arbitrary_value, arbitrary_default_unit, ) instance = MeasurementTestModel.objects.create( measurement=arbitrary_measurement ) instance.save() retrieved = MeasurementTestModel.objects.all()[0] self.assertEqual( retrieved.measurement.unit, arbitrary_default_unit, ) self.assertEqual( retrieved.measurement.__class__, arbitrary_measure, ) self.assertAlmostEqual( retrieved.measurement.mi__hr, arbitrary_value, )
def __get__(self, instance, instance_type=None): if instance is None: return self measure_name = getattr( instance, self.measure_field_name ) measurement_value = getattr( instance, self.measurement_field_name, ) original_unit = getattr( instance, self.original_unit_field_name, ) try: instance_measure = self._get_measure_by_name(measure_name) measurement = utils.get_measurement( instance_measure, measurement_value, instance_measure.STANDARD_UNIT, ) measurement._default_unit = original_unit except (AttributeError, KeyError, ImportError): measurement = measure.UnknownMeasure( measure=measure_name, original_unit=original_unit, value=measurement_value, ) return measurement
def compress(self, data_list): if not data_list: return None value, unit = data_list if value in self.empty_values: return None return utils.get_measurement(self.measurement_class, value, unit)
def test_get_measurement(self): expected_measurement = measure.Volume(us_qt=34) actual_measurement = utils.get_measurement( measure.Volume, 34, 'us_qt', ) self.assertEqual( expected_measurement, actual_measurement, )
def compress(self, data_list): if not data_list: return None value, unit = data_list if value in self.empty_values: return None return utils.get_measurement( self.measurement_class, value, unit )
def __get__(self, instance, instance_type=None): if instance is None: return self measure_packed = getattr( instance, self.measure_field_name ) if measure_packed: measure_name, std_unit = self._get_measure_name_and_std_unit( measure_packed ) else: measure_name = '' std_unit = '' measurement_value = getattr( instance, self.measurement_field_name, ) original_unit = getattr( instance, self.original_unit_field_name, ) if not measure_name or not original_unit: return '' try: instance_measure = self._get_measure_by_name(measure_name) if std_unit and instance_measure.STANDARD_UNIT != std_unit: raise ValueError( 'Measurement %s base unit %s does not match stored %s' % ( measure_name, instance_measure.STANDARD_UNIT, std_unit ) ) measurement = utils.get_measurement( instance_measure, measurement_value, instance_measure.STANDARD_UNIT, original_unit=original_unit ) except (AttributeError, KeyError, ImportError): measurement = measure.UnknownMeasure( measure=measure_name, original_unit=original_unit, value=measurement_value, ) return measurement
def __get__(self, instance, instance_type=None): if instance is None: return self measure_packed = getattr(instance, self.measure_field_name) if measure_packed: measure_name, std_unit = self._get_measure_name_and_std_unit( measure_packed) else: measure_name = '' std_unit = '' measurement_value = getattr( instance, self.measurement_field_name, ) original_unit = getattr( instance, self.original_unit_field_name, ) if not measure_name or not original_unit: return '' try: instance_measure = self._get_measure_by_name(measure_name) if std_unit and instance_measure.STANDARD_UNIT != std_unit: raise ValueError( 'Measurement %s base unit %s does not match stored %s' % (measure_name, instance_measure.STANDARD_UNIT, std_unit)) measurement = utils.get_measurement(instance_measure, measurement_value, instance_measure.STANDARD_UNIT, original_unit=original_unit) except (AttributeError, KeyError, ImportError): measurement = measure.UnknownMeasure( measure=measure_name, original_unit=original_unit, value=measurement_value, ) return measurement