Refactor sending elegibility function and update across files

This commit is contained in:
Imdad Ahad
2016-09-28 17:00:17 +01:00
parent 1222a6ddf3
commit db608a05d2
3 changed files with 44 additions and 33 deletions

View File

@@ -1,6 +1,11 @@
import itertools
from app.models import (
ServiceWhitelist,
MOBILE_TYPE, EMAIL_TYPE)
MOBILE_TYPE, EMAIL_TYPE,
KEY_TYPE_TEST, KEY_TYPE_TEAM, KEY_TYPE_NORMAL)
from notifications_utils.recipients import allowed_to_send_to
def get_recipients_from_request(request_json, key, type):
@@ -11,7 +16,38 @@ 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)
get_recipients_from_request(request_json,
'phone_numbers',
MOBILE_TYPE) +
get_recipients_from_request(request_json,
'email_addresses',
EMAIL_TYPE)
)
]
def service_allowed_to_send_to(recipient, service, key_type):
if key_type == KEY_TYPE_TEST:
return True
if key_type == KEY_TYPE_NORMAL and not service.restricted:
return True
team_members = itertools.chain.from_iterable(
[user.mobile_number, user.email_address] for user in service.users)
if key_type == KEY_TYPE_TEAM:
return allowed_to_send_to(
recipient,
team_members
)
if key_type == KEY_TYPE_NORMAL and service.restricted:
whitelist_members = [member.recipient for member in service.whitelist]
return allowed_to_send_to(
recipient,
itertools.chain(
team_members,
whitelist_members
)
)