Skip to content

Commit 084bf6e

Browse files
committed
Better error message for invalid corrections - see HEA-572
1 parent 67a8fca commit 084bf6e

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

pipelines/assets/base.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ def corrected_files(context: AssetExecutionContext, config: BSSMetadataConfig) -
190190
partition_key = context.asset_partition_key_for_output()
191191
livelihood_zone_baseline = LivelihoodZoneBaseline.objects.get_by_natural_key(*partition_key.split("~")[1:])
192192

193-
def validate_previous_value(cell, expected_previous_value, previous_value):
193+
def validate_previous_value(worksheet_name, cell_reference, expected_previous_value, previous_value):
194194
"""
195195
Inline function to validate the existing value of a cell is the expected one, prior to correcting it.
196196
"""
@@ -210,7 +210,7 @@ def validate_previous_value(cell, expected_previous_value, previous_value):
210210
if expected_previous_value != previous_value:
211211
raise ValueError(
212212
"Unexpected prior value in source BSS. "
213-
f"BSS `{partition_key}`, cell `{cell}`, "
213+
f"BSS `{partition_key}`, cell `'{worksheet_name}'!{cell_reference}`, "
214214
f"value found `{previous_value}`, expected `{expected_previous_value}`."
215215
)
216216

@@ -280,12 +280,16 @@ def validate_previous_value(cell, expected_previous_value, previous_value):
280280
previous_value = xlrd.error_text_from_code[
281281
xlrd_wb.sheet_by_name(correction.worksheet_name).cell_value(row - 1, col - 1)
282282
]
283-
validate_previous_value(cell, correction.previous_value, previous_value)
283+
validate_previous_value(
284+
correction.worksheet_name, cell, correction.previous_value, previous_value
285+
)
284286
# xlwt uses 0-based indexes, but coordinate_to_tuple uses 1-based, so offset the values
285287
wb.get_sheet(correction.worksheet_name).write(row - 1, col - 1, correction.value)
286288
else:
287289
cell = wb[correction.worksheet_name][cell]
288-
validate_previous_value(cell, correction.previous_value, cell.value)
290+
validate_previous_value(
291+
correction.worksheet_name, cell.coordinate, correction.previous_value, cell.value
292+
)
289293
cell.value = correction.value
290294
cell.comment = Comment(
291295
f"{correction.author__username} on {correction.correction_date.date().isoformat()}: {correction.comment}", # NOQA: E501

0 commit comments

Comments
 (0)