Tweaked validation behavior

This commit is contained in:
Jamie Hardt
2021-06-06 15:50:29 -07:00
parent 338e8c8fa6
commit 80305f6098
2 changed files with 12 additions and 17 deletions

View File

@@ -29,14 +29,20 @@ def validate_value(input_lines: Iterator[ADRLine], key_field, predicate):
event=event)
def validate_unique_field(input_lines: Iterator[ADRLine], field='cue_number'):
values = set()
def validate_unique_field(input_lines: Iterator[ADRLine], field='cue_number', scope=None):
values = dict()
for event in input_lines:
this = getattr(event, field)
if this in values:
if scope is not None:
key = getattr(event, scope)
else:
key = '_values'
values.setdefault(key, set())
if this in values[key]:
yield ValidationError(message='Re-used {}'.format(field), event=event)
else:
values.update(this)
values[key].update(this)
def validate_non_empty_field(input_lines: Iterator[ADRLine], field='cue_number'):