From 55852d3ce0abef73a52aa68c303bdc83f287cdbb Mon Sep 17 00:00:00 2001 From: benbenben2 <110821832+benbenben2@users.noreply.github.com> Date: Thu, 23 May 2024 22:15:35 +0200 Subject: [PATCH 1/4] fix wanings modperl_error_log --- lib/ProductOpener/Display.pm | 10 +++++--- lib/ProductOpener/KnowledgePanels.pm | 17 ++++++++++--- lib/ProductOpener/Products.pm | 10 +++++--- lib/ProductOpener/Tags.pm | 2 ++ .../ecoscore/origins_of_ingredients.tt.json | 14 ++++++----- .../ecoscore/threatened_species.tt.json | 2 +- .../environment/ecoscore/total.tt.json | 25 ++++++++++++++++++- .../product/includes/ecoscore_details.tt.html | 8 +++--- 8 files changed, 66 insertions(+), 22 deletions(-) diff --git a/lib/ProductOpener/Display.pm b/lib/ProductOpener/Display.pm index f380f51ec3a58..e0f008e718be8 100644 --- a/lib/ProductOpener/Display.pm +++ b/lib/ProductOpener/Display.pm @@ -1526,7 +1526,8 @@ sub display_text_content ($request_ref, $textid, $text_lc, $file) { } if ((defined $request_ref->{page}) and ($request_ref->{page} > 1)) { - $request_ref->{title} = $title . lang("title_separator") . sprintf(lang("page_x"), $request_ref->{page}); + $request_ref->{title} + = (defined $title ? $title : '') . lang("title_separator") . sprintf(lang("page_x"), $request_ref->{page}); } else { $request_ref->{title} = $title; @@ -9041,11 +9042,14 @@ sub data_to_display_nutrient_levels ($product_ref) { if ((defined $product_ref->{nutrient_levels}) and (defined $product_ref->{nutrient_levels}{$nid})) { + my $nutriment_value = $product_ref->{nutriments}{$nid . $prepared . "_100g"}; + my $formatted_value = defined $nutriment_value + && $nutriment_value =~ /^-?\d+(\.\d+)?$/ ? sprintf("%.2e", $nutriment_value + 0.0) : ''; + push @{$result_data_ref->{nutrient_levels}}, { nid => $nid, nutrient_level => $product_ref->{nutrient_levels}{$nid}, - nutrient_quantity_in_grams => - sprintf("%.2e", $product_ref->{nutriments}{$nid . $prepared . "_100g"}) + 0.0, + nutrient_quantity_in_grams => $formatted_value, nutrient_in_quantity => sprintf( lang("nutrient_in_quantity"), display_taxonomy_tag($lc, "nutrients", "zz:$nid"), diff --git a/lib/ProductOpener/KnowledgePanels.pm b/lib/ProductOpener/KnowledgePanels.pm index a75a97da637ee..47d4f70164d81 100644 --- a/lib/ProductOpener/KnowledgePanels.pm +++ b/lib/ProductOpener/KnowledgePanels.pm @@ -719,10 +719,13 @@ sub create_environment_card_panel ($product_ref, $target_lc, $target_cc, $option if ($options{product_type} eq "food") { create_ecoscore_panel($product_ref, $target_lc, $target_cc, $options_ref); - if ( (defined $product_ref->{ecoscore_data}) + if ( + (defined $product_ref->{ecoscore_data}) and (defined $product_ref->{ecoscore_data}{adjustments}) and (defined $product_ref->{ecoscore_data}{adjustments}{threatened_species}) - and ($product_ref->{ecoscore_data}{adjustments}{threatened_species}{value} != 0)) + and (defined $product_ref->{ecoscore_data}{adjustments}{threatened_species}{value} + && $product_ref->{ecoscore_data}{adjustments}{threatened_species}{value} != 0) + ) { create_panel_from_json_template("palm_oil", "api/knowledge-panels/environment/palm_oil.tt.json", @@ -1155,7 +1158,9 @@ sub create_serving_size_panel ($product_ref, $target_lc, $target_cc, $options_re # Generate a panel only for food products that have a serving size if (defined $product_ref->{serving_size}) { my $serving_warning = undef; - if (($product_ref->{serving_quantity} <= 5) and ($product_ref->{nutrition_data_per} eq 'serving')) { + if ( (defined $product_ref->{serving_quantity} && $product_ref->{serving_quantity} <= 5) + and ($product_ref->{nutrition_data_per} eq 'serving')) + { $serving_warning = lang_in_other_lc($target_lc, "serving_too_small_for_nutrition_analysis"); } my $panel_data_ref = {"serving_warning" => $serving_warning,}; @@ -1334,7 +1339,11 @@ sub create_ingredients_panel ($product_ref, $target_lc, $target_cc, $options_ref title => $title, ingredients_text => $ingredients_text, ingredients_text_with_allergens => $ingredients_text_with_allergens, - ingredients_text_lc => $ingredients_text_lc, + ingredients_text_lc => ( + defined $ingredients_text_lc + ? display_taxonomy_tag($target_lc, 'languages', $language_codes{$ingredients_text_lc}) + : '' + ), ingredients_text_language => display_taxonomy_tag($target_lc, 'languages', $language_codes{$ingredients_text_lc}), }; diff --git a/lib/ProductOpener/Products.pm b/lib/ProductOpener/Products.pm index 75884ed931535..0146d0201833c 100644 --- a/lib/ProductOpener/Products.pm +++ b/lib/ProductOpener/Products.pm @@ -410,6 +410,8 @@ Boolean value indicating if the code is valid or not. =cut sub is_valid_code ($code) { + # Return an empty string if $code is undef + return '' if !defined $code; return $code =~ /^\d{4,24}$/; } @@ -2338,12 +2340,14 @@ sub compute_product_history_and_completeness ($product_data_root, $current_produ my $number_of_units = $packagings_ref->{number_of_units}; my $weight_measured = $packagings_ref->{weight_measured}; - $packagings_data_signature .= "number_of_units:" . ($number_of_units || '') . ','; + $packagings_data_signature + .= "number_of_units:" . (defined $number_of_units ? $number_of_units : '') . ','; foreach my $property (qw(shape material recycling quantity_per_unit)) { - $packagings_data_signature .= $property . ":" . ($packagings_ref->{$property} || '') . ','; + $packagings_data_signature .= $property . ":" + . (defined $packagings_ref->{$property} ? $packagings_ref->{$property} : '') . ','; } $packagings_data_signature .= "\n"; - $packagings_weights_signature .= ($weight_measured || '') . "\n"; + $packagings_weights_signature .= (defined $weight_measured ? $weight_measured : '') . "\n"; } # If the signature is empty or contains only line feeds, we don't have data if ($packagings_data_signature !~ /^\s*$/) { diff --git a/lib/ProductOpener/Tags.pm b/lib/ProductOpener/Tags.pm index 10394b0833859..1dad4c824b113 100644 --- a/lib/ProductOpener/Tags.pm +++ b/lib/ProductOpener/Tags.pm @@ -3433,6 +3433,8 @@ sub list_taxonomy_tags_in_language ($target_lc, $tagtype, $tags_ref) { } sub canonicalize_tag2 ($tagtype, $tag) { + return $tag if !defined $tag; + #$tag = lc($tag); my $canon_tag = $tag; $canon_tag =~ s/^ //g; diff --git a/templates/api/knowledge-panels/environment/ecoscore/origins_of_ingredients.tt.json b/templates/api/knowledge-panels/environment/ecoscore/origins_of_ingredients.tt.json index 5cdef725bd60c..1f07f12bd0b24 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/origins_of_ingredients.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/origins_of_ingredients.tt.json @@ -25,11 +25,11 @@ } }, [% ELSE %] - [% IF product.ecoscore_data.adjustments.origins_of_ingredients.value <= 0 %] + [% IF defined product.ecoscore_data.adjustments.origins_of_ingredients.value && product.ecoscore_data.adjustments.origins_of_ingredients.value <= 0 %] "evaluation": "bad", "title_element": { "title": "[% edq(lang('ecoscore_origins_of_ingredients_impact_high')) %]", - [% ELSIF product.ecoscore_data.adjustments.origins_of_ingredients.value <= 15 %] + [% ELSIF defined product.ecoscore_data.adjustments.origins_of_ingredients.value && product.ecoscore_data.adjustments.origins_of_ingredients.value <= 15 %] "evaluation": "average", "title_element": { "title": "[% edq(lang('ecoscore_origins_of_ingredients_impact_medium')) %]", @@ -38,7 +38,7 @@ "title_element": { "title": "[% edq(lang('ecoscore_origins_of_ingredients_impact_low')) %]", [% END %] - [% IF product.ecoscore_data.adjustments.origins_of_ingredients.value > 0 %] + [% IF defined product.ecoscore_data.adjustments.origins_of_ingredients.value && product.ecoscore_data.adjustments.origins_of_ingredients.value > 0 %] "subtitle": "[% edq(lang('bonus')) %][% sep %]: +[% product.ecoscore_data.adjustments.origins_of_ingredients.value %]", [% ELSE %] "subtitle": "[% edq(lang('malus')) %][% sep %]: [% product.ecoscore_data.adjustments.origins_of_ingredients.value %]", @@ -53,8 +53,8 @@ "text_element": { "type": "default", "html": ` - [% lang('ecoscore_environmental_policy') %][% sep %]: [% IF product.ecoscore_data.adjustments.origins_of_ingredients.epi_value > 0 %]+[% END %][% round(product.ecoscore_data.adjustments.origins_of_ingredients.epi_value) %]
- [% lang('ecoscore_transportation') %][% sep %]: [% IF product.ecoscore_data.adjustments.origins_of_ingredients.transportation_value > 0 %]+[% END %][% round(product.ecoscore_data.adjustments.origins_of_ingredients.transportation_value) %]
+ [% lang('ecoscore_environmental_policy') %][% sep %]: [% IF defined product.ecoscore_data.adjustments.origins_of_ingredients.epi_value && product.ecoscore_data.adjustments.origins_of_ingredients.epi_value > 0 %]+[% END %][% round(product.ecoscore_data.adjustments.origins_of_ingredients.epi_value) %]
+ [% lang('ecoscore_transportation') %][% sep %]: [% IF defined product.ecoscore_data.adjustments.origins_of_ingredients.transportation_value && product.ecoscore_data.adjustments.origins_of_ingredients.transportation_value > 0 %]+[% END %][% round(product.ecoscore_data.adjustments.origins_of_ingredients.transportation_value) %]
` } }, @@ -89,7 +89,9 @@ "percent": [% round(origin.percent) %], // EPI bonus goes from -5 to 5 with the formula bonus = epi_score / 10 - 5 // Transportation bonus goes from 0 to 15 with the formula bonus = transportation_score * 0.15 - [% SET score = origin.epi_score / 10 - 5 + origin.transportation_score * 0.15 %] + [% SET epi_score = defined origin.epi_score ? origin.epi_score : 0 %] + [% SET transportation_score = defined origin.transportation_score ? origin.transportation_score : 0 %] + [% SET score = epi_score / 10 - 5 + transportation_score * 0.15 %] [% IF score >= 15 %] "evaluation": "good", [% ELSIF score <= 0 %] diff --git a/templates/api/knowledge-panels/environment/ecoscore/threatened_species.tt.json b/templates/api/knowledge-panels/environment/ecoscore/threatened_species.tt.json index 88b546b4b4380..9a297571c672a 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/threatened_species.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/threatened_species.tt.json @@ -24,7 +24,7 @@ } }, ] - [% ELSIF product.ecoscore_data.adjustments.threatened_species.value < 0 %] + [% ELSIF defined product.ecoscore_data.adjustments.threatened_species.value && product.ecoscore_data.adjustments.threatened_species.value < 0 %] "evaluation": "bad", "title_element": { "title": "[% edq(lang('ecoscore_ingredients_whose_cultivation_threatens_species')) %]", diff --git a/templates/api/knowledge-panels/environment/ecoscore/total.tt.json b/templates/api/knowledge-panels/environment/ecoscore/total.tt.json index f3869ad73dc44..8a1b1af28363a 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/total.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/total.tt.json @@ -1,4 +1,27 @@ -[% SET sum_of_bonuses_and_maluses = product.ecoscore_data.adjustments.production_system.value + product.ecoscore_data.adjustments.packaging.value + product.ecoscore_data.adjustments.threatened_species.value + product.ecoscore_data.adjustments.origins_of_ingredients.value %] +[% USE sum_of_bonuses_and_maluses = 0; + USE value; + IF (defined product.ecoscore_data.adjustments.production_system.value && product.ecoscore_data.adjustments.production_system.value =~ /^-?\d+(\.\d+)?$/) { + value = product.ecoscore_data.adjustments.production_system.value; + } + sum_of_bonuses_and_maluses += value; + + IF (defined product.ecoscore_data.adjustments.packaging.value && product.ecoscore_data.adjustments.packaging.value =~ /^-?\d+(\.\d+)?$/) { + value = product.ecoscore_data.adjustments.packaging.value; + } + sum_of_bonuses_and_maluses += value; + + IF (defined product.ecoscore_data.adjustments.threatened_species.value && product.ecoscore_data.adjustments.threatened_species.value =~ /^-?\d+(\.\d+)?$/) { + value = product.ecoscore_data.adjustments.threatened_species.value; + } + sum_of_bonuses_and_maluses += value; + + IF (defined product.ecoscore_data.adjustments.origins_of_ingredients.value && product.ecoscore_data.adjustments.origins_of_ingredients.value =~ /^-?\d+(\.\d+)?$/) { + value = product.ecoscore_data.adjustments.origins_of_ingredients.value; + } + sum_of_bonuses_and_maluses += value; +%] + + { "level": "info", "topics": [ diff --git a/templates/web/pages/product/includes/ecoscore_details.tt.html b/templates/web/pages/product/includes/ecoscore_details.tt.html index 0cc4ebf0d720e..6f1d08a402413 100644 --- a/templates/web/pages/product/includes/ecoscore_details.tt.html +++ b/templates/web/pages/product/includes/ecoscore_details.tt.html @@ -120,7 +120,7 @@

[% lang('ecoscore_additional_bonuses_and_maluses') %]

[% display_icon('agriculture') %] [% lang('ecoscore_production_system') %]

- [% IF adjustments.production_system.value > 0 %] + [% IF defined adjustments.production_system.value && adjustments.production_system.value > 0 %]
@@ -233,7 +233,7 @@

[% display_icon('packaging') %] [% lang('ecoscore_packaging') %]

[% lang('ecoscore_score_of_all_components') %][% sep %]: [% adjustments.packaging.score %]

[% END %] -

[% lang('ecoscore_packaging') %][% sep %]: [% IF adjustments.packaging.value > 0 %]+[% END %][% adjustments.packaging.value %]

+

[% lang('ecoscore_packaging') %][% sep %]: [% IF defined adjustments.packaging.value && adjustments.packaging.value > 0 %]+[% END %][% adjustments.packaging.value %]

From 952ec150073d3dd367595d7b08e3cb75cb8bceb5 Mon Sep 17 00:00:00 2001 From: benbenben2 <110821832+benbenben2@users.noreply.github.com> Date: Sun, 26 May 2024 08:51:14 +0200 Subject: [PATCH 2/4] Apply suggestions from code review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Stéphane Gigandet --- lib/ProductOpener/Display.pm | 2 +- lib/ProductOpener/Products.pm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/ProductOpener/Display.pm b/lib/ProductOpener/Display.pm index e0f008e718be8..5a72dedd1fc23 100644 --- a/lib/ProductOpener/Display.pm +++ b/lib/ProductOpener/Display.pm @@ -1527,7 +1527,7 @@ sub display_text_content ($request_ref, $textid, $text_lc, $file) { if ((defined $request_ref->{page}) and ($request_ref->{page} > 1)) { $request_ref->{title} - = (defined $title ? $title : '') . lang("title_separator") . sprintf(lang("page_x"), $request_ref->{page}); + = ($title // '') . lang("title_separator") . sprintf(lang("page_x"), $request_ref->{page}); } else { $request_ref->{title} = $title; diff --git a/lib/ProductOpener/Products.pm b/lib/ProductOpener/Products.pm index 0146d0201833c..1e744a121b7a1 100644 --- a/lib/ProductOpener/Products.pm +++ b/lib/ProductOpener/Products.pm @@ -2341,7 +2341,7 @@ sub compute_product_history_and_completeness ($product_data_root, $current_produ my $weight_measured = $packagings_ref->{weight_measured}; $packagings_data_signature - .= "number_of_units:" . (defined $number_of_units ? $number_of_units : '') . ','; + .= "number_of_units:" . ($number_of_units // '') . ','; foreach my $property (qw(shape material recycling quantity_per_unit)) { $packagings_data_signature .= $property . ":" . (defined $packagings_ref->{$property} ? $packagings_ref->{$property} : '') . ','; From 50695735a9586a2567d6010975d41ce9ea99e240 Mon Sep 17 00:00:00 2001 From: benbenben2 <110821832+benbenben2@users.noreply.github.com> Date: Sun, 26 May 2024 10:20:51 +0200 Subject: [PATCH 3/4] apply suggestions --- lib/ProductOpener/Display.pm | 4 ++-- lib/ProductOpener/Products.pm | 8 +++---- .../ecoscore/origins_of_ingredients.tt.json | 14 +++++------ .../ecoscore/threatened_species.tt.json | 2 +- .../environment/ecoscore/total.tt.json | 24 +------------------ .../product/includes/ecoscore_details.tt.html | 8 +++---- 6 files changed, 18 insertions(+), 42 deletions(-) diff --git a/lib/ProductOpener/Display.pm b/lib/ProductOpener/Display.pm index 5a72dedd1fc23..0123692faf31c 100644 --- a/lib/ProductOpener/Display.pm +++ b/lib/ProductOpener/Display.pm @@ -9043,8 +9043,8 @@ sub data_to_display_nutrient_levels ($product_ref) { if ((defined $product_ref->{nutrient_levels}) and (defined $product_ref->{nutrient_levels}{$nid})) { my $nutriment_value = $product_ref->{nutriments}{$nid . $prepared . "_100g"}; - my $formatted_value = defined $nutriment_value - && $nutriment_value =~ /^-?\d+(\.\d+)?$/ ? sprintf("%.2e", $nutriment_value + 0.0) : ''; + my $formatted_value = $nutriment_value + // '' =~ /^-?\d+(\.\d+)?$/ ? sprintf("%.2e", $nutriment_value + 0.0) : ''; push @{$result_data_ref->{nutrient_levels}}, { nid => $nid, diff --git a/lib/ProductOpener/Products.pm b/lib/ProductOpener/Products.pm index 1e744a121b7a1..185065caec3ef 100644 --- a/lib/ProductOpener/Products.pm +++ b/lib/ProductOpener/Products.pm @@ -2340,14 +2340,12 @@ sub compute_product_history_and_completeness ($product_data_root, $current_produ my $number_of_units = $packagings_ref->{number_of_units}; my $weight_measured = $packagings_ref->{weight_measured}; - $packagings_data_signature - .= "number_of_units:" . ($number_of_units // '') . ','; + $packagings_data_signature .= "number_of_units:" . ($number_of_units // '') . ','; foreach my $property (qw(shape material recycling quantity_per_unit)) { - $packagings_data_signature .= $property . ":" - . (defined $packagings_ref->{$property} ? $packagings_ref->{$property} : '') . ','; + $packagings_data_signature .= $property . ":" . ($packagings_ref->{$property} // '') . ','; } $packagings_data_signature .= "\n"; - $packagings_weights_signature .= (defined $weight_measured ? $weight_measured : '') . "\n"; + $packagings_weights_signature .= ($weight_measured // '') . "\n"; } # If the signature is empty or contains only line feeds, we don't have data if ($packagings_data_signature !~ /^\s*$/) { diff --git a/templates/api/knowledge-panels/environment/ecoscore/origins_of_ingredients.tt.json b/templates/api/knowledge-panels/environment/ecoscore/origins_of_ingredients.tt.json index 1f07f12bd0b24..679826ed49162 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/origins_of_ingredients.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/origins_of_ingredients.tt.json @@ -25,11 +25,11 @@ } }, [% ELSE %] - [% IF defined product.ecoscore_data.adjustments.origins_of_ingredients.value && product.ecoscore_data.adjustments.origins_of_ingredients.value <= 0 %] + [% IF product.ecoscore_data.adjustments.origins_of_ingredients.value.defined && product.ecoscore_data.adjustments.origins_of_ingredients.value <= 0 %] "evaluation": "bad", "title_element": { "title": "[% edq(lang('ecoscore_origins_of_ingredients_impact_high')) %]", - [% ELSIF defined product.ecoscore_data.adjustments.origins_of_ingredients.value && product.ecoscore_data.adjustments.origins_of_ingredients.value <= 15 %] + [% ELSIF product.ecoscore_data.adjustments.origins_of_ingredients.value.defined && product.ecoscore_data.adjustments.origins_of_ingredients.value <= 15 %] "evaluation": "average", "title_element": { "title": "[% edq(lang('ecoscore_origins_of_ingredients_impact_medium')) %]", @@ -38,7 +38,7 @@ "title_element": { "title": "[% edq(lang('ecoscore_origins_of_ingredients_impact_low')) %]", [% END %] - [% IF defined product.ecoscore_data.adjustments.origins_of_ingredients.value && product.ecoscore_data.adjustments.origins_of_ingredients.value > 0 %] + [% IF product.ecoscore_data.adjustments.origins_of_ingredients.value.defined && product.ecoscore_data.adjustments.origins_of_ingredients.value > 0 %] "subtitle": "[% edq(lang('bonus')) %][% sep %]: +[% product.ecoscore_data.adjustments.origins_of_ingredients.value %]", [% ELSE %] "subtitle": "[% edq(lang('malus')) %][% sep %]: [% product.ecoscore_data.adjustments.origins_of_ingredients.value %]", @@ -53,8 +53,8 @@ "text_element": { "type": "default", "html": ` - [% lang('ecoscore_environmental_policy') %][% sep %]: [% IF defined product.ecoscore_data.adjustments.origins_of_ingredients.epi_value && product.ecoscore_data.adjustments.origins_of_ingredients.epi_value > 0 %]+[% END %][% round(product.ecoscore_data.adjustments.origins_of_ingredients.epi_value) %]
- [% lang('ecoscore_transportation') %][% sep %]: [% IF defined product.ecoscore_data.adjustments.origins_of_ingredients.transportation_value && product.ecoscore_data.adjustments.origins_of_ingredients.transportation_value > 0 %]+[% END %][% round(product.ecoscore_data.adjustments.origins_of_ingredients.transportation_value) %]
+ [% lang('ecoscore_environmental_policy') %][% sep %]: [% IF product.ecoscore_data.adjustments.origins_of_ingredients.epi_value.defined && product.ecoscore_data.adjustments.origins_of_ingredients.epi_value > 0 %]+[% END %][% round(product.ecoscore_data.adjustments.origins_of_ingredients.epi_value) %]
+ [% lang('ecoscore_transportation') %][% sep %]: [% IF product.ecoscore_data.adjustments.origins_of_ingredients.transportation_value.defined && product.ecoscore_data.adjustments.origins_of_ingredients.transportation_value > 0 %]+[% END %][% round(product.ecoscore_data.adjustments.origins_of_ingredients.transportation_value) %]
` } }, @@ -89,8 +89,8 @@ "percent": [% round(origin.percent) %], // EPI bonus goes from -5 to 5 with the formula bonus = epi_score / 10 - 5 // Transportation bonus goes from 0 to 15 with the formula bonus = transportation_score * 0.15 - [% SET epi_score = defined origin.epi_score ? origin.epi_score : 0 %] - [% SET transportation_score = defined origin.transportation_score ? origin.transportation_score : 0 %] + [% SET epi_score = origin.epi_score.defined ? origin.epi_score : 0 %] + [% SET transportation_score = origin.transportation_score.defined ? origin.transportation_score : 0 %] [% SET score = epi_score / 10 - 5 + transportation_score * 0.15 %] [% IF score >= 15 %] "evaluation": "good", diff --git a/templates/api/knowledge-panels/environment/ecoscore/threatened_species.tt.json b/templates/api/knowledge-panels/environment/ecoscore/threatened_species.tt.json index 9a297571c672a..3fa593b966746 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/threatened_species.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/threatened_species.tt.json @@ -24,7 +24,7 @@ } }, ] - [% ELSIF defined product.ecoscore_data.adjustments.threatened_species.value && product.ecoscore_data.adjustments.threatened_species.value < 0 %] + [% ELSIF product.ecoscore_data.adjustments.threatened_species.value.defined && product.ecoscore_data.adjustments.threatened_species.value < 0 %] "evaluation": "bad", "title_element": { "title": "[% edq(lang('ecoscore_ingredients_whose_cultivation_threatens_species')) %]", diff --git a/templates/api/knowledge-panels/environment/ecoscore/total.tt.json b/templates/api/knowledge-panels/environment/ecoscore/total.tt.json index 8a1b1af28363a..7c98ab845ac29 100644 --- a/templates/api/knowledge-panels/environment/ecoscore/total.tt.json +++ b/templates/api/knowledge-panels/environment/ecoscore/total.tt.json @@ -1,26 +1,4 @@ -[% USE sum_of_bonuses_and_maluses = 0; - USE value; - IF (defined product.ecoscore_data.adjustments.production_system.value && product.ecoscore_data.adjustments.production_system.value =~ /^-?\d+(\.\d+)?$/) { - value = product.ecoscore_data.adjustments.production_system.value; - } - sum_of_bonuses_and_maluses += value; - - IF (defined product.ecoscore_data.adjustments.packaging.value && product.ecoscore_data.adjustments.packaging.value =~ /^-?\d+(\.\d+)?$/) { - value = product.ecoscore_data.adjustments.packaging.value; - } - sum_of_bonuses_and_maluses += value; - - IF (defined product.ecoscore_data.adjustments.threatened_species.value && product.ecoscore_data.adjustments.threatened_species.value =~ /^-?\d+(\.\d+)?$/) { - value = product.ecoscore_data.adjustments.threatened_species.value; - } - sum_of_bonuses_and_maluses += value; - - IF (defined product.ecoscore_data.adjustments.origins_of_ingredients.value && product.ecoscore_data.adjustments.origins_of_ingredients.value =~ /^-?\d+(\.\d+)?$/) { - value = product.ecoscore_data.adjustments.origins_of_ingredients.value; - } - sum_of_bonuses_and_maluses += value; -%] - +[% SET sum_of_bonuses_and_maluses = (product.ecoscore_data.adjustments.production_system.value || 0) + (product.ecoscore_data.adjustments.packaging.value || 0) + (product.ecoscore_data.adjustments.threatened_species.value || 0) + (product.ecoscore_data.adjustments.origins_of_ingredients.value || 0) %] { "level": "info", diff --git a/templates/web/pages/product/includes/ecoscore_details.tt.html b/templates/web/pages/product/includes/ecoscore_details.tt.html index 6f1d08a402413..ded1bb4641b2c 100644 --- a/templates/web/pages/product/includes/ecoscore_details.tt.html +++ b/templates/web/pages/product/includes/ecoscore_details.tt.html @@ -120,7 +120,7 @@

[% lang('ecoscore_additional_bonuses_and_maluses') %]

[% display_icon('agriculture') %] [% lang('ecoscore_production_system') %]

- [% IF defined adjustments.production_system.value && adjustments.production_system.value > 0 %] + [% IF adjustments.production_system.value.defined && adjustments.production_system.value > 0 %]
@@ -233,7 +233,7 @@

[% display_icon('packaging') %] [% lang('ecoscore_packaging') %]

[% lang('ecoscore_score_of_all_components') %][% sep %]: [% adjustments.packaging.score %]

[% END %] -

[% lang('ecoscore_packaging') %][% sep %]: [% IF defined adjustments.packaging.value && adjustments.packaging.value > 0 %]+[% END %][% adjustments.packaging.value %]

+

[% lang('ecoscore_packaging') %][% sep %]: [% IF adjustments.packaging.value.defined && adjustments.packaging.value > 0 %]+[% END %][% adjustments.packaging.value %]

From c32cf48c4e21afb6a724254b8b48a8c0e36fade7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Gigandet?= Date: Tue, 4 Jun 2024 10:49:40 +0200 Subject: [PATCH 4/4] fix tests --- lib/ProductOpener/Display.pm | 12 ++++++------ lib/ProductOpener/KnowledgePanels.pm | 6 +----- .../api_v2_product_read/get-existing-product.json | 2 +- .../get-fields-all-knowledge-panels.json | 2 +- ...fields-attribute-groups-all-knowledge-panels.json | 2 +- ...et-product-ingredients-text-without-language.json | 2 +- .../api_v2_product_write/get-product.json | 2 +- .../get-existing-product-gs1-caret.json | 2 +- tests/update_tests_results.sh | 8 ++++---- 9 files changed, 17 insertions(+), 21 deletions(-) diff --git a/lib/ProductOpener/Display.pm b/lib/ProductOpener/Display.pm index 3fed3cad5d5be..3611daa484e78 100644 --- a/lib/ProductOpener/Display.pm +++ b/lib/ProductOpener/Display.pm @@ -9053,16 +9053,16 @@ sub data_to_display_nutrient_levels ($product_ref) { foreach my $nutrient_level_ref (@nutrient_levels) { my ($nid, $low, $high) = @{$nutrient_level_ref}; - if ((defined $product_ref->{nutrient_levels}) and (defined $product_ref->{nutrient_levels}{$nid})) { - - my $nutriment_value = $product_ref->{nutriments}{$nid . $prepared . "_100g"}; - my $formatted_value = $nutriment_value - // '' =~ /^-?\d+(\.\d+)?$/ ? sprintf("%.2e", $nutriment_value + 0.0) : ''; + if ( (defined $product_ref->{nutrient_levels}) + and (defined $product_ref->{nutrient_levels}{$nid}) + and (defined $product_ref->{nutriments}{$nid . $prepared . "_100g"})) + { push @{$result_data_ref->{nutrient_levels}}, { nid => $nid, nutrient_level => $product_ref->{nutrient_levels}{$nid}, - nutrient_quantity_in_grams => $formatted_value, + nutrient_quantity_in_grams => + sprintf("%.2e", $product_ref->{nutriments}{$nid . $prepared . "_100g"}) + 0.0, nutrient_in_quantity => sprintf( lang("nutrient_in_quantity"), display_taxonomy_tag($lc, "nutrients", "zz:$nid"), diff --git a/lib/ProductOpener/KnowledgePanels.pm b/lib/ProductOpener/KnowledgePanels.pm index 47d4f70164d81..41eddd2211e7d 100644 --- a/lib/ProductOpener/KnowledgePanels.pm +++ b/lib/ProductOpener/KnowledgePanels.pm @@ -1339,11 +1339,7 @@ sub create_ingredients_panel ($product_ref, $target_lc, $target_cc, $options_ref title => $title, ingredients_text => $ingredients_text, ingredients_text_with_allergens => $ingredients_text_with_allergens, - ingredients_text_lc => ( - defined $ingredients_text_lc - ? display_taxonomy_tag($target_lc, 'languages', $language_codes{$ingredients_text_lc}) - : '' - ), + ingredients_text_lc => $ingredients_text_lc, ingredients_text_language => display_taxonomy_tag($target_lc, 'languages', $language_codes{$ingredients_text_lc}), }; diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-existing-product.json b/tests/integration/expected_test_results/api_v2_product_read/get-existing-product.json index 60b02b248cba3..042b12b2119eb 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-existing-product.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-existing-product.json @@ -102,7 +102,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : 0, + "epi_score" : "0", "origin" : "en:unknown", "percent" : 100, "transportation_score" : null diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-all-knowledge-panels.json index e210a2bd2eeac..e5eaf0d55a393 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-all-knowledge-panels.json @@ -102,7 +102,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : 0, + "epi_score" : "0", "origin" : "en:unknown", "percent" : 100, "transportation_score" : null diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json b/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json index 9debd82d1cf77..43e697c75458c 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json +++ b/tests/integration/expected_test_results/api_v2_product_read/get-fields-attribute-groups-all-knowledge-panels.json @@ -750,7 +750,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : 0, + "epi_score" : "0", "origin" : "en:unknown", "percent" : 100, "transportation_score" : null diff --git a/tests/integration/expected_test_results/api_v2_product_write/get-product-ingredients-text-without-language.json b/tests/integration/expected_test_results/api_v2_product_write/get-product-ingredients-text-without-language.json index 10304f2245596..1870fa4d97df4 100644 --- a/tests/integration/expected_test_results/api_v2_product_write/get-product-ingredients-text-without-language.json +++ b/tests/integration/expected_test_results/api_v2_product_write/get-product-ingredients-text-without-language.json @@ -97,7 +97,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : 0, + "epi_score" : "0", "origin" : "en:unknown", "percent" : 100, "transportation_score" : null diff --git a/tests/integration/expected_test_results/api_v2_product_write/get-product.json b/tests/integration/expected_test_results/api_v2_product_write/get-product.json index 81134f8fcbd40..fa753041fd340 100644 --- a/tests/integration/expected_test_results/api_v2_product_write/get-product.json +++ b/tests/integration/expected_test_results/api_v2_product_write/get-product.json @@ -109,7 +109,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : 0, + "epi_score" : "0", "origin" : "en:unknown", "percent" : 100, "transportation_score" : null diff --git a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json index e7a07b2c0184d..fec7ccc4e1d38 100644 --- a/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json +++ b/tests/integration/expected_test_results/api_v3_product_read/get-existing-product-gs1-caret.json @@ -104,7 +104,7 @@ "origins_of_ingredients" : { "aggregated_origins" : [ { - "epi_score" : 0, + "epi_score" : "0", "origin" : "en:unknown", "percent" : 100, "transportation_score" : null diff --git a/tests/update_tests_results.sh b/tests/update_tests_results.sh index ebd7084a7142b..b0a238fad3dfe 100755 --- a/tests/update_tests_results.sh +++ b/tests/update_tests_results.sh @@ -19,10 +19,10 @@ rm /mnt/podata/data/categories_stats/*.* # Unit tests # all tests use init_expected_results function -for FILE in $(grep -l init_expected_results unit/*.t); -do - perl $FILE --update-expected-results -done +#for FILE in $(grep -l init_expected_results unit/*.t); +#do +# perl $FILE --update-expected-results +#done # Integration tests