def test_init(self): """Test init.""" unit_feet = Unit('130790') unit_feet.load_dictionary(unit_feet_depth) unit_metres = Unit('900713') unit_metres.load_dictionary(unit_metres_depth) resource_parameter = ResourceParameter() resource_parameter.name = 'Flood Depth' resource_parameter.is_required = True resource_parameter.precision = 3 resource_parameter.minimum_allowed_value = 1.0 resource_parameter.maximum_allowed_value = 2.0 resource_parameter.help_text = 'The depth of flood.' resource_parameter.description = ( 'A <b>test _description</b> that is very long so that you need ' 'to read it for one minute and you will be tired after read this ' 'description. You are the best user so far. Even better if you ' 'read this description loudly so that all of your friends will be ' 'able to hear you') resource_parameter.unit = unit_feet resource_parameter.allowed_units = [unit_metres, unit_feet] resource_parameter.value = 1.12 widget = ResourceParameterWidget(resource_parameter) expected_value = resource_parameter.name real_value = widget.label.text() message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) expected_value = resource_parameter.value real_value = widget.get_parameter().value message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) widget.set_value(1.5) expected_value = 1.5 real_value = widget.get_parameter().value message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) widget.set_value(1.55555) expected_value = 1.556 real_value = widget.get_parameter().value message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) widget.set_value(7) expected_value = 2 real_value = widget.get_parameter().value message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message)
def convert_to_parameter_unit(unit_definition): unit = Unit() unit.name = unit_definition.get('name') unit.plural = unit_definition.get('plural_name') unit.abbreviation = unit_definition.get('abbreviation') unit.description = unit_definition.get('description') return unit
def building_type_postprocessor(): """Get building-type parameter for postprocessing. :return: Selectors to activate building breakdown postprocessor. :rtype: list """ building_type = GroupParameter() building_type.name = tr('Building type') building_type.enable_parameter = True building_type.description = tr( 'Check this option if you want to enable a building impact report ' 'broken down by building type for each aggregation area.') unit_threshold = Unit() unit_threshold.name = tr('features') unit_threshold.plural = tr('features') unit_threshold.abbreviation = tr('features') unit_threshold.description = tr('Number of features.') threshold = IntegerParameter() threshold.name = 'Threshold' threshold.minimum_allowed_value = 1 # We shouldn't set a maximum, but there is a bug (#2468). threshold.maximum_allowed_value = 9999 threshold.value = 25 threshold.unit = unit_threshold threshold.allowed_units = [unit_threshold] threshold.help_text = tr('Threshold') threshold.description = tr( 'The threshold is used to consolidate small building usage groups ' 'which are within this threshold.') building_type.value = [threshold] return [building_type]
def building_type_postprocessor(): """Get building-type parameter for postprocessing. :return: Selectors to activate building breakdown postprocessor. :rtype: list """ building_type = GroupParameter() building_type.name = tr('Building type') building_type.enable_parameter = True building_type.description = tr( 'Check this option if you want to enable a building impact report ' 'broken down by building type for each aggregation area.' ) unit_threshold = Unit() unit_threshold.name = tr('features') unit_threshold.plural = tr('features') unit_threshold.abbreviation = tr('features') unit_threshold.description = tr( 'Number of features.' ) threshold = IntegerParameter() threshold.name = 'Threshold' threshold.minimum_allowed_value = 1 # We shouldn't set a maximum, but there is a bug (#2468). threshold.maximum_allowed_value = 9999 threshold.value = 25 threshold.unit = unit_threshold threshold.allowed_units = [unit_threshold] threshold.help_text = tr('Threshold') threshold.description = tr( 'The threshold is used to consolidate small building usage groups ' 'which are within this threshold.' ) building_type.value = [threshold] return [building_type]
def test_init(self): unit_feet = Unit("130790") unit_feet.load_dictionary(unit_feet_depth) unit_metres = Unit("900713") unit_metres.load_dictionary(unit_metres_depth) resource_parameter = ResourceParameter() resource_parameter.name = "Flood Depth" resource_parameter.is_required = True resource_parameter.precision = 3 resource_parameter.minimum_allowed_value = 1.0 resource_parameter.maximum_allowed_value = 2.0 resource_parameter.help_text = "The depth of flood." resource_parameter.description = ( "A <b>test _description</b> that is very long so that you need " "to read it for one minute and you will be tired after read this " "description. You are the best user so far. Even better if you " "read this description loudly so that all of your friends will be " "able to hear you" ) resource_parameter.unit = unit_feet resource_parameter.allowed_units = [unit_metres, unit_feet] resource_parameter.value = 1.12 widget = ResourceParameterWidget(resource_parameter) expected_value = resource_parameter.name real_value = widget._label.text() message = "Expected %s get %s" % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) expected_value = resource_parameter.value real_value = widget.get_parameter().value message = "Expected %s get %s" % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) widget.set_value(1.5) expected_value = 1.5 real_value = widget.get_parameter().value message = "Expected %s get %s" % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) widget.set_value(1.55555) expected_value = 1.556 real_value = widget.get_parameter().value message = "Expected %s get %s" % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) widget.set_value(7) expected_value = 2 real_value = widget.get_parameter().value message = "Expected %s get %s" % (expected_value, real_value) self.assertEqual(expected_value, real_value, message)
def test_all(self): """Basic test of all properties.""" unit = Unit() unit.name = 'meter' unit.plural = 'metres' unit.abbreviation = 'm' unit.description = ( '<b>metres</b> are a metric unit of measure. There are 100 ' 'centimetres in 1 metre.'), unit.help_text = 'Help for meter unit' parameter = ResourceParameter() parameter.is_required = True parameter.minimum_allowed_value = 1.0 parameter.maximum_allowed_value = 2.0 parameter.value = 1.123 parameter.frequency = 'weekly' parameter.unit = unit self.assertEqual(1.123, parameter.value) self.assertDictEqual(unit.serialize(), parameter.unit.serialize()) self.assertEqual('weekly', parameter.frequency)
def test_all(self): """Basic test of all properties.""" unit = Unit() unit.name = "meter" unit.plural = "metres" unit.abbreviation = "m" unit.description = (("<b>metres</b> are a metric unit of measure. There are 100 " "centimetres in 1 metre."),) unit.help_text = "Help for meter unit" parameter = ResourceParameter() parameter.is_required = True parameter.minimum_allowed_value = 1.0 parameter.maximum_allowed_value = 2.0 parameter.value = 1.123 parameter.frequency = "weekly" parameter.unit = unit self.assertEqual(1.123, parameter.value) self.assertDictEqual(unit.serialize(), parameter.unit.serialize()) self.assertEqual("weekly", parameter.frequency)
class ResourceParameter(FloatParameter): """A parameter handling specifically the resources used in InaSAFE minimum needs. :param guid: The unique reference to use when addressing this value. :type guid: str, None """ def __init__(self, guid=None): super(ResourceParameter, self).__init__(guid) self._frequency = '' self._unit = Unit() @property def frequency(self): """The frequency that the resource needs to be supplied getter. :returns: The frequency. :rtype: str """ return self._frequency @frequency.setter def frequency(self, frequency): """Set the frequency that the resource needs to be supplied. :param frequency: The frequency of the resource. :type frequency: str """ self._frequency = frequency def serialize(self): """Convert the parameter into a dictionary. :return: The parameter dictionary. :rtype: dict """ pickle = super(ResourceParameter, self).serialize() pickle['frequency'] = self.frequency pickle['unit'] = self._unit.serialize() return pickle # pylint: disable=W0221 @property def unit(self): """Property for the unit for the parameter. :returns: The unit of the parameter. :rtype: Unit """ return self._unit @unit.setter def unit(self, unit): """Setter for unit for the parameter. :param unit: Unit for parameter :type unit: Unit """ self._unit = unit
def age_postprocessor(): """Get age postprocessor selectors. :return: Selectors to activate age postprocessor. :rtype: list """ age = GroupParameter() age.name = 'Age' age.enable_parameter = True age.must_scroll = False age.help_text = tr('Age ratios breakdown.') age.description = tr( 'Check this option if you wish to calculate a breakdown by age group' 'for the affected population. ') unit_ratio = Unit() unit_ratio.name = tr('ratio') unit_ratio.plural = tr('ratios') unit_ratio.abbreviation = tr('ratio') unit_ratio.description = tr( 'Ratio represents a fraction of 1, so it ranges from 0 to 1.') youth_ratio = FloatParameter() youth_ratio.name = 'Youth ratio' youth_ratio.value = get_defaults('YOUTH_RATIO') youth_ratio.unit = unit_ratio youth_ratio.allowed_units = [unit_ratio] youth_ratio.help_text = tr('Youth ratio value.') youth_ratio.description = tr( 'Youth ratio defines what proportion of the population have not yet ' 'achieved financial independence. The age threshold for youth can ' 'vary by region - please consult with your local census bureau to find' 'out what the relevant threshold is in your region. InaSAFE does not ' 'impose a particular age ratio scheme - it will break down the ' 'population according to the thresholds you define for your locality.' 'In InaSAFE, people 0-14 years old are defined as "youth". The ' 'default youth ratio is 0.263.') adult_ratio = FloatParameter() adult_ratio.name = 'Adult ratio' adult_ratio.value = get_defaults('ADULT_RATIO') adult_ratio.unit = unit_ratio adult_ratio.allowed_units = [unit_ratio] adult_ratio.help_text = tr('Adult ratio value.') adult_ratio.description = tr( 'Adult ratio defines what proportion of the population have ' 'passed into adulthood and are not yet aged. The age threshold for ' 'adults can vary by region - please consult with your local census ' 'bureau to find out what the relevant threshold is in your region. ' 'InaSAFE does not impose a particular age ratio scheme - it will ' 'break down the population according to the thresholds you define ' 'for your locality.' 'In InaSAFE, people 15-64 years old are defined as "adult". The ' 'default adult ratio is 0.659.') elderly_ratio = FloatParameter() elderly_ratio.name = 'Elderly ratio' elderly_ratio.value = get_defaults('ELDERLY_RATIO') elderly_ratio.unit = unit_ratio elderly_ratio.allowed_units = [unit_ratio] elderly_ratio.help_text = tr('Elderly ratio value.') elderly_ratio.description = tr( 'Elderly ratio defines what proportion of the population have ' 'passed from adulthood into their later life stage. The age ' 'threshold for being considered elderly can vary by region - please ' 'consult with your local census bureau to find out what the relevant ' 'threshold is in your region. InaSAFE does not impose a particular ' 'age ratio scheme - it will break down the population according to ' 'the thresholds you define for your locality.' 'In InaSAFE, people 65 years old and over are defined as "elderly". ' 'The default elderly ratio is 0.078.') age.value = [youth_ratio, adult_ratio, elderly_ratio] def _age_validator(parameters=None): total_ratio = 0 for p in parameters: total_ratio += p.value if not total_ratio == 1: message = tr('Total Age ratio is %s instead of 1') % total_ratio raise ValueError(message) age.custom_validator = _age_validator return [age]
def test_init(self): unit_feet = Unit('130790') unit_feet.load_dictionary(unit_feet_depth) unit_metres = Unit('900713') unit_metres.load_dictionary(unit_metres_depth) integer_parameter = IntegerParameter() integer_parameter.name = 'Paper' integer_parameter.is_required = True integer_parameter.minimum_allowed_value = 1 integer_parameter.maximum_allowed_value = 5 integer_parameter.help_text = 'Number of paper' integer_parameter.description = ( 'A <b>test _description</b> that is very long so that you need ' 'to read it for one minute and you will be tired after read this ' 'description. You are the best user so far. Even better if you ' 'read this description loudly so that all of your friends will be ' 'able to hear you') integer_parameter.unit = unit_feet integer_parameter.allowed_units = [unit_feet] integer_parameter.value = 3 widget = IntegerParameterWidget(integer_parameter) expected_value = integer_parameter.name real_value = widget._label.text() message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) expected_value = integer_parameter.value real_value = widget.get_parameter().value message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) widget._input.setValue(1.5) expected_value = 1 real_value = widget.get_parameter().value message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) widget._input.setValue(1.55555) expected_value = 1 real_value = widget.get_parameter().value message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) widget._input.setValue(7) expected_value = 5 real_value = widget.get_parameter().value message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) expected_value = 'QLabel' real_value = widget._unit_widget.__class__.__name__ message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) expected_value = 'feet' real_value = widget._unit_widget.text() message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message)
def __init__(self, guid=None): super(ResourceParameter, self).__init__(guid) self._frequency = '' self._unit = Unit()
def test_init(self): unit_feet = Unit('130790') unit_feet.load_dictionary(unit_feet_depth) unit_metres = Unit('900713') unit_metres.load_dictionary(unit_metres_depth) float_parameter = FloatParameter() float_parameter.name = 'Flood Depth' float_parameter.is_required = True float_parameter.precision = 3 float_parameter.minimum_allowed_value = 1.0 float_parameter.maximum_allowed_value = 2.0 float_parameter.help_text = 'The depth of flood.' float_parameter.description = ( 'A <b>test _description</b> that is very long so that you need ' 'to read it for one minute and you will be tired after read this ' 'description. You are the best user so far. Even better if you ' 'read this description loudly so that all of your friends will be ' 'able to hear you') float_parameter.unit = unit_feet float_parameter.allowed_units = [unit_metres, unit_feet] float_parameter.value = 1.12 widget = FloatParameterWidget(float_parameter) expected_value = float_parameter.name real_value = widget._label.text() message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) expected_value = float_parameter.value real_value = widget.get_parameter().value message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) widget._input.setValue(1.5) expected_value = 1.5 real_value = widget.get_parameter().value message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) widget._input.setValue(1.55555) expected_value = 1.556 real_value = widget.get_parameter().value message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) widget._input.setValue(7) expected_value = 2 real_value = widget.get_parameter().value message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) expected_value = 'QComboBox' real_value = widget._unit_widget.__class__.__name__ message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) expected_value = 'feet' real_value = widget.get_parameter().unit.name message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message) expected_value = 'metres' widget._unit_widget.setCurrentIndex(0) real_value = widget.get_parameter().unit.name message = 'Expected %s get %s' % (expected_value, real_value) self.assertEqual(expected_value, real_value, message)
def age_postprocessor(): """Get age postprocessor selectors. :return: Selectors to activate age postprocessor. :rtype: list """ age = GroupParameter() age.name = 'Age' age.enable_parameter = True age.must_scroll = False age.help_text = tr('Age ratios breakdown.') age.description = tr( 'Check this option if you wish to calculate a breakdown by age group' 'for the affected population. ' ) unit_ratio = Unit() unit_ratio.name = tr('ratio') unit_ratio.plural = tr('ratios') unit_ratio.abbreviation = tr('ratio') unit_ratio.description = tr( 'Ratio represents a fraction of 1, so it ranges from 0 to 1.' ) youth_ratio = FloatParameter() youth_ratio.name = 'Youth ratio' youth_ratio.value = get_defaults('YOUTH_RATIO') youth_ratio.unit = unit_ratio youth_ratio.allowed_units = [unit_ratio] youth_ratio.help_text = tr('Youth ratio value.') youth_ratio.description = tr( 'Youth ratio defines what proportion of the population have not yet ' 'achieved financial independence. The age threshold for youth can ' 'vary by region - please consult with your local census bureau to find' 'out what the relevant threshold is in your region. InaSAFE does not ' 'impose a particular age ratio scheme - it will break down the ' 'population according to the thresholds you define for your locality.' 'In InaSAFE, people 0-14 years old are defined as "youth". The ' 'default youth ratio is 0.263.' ) adult_ratio = FloatParameter() adult_ratio.name = 'Adult ratio' adult_ratio.value = get_defaults('ADULT_RATIO') adult_ratio.unit = unit_ratio adult_ratio.allowed_units = [unit_ratio] adult_ratio.help_text = tr('Adult ratio value.') adult_ratio.description = tr( 'Adult ratio defines what proportion of the population have ' 'passed into adulthood and are not yet aged. The age threshold for ' 'adults can vary by region - please consult with your local census ' 'bureau to find out what the relevant threshold is in your region. ' 'InaSAFE does not impose a particular age ratio scheme - it will ' 'break down the population according to the thresholds you define ' 'for your locality.' 'In InaSAFE, people 15-64 years old are defined as "adult". The ' 'default adult ratio is 0.659.' ) elderly_ratio = FloatParameter() elderly_ratio.name = 'Elderly ratio' elderly_ratio.value = get_defaults('ELDERLY_RATIO') elderly_ratio.unit = unit_ratio elderly_ratio.allowed_units = [unit_ratio] elderly_ratio.help_text = tr('Elderly ratio value.') elderly_ratio.description = tr( 'Elderly ratio defines what proportion of the population have ' 'passed from adulthood into their later life stage. The age ' 'threshold for being considered elderly can vary by region - please ' 'consult with your local census bureau to find out what the relevant ' 'threshold is in your region. InaSAFE does not impose a particular ' 'age ratio scheme - it will break down the population according to ' 'the thresholds you define for your locality.' 'In InaSAFE, people 65 years old and over are defined as "elderly". ' 'The default elderly ratio is 0.078.' ) age.value = [youth_ratio, adult_ratio, elderly_ratio] def _age_validator(parameters=None): total_ratio = 0 for p in parameters: total_ratio += p.value if not total_ratio == 1: message = tr('Total Age ratio is %s instead of 1') % total_ratio raise ValueError(message) age.custom_validator = _age_validator return [age]