The template type should be passed in when doing a search by recipent.

It is possible to search for a phone number when from the email notification page and get a SMS message in return.
This also helps to optimise the query.
This commit is contained in:
Rebecca Law
2018-03-07 17:11:29 +00:00
committed by Chris Hill-Scott
parent faaea75a99
commit 5f25fc0db4
4 changed files with 66 additions and 4 deletions

View File

@@ -435,7 +435,7 @@ def dao_update_notifications_by_reference(references, update_dict):
@statsd(namespace="dao")
def dao_get_notifications_by_to_field(service_id, search_term, statuses=None):
def dao_get_notifications_by_to_field(service_id, search_term, statuses=None, notification_type=None):
try:
normalised = validate_and_format_phone_number(search_term)
except InvalidPhoneError:
@@ -457,6 +457,8 @@ def dao_get_notifications_by_to_field(service_id, search_term, statuses=None):
if statuses:
filters.append(Notification.status.in_(statuses))
if notification_type:
filters.append(Notification.notification_type == notification_type)
results = db.session.query(Notification).filter(*filters).order_by(desc(Notification.created_at)).all()
return results

View File

@@ -337,7 +337,11 @@ def get_service_history(service_id):
def get_all_notifications_for_service(service_id):
data = notifications_filter_schema.load(request.args).data
if data.get('to'):
return search_for_notification_by_to_field(service_id, data['to'], statuses=data.get('status'))
notification_type = data.get('template_type')[0] if data.get('template_type') else None
return search_for_notification_by_to_field(service_id=service_id,
search_term=data['to'],
statuses=data.get('status'),
notification_type=notification_type)
page = data['page'] if 'page' in data else 1
page_size = data['page_size'] if 'page_size' in data else current_app.config.get('PAGE_SIZE')
limit_days = data.get('limit_days')
@@ -380,8 +384,8 @@ def get_notification_for_service(service_id, notification_id):
), 200
def search_for_notification_by_to_field(service_id, search_term, statuses):
results = notifications_dao.dao_get_notifications_by_to_field(service_id, search_term, statuses)
def search_for_notification_by_to_field(service_id, search_term, statuses, notification_type):
results = notifications_dao.dao_get_notifications_by_to_field(service_id, search_term, statuses, notification_type)
return jsonify(
notifications=notification_with_template_schema.dump(results, many=True).data
), 200