From 24dde260dece3d9fa4a7d2ff41d513239ac4eb85 Mon Sep 17 00:00:00 2001 From: WinnyTroy Date: Wed, 23 Jan 2019 11:39:58 +0300 Subject: [PATCH] Include API docs and required packages --- docs/forms.rst | 27 +++++++++++++++++++ .../api/tests/viewsets/test_xform_viewset.py | 17 ++++++++++-- onadata/apps/api/viewsets/xform_viewset.py | 2 +- requirements/base.pip | 2 +- requirements/dev.pip | 2 +- setup.py | 2 +- 6 files changed, 46 insertions(+), 6 deletions(-) diff --git a/docs/forms.rst b/docs/forms.rst index 9d3c752bf0..c7c497afb7 100644 --- a/docs/forms.rst +++ b/docs/forms.rst @@ -929,6 +929,33 @@ Response "enketo_preview_url": "https://H6Ic6.enketo.org/webform/preview?server=https://api.ona.io/geoffreymuchai/&id=form_id" } +Get single submission url +------------------------- +.. raw:: html + +
+  GET /api/v1/forms/{pk}/enketo?url=single_submit
+ +Request +^^^^^^^ +:: + + curl -X GET https://api.ona.io/api/v1/forms/28058/enketo?url=single_submit + +Response +^^^^^^^^ +:: + + HTTP 200 OK + +Response +^^^^^^^^^ +:: + + { + "single_submit_url": "https://enke.to/single/::abcd" + } + Get form data in xls, csv format. --------------------------------- diff --git a/onadata/apps/api/tests/viewsets/test_xform_viewset.py b/onadata/apps/api/tests/viewsets/test_xform_viewset.py index bb65fef95e..ef748b9a85 100644 --- a/onadata/apps/api/tests/viewsets/test_xform_viewset.py +++ b/onadata/apps/api/tests/viewsets/test_xform_viewset.py @@ -748,9 +748,22 @@ def test_enketo_url(self): response = view(request, pk=formid) url = "https://enketo.ona.io/::YY8M" preview_url = "https://enketo.ona.io/preview/::YY8M" + data = {"enketo_url": url, "enketo_preview_url": preview_url} + self.assertEqual(response.data, data) + + def test_get_single_submit_url(self): + with HTTMock(enketo_preview_url_mock, enketo_mock_with_form_defaults, + enketo_single_submission_mock): + self._publish_xls_form_to_project() + view = XFormViewSet.as_view({ + 'get': 'enketo' + }) + formid = self.xform.pk + get_data = {'url': 'single_submit'} + request = self.factory.get('/', data=get_data, **self.extra) + response = view(request, pk=formid) submit_url = "https://enketo.ona.io/single/::XZqoZ94y" - data = {"enketo_url": url, "enketo_preview_url": preview_url, - "single_url": submit_url} + data = {"single_submit_url": submit_url} self.assertEqual(response.data, data) def test_enketo_url_with_default_form_params(self): diff --git a/onadata/apps/api/viewsets/xform_viewset.py b/onadata/apps/api/viewsets/xform_viewset.py index 7a8b7b3815..c7dbdf77a1 100644 --- a/onadata/apps/api/viewsets/xform_viewset.py +++ b/onadata/apps/api/viewsets/xform_viewset.py @@ -389,7 +389,7 @@ def login(self, request, **kwargs): @action(methods=['GET'], detail=True) def enketo(self, request, **kwargs): """Expose enketo urls.""" - url_type = self.kwargs.get('url') + url_type = self.kwargs.get('url') or request.GET.get('url') self.object = self.get_object() form_url = get_form_url( request, self.object.user.username, settings.ENKETO_PROTOCOL, diff --git a/requirements/base.pip b/requirements/base.pip index a2fac3bfe0..4759f71278 100644 --- a/requirements/base.pip +++ b/requirements/base.pip @@ -110,7 +110,7 @@ pyxform==0.12.2 raven==6.9.0 recaptcha-client==1.0.6 requests==2.20.1 # via datapackage, django-oauth-toolkit, httmock, sphinx, tableschema, tabulator -requests-mock==1.5.2 +requests_mock==1.5.2 rfc3986==1.2.0 # via tableschema rsa==4.0 # via google-auth, oauth2client savreaderwriter==3.4.2 diff --git a/requirements/dev.pip b/requirements/dev.pip index 8ada8f333d..07d91a5f05 100644 --- a/requirements/dev.pip +++ b/requirements/dev.pip @@ -130,7 +130,7 @@ pyxform==0.12.2 raven==6.9.0 recaptcha-client==1.0.6 requests==2.20.1 # via datapackage, django-oauth-toolkit, httmock, sphinx, tableschema, tabulator -requests-mock==1.5.2 +requests_mock==1.5.2 rfc3986==1.2.0 # via tableschema rsa==4.0 # via google-auth, oauth2client savreaderwriter==3.4.2 diff --git a/setup.py b/setup.py index 70f92b7127..733ef9212d 100644 --- a/setup.py +++ b/setup.py @@ -100,7 +100,7 @@ "python-dateutil", "pytz", "requests", - "requests-mock==1.5.2", + "requests-mock", "simplejson", "google-api-python-client", "uwsgi",