From c3a15f9f3005da2b8558bb33516be9f02cbd1291 Mon Sep 17 00:00:00 2001 From: Nicholas Staples Date: Wed, 16 Mar 2016 16:47:18 +0000 Subject: [PATCH 1/2] Fix pagination bug and swapped file name with original file name. --- app/notifications/rest.py | 24 ++++++++++++++---------- app/schemas.py | 4 ++-- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/app/notifications/rest.py b/app/notifications/rest.py index 594ba5613..1c59df0d8 100644 --- a/app/notifications/rest.py +++ b/app/notifications/rest.py @@ -193,13 +193,12 @@ def get_all_notifications(): return jsonify(result="error", message="Invalid page"), 400 all_notifications = notifications_dao.get_notifications_for_service(api_user['client'], page) - return jsonify( notifications=notification_status_schema.dump(all_notifications.items, many=True).data, links=pagination_links( all_notifications, '.get_all_notifications', - request.args + **request.args.to_dict() ) ), 200 @@ -213,13 +212,14 @@ def get_all_notifications_for_service(service_id): return jsonify(result="error", message="Invalid page"), 400 all_notifications = notifications_dao.get_notifications_for_service(service_id, page) - + kwargs = request.args.to_dict() + kwargs['service_id'] = service_id return jsonify( notifications=notification_status_schema.dump(all_notifications.items, many=True).data, links=pagination_links( all_notifications, '.get_all_notifications_for_service', - request.args + **kwargs ) ), 200 @@ -233,13 +233,15 @@ def get_all_notifications_for_service_job(service_id, job_id): return jsonify(result="error", message="Invalid page"), 400 all_notifications = notifications_dao.get_notifications_for_job(service_id, job_id, page) - + kwargs = request.args.to_dict() + kwargs['service_id'] = service_id + kwargs['job_id'] = job_id return jsonify( notifications=notification_status_schema.dump(all_notifications.items, many=True).data, links=pagination_links( all_notifications, '.get_all_notifications_for_service_job', - request.args + **kwargs ) ), 200 @@ -255,13 +257,15 @@ def get_page_from_request(): return 1 -def pagination_links(pagination, endpoint, args): +def pagination_links(pagination, endpoint, **kwargs): + if 'page' in kwargs: + kwargs.pop('page', None) links = dict() if pagination.has_prev: - links['prev'] = url_for(endpoint, **dict(list(args.items()) + [('page', pagination.prev_num)])) + links['prev'] = url_for(endpoint, page=pagination.prev_num, **kwargs) if pagination.has_next: - links['next'] = url_for(endpoint, **dict(list(args.items()) + [('page', pagination.next_num)])) - links['last'] = url_for(endpoint, **dict(list(args.items()) + [('page', pagination.pages)])) + links['next'] = url_for(endpoint, page=pagination.next_num, **kwargs) + links['last'] = url_for(endpoint, page=pagination.pages, **kwargs) return links diff --git a/app/schemas.py b/app/schemas.py index 932fd1990..575b23ea9 100644 --- a/app/schemas.py +++ b/app/schemas.py @@ -171,8 +171,8 @@ class SmsAdminNotificationSchema(SmsNotificationSchema): class NotificationStatusSchema(BaseSchema): - template = fields.Nested(TemplateSchema, only=["id", "name"], dump_only=True) - job = fields.Nested(JobSchema, only=["id", "file_name"], dump_only=True) + template = fields.Nested(TemplateSchema, only=["id", "name", "template_type"], dump_only=True) + job = fields.Nested(JobSchema, only=["id", "original_file_name"], dump_only=True) class Meta: model = models.Notification From f41d01780a55bb9d2cf793055e4dbd15067f1b94 Mon Sep 17 00:00:00 2001 From: Nicholas Staples Date: Wed, 16 Mar 2016 17:01:58 +0000 Subject: [PATCH 2/2] whoops test fixes. --- tests/app/notifications/test_rest.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tests/app/notifications/test_rest.py b/tests/app/notifications/test_rest.py index da5cc1dc7..9bc9ada62 100644 --- a/tests/app/notifications/test_rest.py +++ b/tests/app/notifications/test_rest.py @@ -27,10 +27,11 @@ def test_get_notification_by_id(notify_api, sample_notification): assert notification['status'] == 'sent' assert notification['template'] == { 'id': sample_notification.template.id, - 'name': sample_notification.template.name} + 'name': sample_notification.template.name, + 'template_type': sample_notification.template.template_type} assert notification['job'] == { 'id': str(sample_notification.job.id), - 'file_name': sample_notification.job.file_name + 'original_file_name': sample_notification.job.original_file_name } assert notification['to'] == '+447700900855' assert notification['service'] == str(sample_notification.service_id) @@ -72,10 +73,11 @@ def test_get_all_notifications(notify_api, sample_notification): assert notifications['notifications'][0]['status'] == 'sent' assert notifications['notifications'][0]['template'] == { 'id': sample_notification.template.id, - 'name': sample_notification.template.name} + 'name': sample_notification.template.name, + 'template_type': sample_notification.template.template_type} assert notifications['notifications'][0]['job'] == { 'id': str(sample_notification.job.id), - 'file_name': sample_notification.job.file_name + 'original_file_name': sample_notification.job.original_file_name } assert notifications['notifications'][0]['to'] == '+447700900855' assert notifications['notifications'][0]['service'] == str(sample_notification.service_id)