diff --git a/app/main/forms.py b/app/main/forms.py index eddc61bf6..f73ac0ef2 100644 --- a/app/main/forms.py +++ b/app/main/forms.py @@ -95,21 +95,18 @@ class AddServiceForm(Form): def validate_codes(field, code_type): codes = verify_codes_dao.get_codes(user_id=session['user_id'], code_type=code_type) - for code in codes: - if validate_code(field, code): - if code.expiry_datetime <= datetime.now(): - field.errors.append('Code has expired') - return False - return True - field.errors.append('Code does not match') - return False + is_valid = len([code for code in codes if validate_code(field, code)]) == 1 + if is_valid: + field.errors.clear() + return is_valid def validate_code(field, code): - if field.data is not None: - if check_hash(field.data, code.code) is False: + if field.data and check_hash(field.data, code.code): + if code.expiry_datetime <= datetime.now(): + field.errors.append('Code has expired') return False - else: - return True + return True else: + field.errors.append('Code does not match') return False