From 1c1be05259ee239f1da08d477311005ee7a3eb9d Mon Sep 17 00:00:00 2001 From: Piotr Gawron <piotr.gawron@uni.lu> Date: Tue, 4 Apr 2017 12:16:18 +0200 Subject: [PATCH] api improved to accept pagination params --- smash/web/api_urls.py | 2 +- smash/web/api_views/configuration.py | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/smash/web/api_urls.py b/smash/web/api_urls.py index 9440d245..304f018e 100644 --- a/smash/web/api_urls.py +++ b/smash/web/api_urls.py @@ -25,7 +25,7 @@ urlpatterns = [ url(r'^appointment_types$', appointment_type.appointment_types, name='web.api.appointment_types'), # appointments - url(r'^configuration_items$', configuration.configuration_items, name='web.api.configuration'), + url(r'^configuration_items$', configuration.configuration_items, name='web.api.configuration_items'), # subjects data url(r'^cities$', subject.cities, name='web.api.cities'), diff --git a/smash/web/api_views/configuration.py b/smash/web/api_views/configuration.py index 62d77774..efa7daf0 100644 --- a/smash/web/api_views/configuration.py +++ b/smash/web/api_views/configuration.py @@ -6,14 +6,28 @@ from web.models import ConfigurationItem @login_required def configuration_items(request): + # id of the query from dataTable: https://datatables.net/manual/server-side + draw = int(request.GET.get("draw", "-1")) + + start = int(request.GET.get("start", "0")) + length = int(request.GET.get("length", "10")) + items = ConfigurationItem.objects.all() + count = items.count() + count_filtered = count + + sliced_items = items[start:(start + length)] + data = [] - for configuration_item in items: + for configuration_item in sliced_items: data.append({ "id": configuration_item.id, "name": configuration_item.name, "value": configuration_item.value }) return JsonResponse({ + "draw": draw, + "recordsTotal": count, + "recordsFiltered": count_filtered, "data": data }) -- GitLab