From 1222a6ddf3b358744988bc387cddf8e33fe9c44f Mon Sep 17 00:00:00 2001 From: Imdad Ahad Date: Wed, 28 Sep 2016 10:16:10 +0100 Subject: [PATCH] Refactor to increase readability for getting whitelist objects --- app/service/rest.py | 22 ++++++++-------------- app/service/utils.py | 17 +++++++++++++++++ 2 files changed, 25 insertions(+), 14 deletions(-) create mode 100644 app/service/utils.py diff --git a/app/service/rest.py b/app/service/rest.py index 1da828067..7aa823f80 100644 --- a/app/service/rest.py +++ b/app/service/rest.py @@ -35,6 +35,12 @@ from app.dao.service_whitelist_dao import ( from app.dao import notifications_dao from app.dao.provider_statistics_dao import get_fragment_count from app.dao.users_dao import get_model_users +from app.errors import ( + register_errors, + InvalidRequest +) +from app.service import statistics +from app.service.utils import get_whitelist_objects from app.schemas import ( service_schema, api_key_schema, @@ -45,15 +51,6 @@ from app.schemas import ( detailed_service_schema ) from app.utils import pagination_links -from app.errors import ( - register_errors, - InvalidRequest -) -from app.service import statistics -from app.models import ( - ServiceWhitelist, - MOBILE_TYPE, EMAIL_TYPE) - service_blueprint = Blueprint('service', __name__) register_errors(service_blueprint) @@ -284,6 +281,7 @@ def get_detailed_services(): @service_blueprint.route('//whitelist', methods=['GET']) def get_whitelist(service_id): + from app.models import (EMAIL_TYPE, MOBILE_TYPE) service = dao_fetch_service_by_id(service_id) if not service: @@ -303,11 +301,7 @@ def update_whitelist(service_id): # doesn't commit so if there are any errors, we preserve old values in db dao_remove_service_whitelist(service_id) try: - whitelist_objs = itertools.chain( - [ServiceWhitelist.from_string(service_id, MOBILE_TYPE, recipient) - for recipient in request.get_json().get('phone_numbers')], - [ServiceWhitelist.from_string(service_id, EMAIL_TYPE, recipient) - for recipient in request.get_json().get('email_addresses')]) + whitelist_objs = get_whitelist_objects(service_id, request.get_json()) except ValueError as e: current_app.logger.exception(e) dao_rollback() diff --git a/app/service/utils.py b/app/service/utils.py new file mode 100644 index 000000000..e8ca49dc3 --- /dev/null +++ b/app/service/utils.py @@ -0,0 +1,17 @@ +from app.models import ( + ServiceWhitelist, + MOBILE_TYPE, EMAIL_TYPE) + + +def get_recipients_from_request(request_json, key, type): + return [(type, recipient) for recipient in request_json.get(key)] + + +def get_whitelist_objects(service_id, request_json): + return [ + ServiceWhitelist.from_string(service_id, type, recipient) + for type, recipient in ( + get_recipients_from_request(request_json, 'phone_numbers', MOBILE_TYPE) + + get_recipients_from_request(request_json, 'email_addresses', EMAIL_TYPE) + ) + ]