def get_needs_parameters(self): """Get the minimum needs resources in parameter format :returns: The minimum needs resources wrapped in parameters. :rtype: list """ parameters = [] for resource in self.minimum_needs['resources']: parameter = ResourceParameter() parameter.name = resource['Resource name'] parameter.help_text = resource['Resource description'] # Adding in the frequency property. This is not in the # FloatParameter by default, so maybe we should subclass. parameter.frequency = resource['Frequency'] parameter.description = self.format_sentence( resource['Readable sentence'], resource) parameter.minimum_allowed_value = float( resource['Minimum allowed']) parameter.maximum_allowed_value = float( resource['Maximum allowed']) parameter.unit.name = resource['Unit'] parameter.unit.plural = resource['Units'] parameter.unit.abbreviation = resource['Unit abbreviation'] parameter.value = float(resource['Default']) parameters.append(parameter) return parameters
def default_minimum_needs(): """Helper to get the default minimum needs. .. note:: Key names will be translated. """ # TODO: update this to use parameters rice = ResourceParameter() rice.value = 2.8 rice.frequency = tr('weekly') rice.minimum_allowed_value = 1.4 rice.maximum_allowed_value = 5.6 rice.name = tr('Rice') rice.unit.abbreviation = tr('kg') rice.unit.name = tr('kilogram') rice.unit.plural = tr('kilograms') drinking_water = ResourceParameter() drinking_water.value = 17.5 drinking_water.frequency = tr('weekly') drinking_water.minimum_allowed_value = 10 drinking_water.maximum_allowed_value = 30 drinking_water.name = tr('Drinking Water') drinking_water.unit.abbreviation = tr('l') drinking_water.unit.name = tr('litre') drinking_water.unit.plural = tr('litres') water = ResourceParameter() water.value = 67 water.frequency = tr('weekly') water.minimum_allowed_value = 30 water.maximum_allowed_value = 100 water.name = tr('Clean Water') water.unit.abbreviation = tr('l') water.unit.name = tr('litre') water.unit.plural = tr('litres') family_kits = ResourceParameter() family_kits.value = 0.2 family_kits.frequency = tr('weekly') family_kits.minimum_allowed_value = 0.2 family_kits.maximum_allowed_value = 0.2 family_kits.name = tr('Family Kits') toilets = ResourceParameter() toilets.value = 0.05 toilets.frequency = tr('single') toilets.minimum_allowed_value = 0.02 toilets.maximum_allowed_value = 0.05 toilets.name = tr('Toilets') toilets.help_text = tr( 'Toilets are not provided on a regular basis - it is expected that ' 'installed toilets will continue to be usable.') provenance = default_provenance() minimum_needs = [ rice, drinking_water, water, family_kits, toilets, provenance ] return minimum_needs
def default_minimum_needs(): """Helper to get the default minimum needs. .. note:: Key names will be translated. """ # TODO: update this to use parameters rice = ResourceParameter() rice.value = 2.8 rice.frequency = tr("weekly") rice.minimum_allowed_value = 1.4 rice.maximum_allowed_value = 5.6 rice.name = tr("Rice") rice.unit.abbreviation = tr("kg") rice.unit.name = tr("kilogram") rice.unit.plural = tr("kilograms") drinking_water = ResourceParameter() drinking_water.value = 17.5 drinking_water.frequency = tr("weekly") drinking_water.minimum_allowed_value = 10 drinking_water.maximum_allowed_value = 30 drinking_water.name = tr("Drinking Water") drinking_water.unit.abbreviation = tr("l") drinking_water.unit.name = tr("litre") drinking_water.unit.plural = tr("litres") water = ResourceParameter() water.value = 67 water.frequency = tr("weekly") water.minimum_allowed_value = 30 water.maximum_allowed_value = 100 water.name = tr("Clean Water") water.unit.abbreviation = tr("l") water.unit.name = tr("litre") water.unit.plural = tr("litres") family_kits = ResourceParameter() family_kits.value = 0.2 family_kits.frequency = tr("weekly") family_kits.minimum_allowed_value = 0.2 family_kits.maximum_allowed_value = 0.2 family_kits.name = tr("Family Kits") toilets = ResourceParameter() toilets.value = 0.05 toilets.frequency = tr("single") toilets.minimum_allowed_value = 0.02 toilets.maximum_allowed_value = 0.05 toilets.name = tr("Toilets") toilets.help_text = tr( "Toilets are not provided on a regular basis - it is expected that " "installed toilets will continue to be usable." ) provenance = default_provenance() minimum_needs = [rice, drinking_water, water, family_kits, toilets, provenance] return minimum_needs
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_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 get_needs_parameters(self): """Get the minimum needs resources in parameter format :returns: The minimum needs resources wrapped in parameters. :rtype: list """ parameters = [] for resource in self.minimum_needs['resources']: parameter = ResourceParameter() parameter.name = resource['Resource name'] parameter.help_text = resource['Resource description'] # Adding in the frequency property. This is not in the # FloatParameter by default, so maybe we should subclass. parameter.frequency = resource['Frequency'] parameter.description = self.format_sentence( resource['Readable sentence'], resource) parameter.minimum_allowed_value = float( resource['Minimum allowed']) parameter.maximum_allowed_value = float( resource['Maximum allowed']) parameter.unit.name = resource['Unit'] parameter.unit.plural = resource['Units'] parameter.unit.abbreviation = resource['Unit abbreviation'] parameter.value = float(resource['Default']) # choose highest precision between resource's parameters # start with default of 1 precisions = [1] precision_influence = [ 'Maximum allowed', 'Minimum allowed', 'Default'] for element in precision_influence: resource_element = str(resource[element]) if resource[element] is not None and '.' in resource_element: precisions.append(self.precision_of(resource_element)) parameter.precision = max(precisions) parameters.append(parameter) prov_parameter = TextParameter() prov_parameter.name = tr('Provenance') prov_parameter.description = tr('The provenance of minimum needs') prov_parameter.help_text = tr('The provenance of minimum needs') try: prov_parameter.value = self.provenance except TypeError: prov_parameter.value = '' parameters.append(prov_parameter) return parameters
def get_needs_parameters(self): """Get the minimum needs resources in parameter format :returns: The minimum needs resources wrapped in parameters. :rtype: list """ parameters = [] for resource in self.minimum_needs['resources']: parameter = ResourceParameter() parameter.name = resource['Resource name'] parameter.help_text = resource['Resource description'] # Adding in the frequency property. This is not in the # FloatParameter by default, so maybe we should subclass. parameter.frequency = resource['Frequency'] parameter.description = self.format_sentence( resource['Readable sentence'], resource) parameter.minimum_allowed_value = float( resource['Minimum allowed']) parameter.maximum_allowed_value = float( resource['Maximum allowed']) parameter.unit.name = resource['Unit'] parameter.unit.plural = resource['Units'] parameter.unit.abbreviation = resource['Unit abbreviation'] parameter.value = float(resource['Default']) # choose highest precision between resource's parameters # start with default of 1 precisions = [1] precision_influence = [ 'Maximum allowed', 'Minimum allowed', 'Default' ] for element in precision_influence: resource_element = str(resource[element]) if resource[element] is not None and '.' in resource_element: precisions.append(self.precision_of(resource_element)) parameter.precision = max(precisions) parameters.append(parameter) prov_parameter = TextParameter() prov_parameter.name = tr('Provenance') prov_parameter.description = tr('The provenance of minimum needs') prov_parameter.help_text = tr('The provenance of minimum needs') try: prov_parameter.value = self.provenance except TypeError: prov_parameter.value = '' parameters.append(prov_parameter) return parameters
def save_resource(self): """Accept the add/edit of the current resource. """ # -- # Hackorama to get this working outside the method that the # parameters where defined in. parameters_widget = [ self.parameters_scrollarea.layout().itemAt(i) for i in range(self.parameters_scrollarea.layout().count())][0] parameters = parameters_widget.widget().get_parameters() # To store parameters, we need the english version. translated_to_english = dict( (y, x) for x, y in self.resource_parameters.iteritems()) resource = {} for parameter in parameters: resource[translated_to_english[parameter.name]] = parameter.value # verify the parameters are ok - create a throw-away resource param try: parameter = ResourceParameter() parameter.name = resource['Resource name'] parameter.help_text = resource['Resource description'] # Adding in the frequency property. This is not in the # FloatParameter by default, so maybe we should subclass. parameter.frequency = resource['Frequency'] parameter.description = NeedsProfile.format_sentence( resource['Readable sentence'], resource) parameter.minimum_allowed_value = float( resource['Minimum allowed']) parameter.maximum_allowed_value = float( resource['Maximum allowed']) parameter.unit.name = resource['Unit'] parameter.unit.plural = resource['Units'] parameter.unit.abbreviation = resource['Unit abbreviation'] parameter.value = float(resource['Default']) except ValueOutOfBounds, e: warning = self.tr( 'Problem - default value is invalid') + '\n' + e.message # noinspection PyTypeChecker,PyArgumentList QMessageBox.warning(None, 'InaSAFE', warning) return
def save_resource(self): """Accept the add/edit of the current resource. """ # -- # Hackorama to get this working outside the method that the # parameters where defined in. parameters_widget = [ self.parameters_scrollarea.layout().itemAt(i) for i in range(self.parameters_scrollarea.layout().count()) ][0] parameters = parameters_widget.widget().get_parameters() # To store parameters, we need the english version. translated_to_english = dict( (y, x) for x, y in self.resource_parameters.iteritems()) resource = {} for parameter in parameters: resource[translated_to_english[parameter.name]] = parameter.value # verify the parameters are ok - create a throw-away resource param try: parameter = ResourceParameter() parameter.name = resource['Resource name'] parameter.help_text = resource['Resource description'] # Adding in the frequency property. This is not in the # FloatParameter by default, so maybe we should subclass. parameter.frequency = resource['Frequency'] parameter.description = NeedsProfile.format_sentence( resource['Readable sentence'], resource) parameter.minimum_allowed_value = float( resource['Minimum allowed']) parameter.maximum_allowed_value = float( resource['Maximum allowed']) parameter.unit.name = resource['Unit'] parameter.unit.plural = resource['Units'] parameter.unit.abbreviation = resource['Unit abbreviation'] parameter.value = float(resource['Default']) except ValueOutOfBounds, e: warning = self.tr( 'Problem - default value is invalid') + '\n' + e.message # noinspection PyTypeChecker,PyArgumentList QMessageBox.warning(None, 'InaSAFE', warning) return
def default_minimum_needs(): """Helper to get the default minimum needs. .. note:: Key names will be translated. """ # TODO: update this to use parameters rice = ResourceParameter() rice.value = 2.8 rice.frequency = tr('weekly') rice.minimum_allowed_value = 1.4 rice.maximum_allowed_value = 5.6 rice.name = tr('Rice') rice.unit.abbreviation = tr('kg') rice.unit.name = tr('kilogram') rice.unit.plural = tr('kilograms') drinking_water = ResourceParameter() drinking_water.value = 17.5 drinking_water.frequency = tr('weekly') drinking_water.minimum_allowed_value = 10 drinking_water.maximum_allowed_value = 30 drinking_water.name = tr('Drinking Water') drinking_water.unit.abbreviation = tr('l') drinking_water.unit.name = tr('litre') drinking_water.unit.plural = tr('litres') water = ResourceParameter() water.value = 67 water.frequency = tr('weekly') water.minimum_allowed_value = 30 water.maximum_allowed_value = 100 water.name = tr('Clean Water') water.unit.abbreviation = tr('l') water.unit.name = tr('litre') water.unit.plural = tr('litres') family_kits = ResourceParameter() family_kits.value = 0.2 family_kits.frequency = tr('weekly') family_kits.minimum_allowed_value = 0.2 family_kits.maximum_allowed_value = 0.2 family_kits.name = tr('Family Kits') toilets = ResourceParameter() toilets.value = 0.05 toilets.frequency = tr('single') toilets.minimum_allowed_value = 0.02 toilets.maximum_allowed_value = 0.05 toilets.name = tr('Toilets') toilets.help_text = tr( 'Toilets are not provided on a regular bases - it is expected that ' 'installed toilets will be usable on a continuous basis.' ) minimum_needs = [ rice, drinking_water, water, family_kits, toilets, ] return minimum_needs