From fe8a1a10c586c0b1c2fd15b60459b1026ccbfd04 Mon Sep 17 00:00:00 2001 From: Rebecca Law Date: Thu, 17 Dec 2015 15:09:12 +0000 Subject: [PATCH] 109898688: Refactor the validate codes logic to be more susinct and easier to read. --- app/main/forms.py | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) 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