示例#1
0
    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,
        )
示例#2
0
    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,
        )
示例#3
0
    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,
        )
示例#4
0
    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,
        )
示例#5
0
    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
示例#6
0
    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)
示例#7
0
    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,
        )
示例#8
0
    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,
        )
示例#9
0
    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
        )
示例#10
0
    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
示例#11
0
    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