onadata.apps.api.viewsets.xform_viewset module

Module contents

The /forms API endpoint.

class onadata.apps.api.viewsets.xform_viewset.XFormViewSet(**kwargs)

Bases: AnonymousUserPublicFormsMixin, CacheControlMixin, AuthenticateHeaderMixin, ETagsMixin, LabelsMixin, DefaultBaseViewset, ModelViewSet

Publish XLSForms, List, Retrieve Published Forms.

bbox(request, *args, **kwargs)

Return the bounding box of all geolocated submissions.

Shape: {"bbox": [min_lng, min_lat, max_lng, max_lat] | null}. null when the form has no geolocated submissions. Used by the frontend tile map to fit the viewport on load without fetching the full submission set. Cached and busted on submission create/edit/delete.

clone(request, *args, **kwargs)

Clone/duplicate an existing form.

create(request, *args, **kwargs)

Support XLSForm publishing endpoint POST /api/v1/forms.

create_async(request, *args, **kwargs)

Temporary Endpoint for Async form creation

csv_import(request, *args, **kwargs)

Endpoint for CSV data imports Calls onadata.libs.utils.csv_import.submit_csv() for POST requests passing the request.FILES.get(‘csv_file’) upload for import and :py:func:onadata.libs.utils.csv_import.get_async_csv_submission_status for GET requests passing job_uuid query param for job progress polling

data_import(request, *args, **kwargs)

Endpoint for CSV and XLS data imports Calls onadata.libs.utils.csv_import.submit_csv() for POST requests passing the request.FILES.get(‘csv_file’) upload for import and :py:func:onadata.libs.utils.csv_import.get_async_csv_submission_status for GET requests passing job_uuid query param for job progress polling and onadata.libs.utils.csv_import.submission_xls_to_csv() for POST request passing the request.FILES.get(‘xls_file’) upload for import if xls_file is provided instead of csv_file

delete_async(request, *args, **kwargs)

Delete asynchronous endpoint /api/v1/forms/{pk}/delete_async.

destroy(request, *args, **kwargs)

Soft deletes a form - DELETE /api/v1/forms/{pk}

enketo(request, **kwargs)

Expose enketo urls.

URLs are persisted in the MetaData table. On the first request the Enketo API is called and the result is stored; subsequent requests are served directly from the database. When form-default query params are present the Enketo API is always called (each combination produces unique URLs that are not persisted).

Query params:
survey_type – "single" for single-submit URL only,

"preview" for preview URL only, omit for all URLs.

show_preview – "true" for preview URL only (legacy;

equivalent to survey_type=preview).

<field>=value – pre-populate form fields (skips persistence).

export_async(request, *args, **kwargs)

Returns the status of an async export.

extra_lookup_fields = None
filter_backends = (<class 'onadata.libs.filters.EnketoAnonDjangoObjectPermissionFilter'>, <class 'onadata.libs.filters.TagFilter'>, <class 'onadata.libs.filters.XFormOwnerFilter'>, <class 'django_filters.rest_framework.backends.DjangoFilterBackend'>, <class 'onadata.libs.filters.ActiveXFormOrganizationFilter'>)
filterset_fields = ('instances_with_osm',)
form(request, **kwargs)

Returns the XLSForm in any of JSON, XML, XLS(X), CSV formats.

get_serializer_class()

Return the class to use for the serializer. Defaults to using self.serializer_class.

You may want to override this if you need to provide different serializations depending on the incoming request.

(Eg. admins get full serialization, others get basic serialization)

list(request, *args, **kwargs)

List forms API endpoint GET /api/v1/forms.

login(request, **kwargs)

Authenticate and redirect to URL in return query parameter.

lookup_field = 'pk'
pagination_class

alias of StandardPageNumberPagination

partial_update(request, *args, **kwargs)

Partial update of a form’s properties.

permission_classes = [<class 'onadata.apps.api.permissions.XFormPermissions'>]
public_forms_endpoint = 'public'
renderer_classes = [<class 'rest_framework.renderers.JSONRenderer'>, <class 'rest_framework_jsonp.renderers.JSONPRenderer'>, <class 'rest_framework_csv.renderers.CSVRenderer'>, <class 'onadata.libs.renderers.renderers.XLSRenderer'>, <class 'onadata.libs.renderers.renderers.XLSXRenderer'>, <class 'onadata.libs.renderers.renderers.CSVRenderer'>, <class 'onadata.libs.renderers.renderers.CSVZIPRenderer'>, <class 'onadata.libs.renderers.renderers.SAVZIPRenderer'>, <class 'onadata.libs.renderers.renderers.SurveyRenderer'>, <class 'onadata.libs.renderers.renderers.OSMExportRenderer'>, <class 'onadata.libs.renderers.renderers.ZipRenderer'>, <class 'onadata.libs.renderers.renderers.GoogleSheetsRenderer'>]
retrieve(request, *args, **kwargs)

Returns a forms properties.

serializer_class

alias of XFormSerializer

share(request, *args, **kwargs)

Perform form sharing.

survey_preview(request, **kwargs)

Handle survey preview XLSForms.

updatable_fields = {'description', 'downloadable', 'require_auth', 'shared', 'shared_data', 'title'}
versions(request, *args, **kwargs)

Returns all form versions.

onadata.apps.api.viewsets.xform_viewset.get_survey_dict(csv_name)

Returns the a CSV XLSForm file into a python object.

onadata.apps.api.viewsets.xform_viewset.get_survey_xml(csv_name)

Creates and returns the XForm XML from a CSV XLSform.

onadata.apps.api.viewsets.xform_viewset.parse_webform_return_url(return_url, request)

Given a webform url and request containing authentication information extract authentication data encoded in the url and validate using either this data or data in the request. Construct a proper return URL, which has stripped the authentication data, to return the user.

onadata.apps.api.viewsets.xform_viewset.result_has_error(result)

Returns True if the result is a dict and has a type.

onadata.apps.api.viewsets.xform_viewset.upload_to_survey_draft(filename, username)

Return the filename in the username survey-drafts directory.

onadata.apps.api.viewsets.xform_viewset.value_for_type(form, field, value)

Returns a boolean value for the field of type BooleanField otherwise returns the same value back.