Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 8 additions & 4 deletions pipelines/assets/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ def corrected_files(context: AssetExecutionContext, config: BSSMetadataConfig) -
partition_key = context.asset_partition_key_for_output()
livelihood_zone_baseline = LivelihoodZoneBaseline.objects.get_by_natural_key(*partition_key.split("~")[1:])

def validate_previous_value(cell, expected_previous_value, previous_value):
def validate_previous_value(worksheet_name, cell_reference, expected_previous_value, previous_value):
"""
Inline function to validate the existing value of a cell is the expected one, prior to correcting it.
"""
Expand All @@ -210,7 +210,7 @@ def validate_previous_value(cell, expected_previous_value, previous_value):
if expected_previous_value != previous_value:
raise ValueError(
"Unexpected prior value in source BSS. "
f"BSS `{partition_key}`, cell `{cell}`, "
f"BSS `{partition_key}`, cell `'{worksheet_name}'!{cell_reference}`, "
f"value found `{previous_value}`, expected `{expected_previous_value}`."
)

Expand Down Expand Up @@ -280,12 +280,16 @@ def validate_previous_value(cell, expected_previous_value, previous_value):
previous_value = xlrd.error_text_from_code[
xlrd_wb.sheet_by_name(correction.worksheet_name).cell_value(row - 1, col - 1)
]
validate_previous_value(cell, correction.previous_value, previous_value)
validate_previous_value(
correction.worksheet_name, cell, correction.previous_value, previous_value
)
# xlwt uses 0-based indexes, but coordinate_to_tuple uses 1-based, so offset the values
wb.get_sheet(correction.worksheet_name).write(row - 1, col - 1, correction.value)
else:
cell = wb[correction.worksheet_name][cell]
validate_previous_value(cell, correction.previous_value, cell.value)
validate_previous_value(
correction.worksheet_name, cell.coordinate, correction.previous_value, cell.value
)
cell.value = correction.value
cell.comment = Comment(
f"{correction.author__username} on {correction.correction_date.date().isoformat()}: {correction.comment}", # NOQA: E501
Expand Down
18 changes: 12 additions & 6 deletions pipelines/assets/livelihood_activity_regexes.json
Original file line number Diff line number Diff line change
Expand Up @@ -739,6 +739,12 @@
false,
"number_of_local_measures"
],
[
"autre culture(?: de rente)?{separator_pattern} (?:type|nom)",
null,
true,
"product__name"
],
[
"autre culture{separator_pattern} \\(?{product_pattern}\\)?(?: type)?",
null,
Expand Down Expand Up @@ -769,12 +775,6 @@
true,
"quantity_sold"
],
[
"autre culture de rente: type",
null,
true,
"product__name"
],
[
"autre culture de rente: \\(?{product_pattern}\\)?",
null,
Expand All @@ -793,6 +793,12 @@
true,
"quantity_sold"
],
[
"{product_pattern}: (?P<unit_of_measure_id>kg|l)? {vendu_pattern}",
null,
true,
"quantity_sold"
],
[
"{product_pattern}: (?P<unit_of_measure_id>kg|l)? sold",
null,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -519,6 +519,10 @@
"is_start": true,
"attribute": "product__name"
},
"Autre culture: nom": {
"is_start": true,
"attribute": "product__name"
},
"chou: qtité produite": {
"is_start": true,
"product_id": "chou",
Expand Down
Loading