Adds a strict validator which fails upon possible FK violations

This commit is contained in:
Oleg Silkin 2020-03-31 13:59:20 -04:00
parent bd06d1c992
commit a6f056821f

View file

@ -51,11 +51,31 @@ def claim_id_is_valid(claim_id: str) -> bool:
# default to None so params can be treated as kwargs; param count becomes more manageable # default to None so params can be treated as kwargs; param count becomes more manageable
def is_valid_base_comment(comment: str = None, claim_id: str = None, parent_id: str = None, **kwargs) -> bool: def is_valid_base_comment(
return comment and body_is_valid(comment) and \ comment: str = None,
((claim_id and claim_id_is_valid(claim_id)) or # parentid is used in place of claimid in replies claim_id: str = None,
(parent_id and comment_id_is_valid(parent_id))) \ parent_id: str = None,
and is_valid_credential_input(**kwargs) strict: bool = False,
**kwargs,
) -> bool:
try:
assert comment and body_is_valid(comment)
# strict mode assumes that the parent_id might not exist
if strict:
assert claim_id and claim_id_is_valid(claim_id)
assert parent_id is None or comment_id_is_valid(parent_id)
# non-strict removes reference restrictions
else:
assert claim_id or parent_id
if claim_id:
assert claim_id_is_valid(claim_id)
else:
assert comment_id_is_valid(parent_id)
except AssertionError:
return False
else:
return is_valid_credential_input(**kwargs)
def is_valid_credential_input(channel_id: str = None, channel_name: str = None, def is_valid_credential_input(channel_id: str = None, channel_name: str = None,