combine post + get inbound, and make them respect data retention

also removed the limit/limit_days args as they're not used by admin
This commit is contained in:
Leo Hemsted
2019-03-28 15:36:12 +00:00
parent 329fa9ba0d
commit cf248a2af3
5 changed files with 82 additions and 52 deletions

View File

@@ -4,6 +4,5 @@ get_inbound_sms_for_service_schema = {
"type": "object",
"properties": {
"phone_number": {"type": "string"},
"limit": {"type": ["integer", "null"], "minimum": 1}
}
}

View File

@@ -30,25 +30,23 @@ register_errors(inbound_sms)
@inbound_sms.route('', methods=['POST'])
def post_query_inbound_sms_for_service(service_id):
form = validate(request.get_json(), get_inbound_sms_for_service_schema)
if 'phone_number' in form:
# we use this to normalise to an international phone number - but this may fail if it's an alphanumeric
user_number = try_validate_and_format_phone_number(form['phone_number'], international=True)
else:
user_number = None
results = dao_get_inbound_sms_for_service(service_id, form.get('limit'), user_number)
return jsonify(data=[row.serialize() for row in results])
return _get_inbound_sms(service_id, user_number=form.get('phone_number'))
@inbound_sms.route('', methods=['GET'])
def get_inbound_sms_for_service(service_id):
user_number = request.args.get('user_number')
return _get_inbound_sms(service_id, user_number=request.args.get('user_number'))
def _get_inbound_sms(service_id, user_number):
if user_number:
# we use this to normalise to an international phone number - but this may fail if it's an alphanumeric
user_number = try_validate_and_format_phone_number(user_number, international=True)
results = dao_get_inbound_sms_for_service(service_id, user_number=user_number)
inbound_data_retention = fetch_service_data_retention_by_notification_type(service_id, 'sms')
limit_days = inbound_data_retention.days_of_retention if inbound_data_retention else 7
results = dao_get_inbound_sms_for_service(service_id, user_number=user_number, limit_days=limit_days)
return jsonify(data=[row.serialize() for row in results])