onadata.apps.api.viewsets package

Subpackages

Submodules

onadata.apps.api.viewsets.attachment_viewset module

The /api/v1/attachments API implementation.

class onadata.apps.api.viewsets.attachment_viewset.AttachmentViewSet(**kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, ReadOnlyModelViewSet

GET, List attachments implementation.

content_negotiation_class

alias of MediaFileContentNegotiation

count(request, *args, **kwargs)

Returns the number of attachments the user has access to.

filter_backends = (<class 'onadata.libs.filters.AttachmentFilter'>, <class 'onadata.libs.filters.AttachmentTypeFilter'>)
list(request, *args, **kwargs)
lookup_field = 'pk'
pagination_class

alias of StandardPageNumberPagination

permission_classes = (<class 'onadata.apps.api.permissions.AttachmentObjectPermissions'>,)
renderer_classes = (<class 'rest_framework.renderers.JSONRenderer'>, <class 'rest_framework.renderers.BrowsableAPIRenderer'>, <class 'onadata.libs.renderers.renderers.MediaFileRenderer'>)
retrieve(request, *args, **kwargs)
serializer_class

alias of AttachmentSerializer

onadata.apps.api.viewsets.attachment_viewset.get_attachment_data(attachment, suffix)

Returns attachment file contents.

onadata.apps.api.viewsets.briefcase_viewset module

The /briefcase API implementation.

class onadata.apps.api.viewsets.briefcase_viewset.BriefcaseViewset(**kwargs)

Bases: CreateModelMixin, RetrieveModelMixin, ListModelMixin, GenericViewSet

Implements the [Briefcase Aggregate API]( https://code.google.com/p/opendatakit/wiki/BriefcaseAggregateAPI).

authentication_classes = (<class 'onadata.libs.authentication.DigestAuthentication'>, <class 'rest_framework.authentication.TokenAuthentication'>)
create(request, *args, **kwargs)

Accepts an XForm XML and publishes it as a form.

filter_backends = (<class 'onadata.libs.filters.AnonDjangoObjectPermissionFilter'>,)
filter_queryset(queryset)

Filters an XForm submission instances using ODK Aggregate query parameters.

get_object(queryset=None)

Returns an Instance submission object for the given UUID.

list(request, *args, **kwargs)

Returns a list of submissions with reference submission download.

manifest(request, *args, **kwargs)

Returns list of media content.

media(request, *args, **kwargs)

Returns a single media content.

permission_classes = (<class 'rest_framework.permissions.IsAuthenticated'>, <class 'onadata.apps.api.permissions.ViewDjangoObjectPermissions'>)
renderer_classes = (<class 'onadata.libs.renderers.renderers.TemplateXMLRenderer'>, <class 'rest_framework.renderers.BrowsableAPIRenderer'>)
retrieve(request, *args, **kwargs)

Returns a single submission XML for download.

serializer_class

alias of XFormListSerializer

template_name = 'openrosa_response.xml'

onadata.apps.api.viewsets.charts_viewset module

/charts api endpoint for chart data and chart widgets

class onadata.apps.api.viewsets.charts_viewset.ChartBrowsableAPIRenderer

Bases: BrowsableAPIRenderer

View chart for specific fields in a form or dataset.

get_content(renderer, data, accepted_media_type, renderer_context)

Get the content as if it had been rendered by the default non-documenting renderer.

get_default_renderer(view)

Return an instance of the first valid renderer. (Don’t use another documenting renderer.)

class onadata.apps.api.viewsets.charts_viewset.ChartsViewSet(**kwargs)

Bases: AnonymousUserPublicFormsMixin, AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, ReadOnlyModelViewSet

ChartsViewSet: /charts api endpoint for chart data and chart widgets

filter_backends = (<class 'onadata.libs.filters.AnonDjangoObjectPermissionFilter'>, <class 'onadata.libs.filters.ActiveXFormOrganizationFilter'>)
lookup_field = 'pk'
permission_classes = [<class 'onadata.apps.api.permissions.XFormPermissions'>]
renderer_classes = (<class 'onadata.libs.renderers.renderers.DecimalJSONRenderer'>, <class 'onadata.apps.api.viewsets.charts_viewset.ChartBrowsableAPIRenderer'>, <class 'rest_framework.renderers.TemplateHTMLRenderer'>)
retrieve(request, *args, **kwargs)
serializer_class

alias of ChartSerializer

onadata.apps.api.viewsets.charts_viewset.get_form_field_chart_url(url, field)

Append ‘field_name’ to a given url

onadata.apps.api.viewsets.connect_viewset module

The /api/v1/user API implementation

User authentication API support to access API tokens.

class onadata.apps.api.viewsets.connect_viewset.ConnectViewSet(**kwargs)

Bases: CreateModelMixin, AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, ObjectLookupMixin, GenericViewSet

This endpoint allows you retrieve the authenticated user’s profile info.

create(request, *args, **kwargs)
expire(request, *args, **kwargs)

Implements the /expire endpoint

Allows a user to expire a TempToken.

list(request, *args, **kwargs)

Implements the List endpoint - returns authentication tokens for current user.

lookup_field = 'user'
odk_token(request, *args, **kwargs)

Implements the /odk_token endpoint

Allows a user to get or create or expire an ODKToken for use with ODK Collect.

permission_classes = (<class 'onadata.apps.api.permissions.ConnectViewsetPermissions'>,)
regenerate_auth_token(request, *args, **kwargs)

Implements the /regenerate_auth_token endpoint

Allows a user to expire and create a new API Token.

serializer_class

alias of UserProfileWithTokenSerializer

starred(request, *args, **kwargs)

Return projects starred for this user.

onadata.apps.api.viewsets.connect_viewset.user_profile_w_token_response(request, status_code)

Returns authenticated user profile

onadata.apps.api.viewsets.data_viewset module

The /data API endpoint.

class onadata.apps.api.viewsets.data_viewset.AuthenticatedDataViewSet(**kwargs)

Bases: DataViewSet

Authenticated requests only.

permission_classes = (<class 'onadata.apps.api.permissions.ConnectViewsetPermissions'>,)
class onadata.apps.api.viewsets.data_viewset.DataViewSet(**kwargs)

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

This endpoint provides access to submitted data.

data_count = None
destroy(request, *args, **kwargs)

Deletes submissions data.

enketo(request, *args, **kwargs)

Data Enketo URLs endpoint

extra_lookup_fields = None
filter_backends = (<class 'onadata.libs.filters.DataAnonDjangoObjectPermissionFilter'>, <class 'onadata.libs.filters.XFormOwnerFilter'>, <class 'onadata.libs.filters.DataFilter'>, <class 'onadata.libs.filters.ActiveXFormOrganizationFilter'>)
filter_queryset(queryset, view=None)

Returns and filters queryset based on context and query params.

get_object(queryset=None)

Returns the appropriate object based on context.

get_serializer_class()

Returns appropriate serializer class based on context.

history(request, *args, **kwargs)

Return submission history.

labels(request, *args, **kwargs)

Data labels API endpoint.

list(request, *args, **kwargs)

Returns list of data API endpoints for different forms.

lookup_field = 'pk'
lookup_fields = ('pk', 'dataid')
paginate_queryset(queryset)

Returns a paginated queryset.

pagination_class

alias of CountOverridablePageNumberPagination

permission_classes = (<class 'onadata.apps.api.permissions.XFormPermissions'>,)
public_data_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.InstanceXMLRenderer'>, <class 'onadata.libs.renderers.renderers.SurveyRenderer'>, <class 'onadata.libs.renderers.renderers.GeoJsonRenderer'>, <class 'onadata.libs.renderers.renderers.KMLRenderer'>, <class 'onadata.libs.renderers.renderers.OSMRenderer'>, <class 'onadata.libs.renderers.renderers.FLOIPRenderer'>]
retrieve(request, *args, **kwargs)

Returns API data for the targeted object.

serializer_class

alias of DataSerializer

set_object_list(query, fields, sort, start, limit, is_public_request, is_encrypted, decryption_status)

Set the submission instances queryset.

onadata.apps.api.viewsets.data_viewset.delete_instance(instance, user)

Function that calls Instance.set_deleted and catches any exception that may occur.

Parameters:
  • instance

  • user

Returns:

onadata.apps.api.viewsets.data_viewset.get_data_and_form(kwargs)

Checks if the dataid in kwargs is a valid integer.

onadata.apps.api.viewsets.dataview_viewset module

The /dataview API endpoint implementation.

class onadata.apps.api.viewsets.dataview_viewset.DataViewViewSet(**kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, DefaultBaseViewset, ModelViewSet

A simple ViewSet for viewing and editing DataViews.

bbox(request, *args, **kwargs)

Return the bounding box of the dataview’s geolocated submissions.

Applies the dataview’s query filter to match the rows form_tiles() would serve. Shape: {"bbox": [min_lng, min_lat, max_lng, max_lat] | null}. null when the filtered set has no geolocated rows. Cached and busted on submission create/edit/delete for the underlying xform.

charts(request, *args, **kwargs)

Returns the charts data for the given dataview.

data(request, format='json', **kwargs)

Retrieve the data from the xform using this dataview

destroy(request, *args, **kwargs)

Soft deletes the the dataview.

export_async(request, *args, **kwargs)

Initiate’s exports asynchronously.

form(request, format='json', **kwargs)

Returns the form as either json, xml or XLS linked the dataview.

form_details(request, *args, **kwargs)

Returns the dataview’s form API data.

get_serializer_class()

Get a serializer class based on request format

get_serializer_context()

Extra context provided to the serializer class.

list(request, *args, **kwargs)

List endpoint for Filtered datasets

lookup_field = 'pk'
pagination_class

alias of StandardPageNumberPagination

permission_classes = [<class 'onadata.apps.api.permissions.DataViewViewsetPermissions'>]
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.ZipRenderer'>, <class 'onadata.libs.renderers.renderers.GeoJsonRenderer'>]
serializer_class

alias of DataViewSerializer

xlsx_export(request, *args, **kwargs)

Returns the data views XLS export files.

onadata.apps.api.viewsets.dataview_viewset.dataview_post_delete_callback(sender, instance, **kwargs)

Clear project cache post dataview delete.

onadata.apps.api.viewsets.dataview_viewset.dataview_post_save_callback(sender, instance=None, created=False, **kwargs)

Clear project cache post dataview save.

onadata.apps.api.viewsets.dataview_viewset.get_dataview_instances(dataview)

Get all instances that belong to ths dataview

onadata.apps.api.viewsets.dataview_viewset.get_form_field_chart_url(url, field)

Returns a chart’s url with the field_name field parameter appended to it.

onadata.apps.api.viewsets.entity_list_viewset module

ViewSet for EntityList actions

class onadata.apps.api.viewsets.entity_list_viewset.EntityListViewSet(**kwargs)

Bases: CacheControlMixin, ETagsMixin, DefaultBaseViewset, GenericViewSet, ListModelMixin, CreateModelMixin, RetrieveModelMixin, DestroyModelMixin

create(request, *args, **kwargs)

Override create method

download(request, *args, **kwargs)

Provides download action for dataset

entities(request, *args, **kwargs)

list, create, retrieve, update, destroy actions for Entities

entities_search_fields = ['uuid', 'json']
filter_backends = (<class 'onadata.libs.filters.AnonUserEntityListFilter'>, <class 'onadata.libs.filters.EntityListProjectFilter'>)
get_serializer_class()

Override get_serializer_class method

get_serializer_context()

Override get_serializer_context method

import_entities(request, *args, **kwargs)

Imports entities from a CSV file

pagination_class

alias of StandardPageNumberPagination

perform_destroy(instance)

Override perform_detroy method

permission_classes = (<class 'onadata.apps.api.permissions.EntityListPermissions'>,)
properties(request, *args, **kwargs)

Provides properties action for dataset.

retrieve(request, *args, **kwargs)

Override retrieve method

serializer_class

alias of EntityListSerializer

onadata.apps.api.viewsets.export_viewset module

The /api/v1/exports API implementation.

List, Create, Update, Destroy Export model objects.

class onadata.apps.api.viewsets.export_viewset.ExportViewSet(**kwargs)

Bases: DestroyModelMixin, ReadOnlyModelViewSet

The /api/v1/exports API implementation.

List, Create, Update, Destroy Export model objects.

authentication_classes = [<class 'onadata.libs.authentication.DigestAuthentication'>, <class 'onadata.libs.authentication.TempTokenAuthentication'>, <class 'onadata.libs.authentication.EnketoTokenAuthentication'>, <class 'oauth2_provider.contrib.rest_framework.authentication.OAuth2Authentication'>, <class 'rest_framework.authentication.SessionAuthentication'>, <class 'rest_framework.authentication.TokenAuthentication'>, <class 'onadata.libs.authentication.TempTokenURLParameterAuthentication'>]
filter_backends = (<class 'onadata.libs.filters.ExportFilter'>,)
permission_classes = [<class 'onadata.apps.api.permissions.ExportDjangoObjectPermission'>]
renderer_classes = [<class 'rest_framework.renderers.JSONRenderer'>, <class 'rest_framework_jsonp.renderers.JSONPRenderer'>, <class 'rest_framework_csv.renderers.CSVRenderer'>, <class 'onadata.libs.renderers.renderers.CSVRenderer'>, <class 'onadata.libs.renderers.renderers.CSVZIPRenderer'>, <class 'onadata.libs.renderers.renderers.KMLRenderer'>, <class 'onadata.libs.renderers.renderers.OSMExportRenderer'>, <class 'onadata.libs.renderers.renderers.SAVZIPRenderer'>, <class 'onadata.libs.renderers.renderers.XLSRenderer'>, <class 'onadata.libs.renderers.renderers.XLSXRenderer'>, <class 'onadata.libs.renderers.renderers.ZipRenderer'>]
retrieve(request, *args, **kwargs)
serializer_class

alias of ExportSerializer

onadata.apps.api.viewsets.floip_viewset module

FloipViewSet: API endpoint for /api/floip

class onadata.apps.api.viewsets.floip_viewset.FloipViewSet(**kwargs)

Bases: CreateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin, UpdateModelMixin, GenericViewSet

FloipViewSet: create, list, retrieve, destroy

filter_backends = (<class 'onadata.libs.filters.AnonDjangoObjectPermissionFilter'>, <class 'onadata.libs.filters.PublicDatasetsFilter'>, <class 'onadata.libs.filters.ActiveXFormOrganizationFilter'>)
get_object()

Returns the object the view is displaying.

You may want to override this if you need to provide non-standard queryset lookups. Eg if objects are referenced using multiple keyword arguments in the url conf.

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)

get_success_headers(data)
lookup_field = 'uuid'
pagination_class

alias of PageNumberPagination

parser_classes = (<class 'rest_framework_json_api.parsers.JSONParser'>,)
permission_classes = [<class 'onadata.apps.api.permissions.XFormPermissions'>]
renderer_classes = (<class 'onadata.apps.api.viewsets.floip_viewset.FlowResultsJSONRenderer'>,)
responses(request, uuid=None)

Flow Results Responses endpoint.

serializer_class

alias of FloipSerializer

class onadata.apps.api.viewsets.floip_viewset.FlowResultsJSONRenderer

Bases: JSONRenderer

Render JSON API format with uuid.

classmethod build_json_resource_obj(fields, resource, resource_instance, resource_name, serializer, force_type_resolution=False)

Build a JSON resource object using the id as it appears in the resource.

onadata.apps.api.viewsets.media_viewset module

The /api/v1/media API implementation.

List, Create, Update, Delete Attachment objects.

class onadata.apps.api.viewsets.media_viewset.MediaViewSet(**kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, DefaultBaseViewset, ReadOnlyModelViewSet

A view to redirect to actual attachments url

filter_backends = (<class 'onadata.libs.filters.AttachmentFilter'>, <class 'onadata.libs.filters.AttachmentTypeFilter'>)
list(request, *args, **kwargs)

Action NOT IMPLEMENTED. It is only needed because of the automatic URL routing in /api/v1/

lookup_field = 'pk'
permission_classes = (<class 'onadata.apps.api.permissions.AttachmentObjectPermissions'>,)
retrieve(request, *args, **kwargs)

Redirect to final attachment url

param pk: the attachment id query param filename: the filename of the attachment is required and must match query param suffix: (optional) - specify small | medium | large to

return resized images.

return HttpResponseRedirect: redirects to final image url

onadata.apps.api.viewsets.merged_xform_viewset module

MergedXFormViewSet: API endpoint for /api/merged-datasets

class onadata.apps.api.viewsets.merged_xform_viewset.MergedXFormViewSet(**kwargs)

Bases: CreateModelMixin, DestroyModelMixin, ListModelMixin, RetrieveModelMixin, GenericViewSet

Merged XForms viewset: create, list, retrieve, destroy

bbox(request, *args, **kwargs)

Return the bounding box across all xforms in this merged dataset.

Shape: {"bbox": [min_lng, min_lat, max_lng, max_lat] | null}. Matches the xform set form_tiles() serves when called with merged_dataset_id. Cached and busted whenever a submission to any member xform is created, edited, or deleted.

data(request, *args, **kwargs)

Return data from the merged xforms

filter_backends = (<class 'onadata.libs.filters.AnonDjangoObjectPermissionFilter'>, <class 'onadata.libs.filters.PublicDatasetsFilter'>, <class 'onadata.libs.filters.ActiveXFormOrganizationFilter'>)
form(*args, **kwargs)

Return XForm JSON, XLS or XML representing

get_serializer_class()

Get appropriate serializer class

list(request, *args, **kwargs)

List endpoint for Merged XForms

pagination_class

alias of StandardPageNumberPagination

permission_classes = [<class 'onadata.apps.api.permissions.XFormPermissions'>]
renderer_classes = [<class 'rest_framework.renderers.JSONRenderer'>, <class 'rest_framework_jsonp.renderers.JSONPRenderer'>, <class 'rest_framework_csv.renderers.CSVRenderer'>, <class 'onadata.libs.renderers.renderers.StaticXMLRenderer'>, <class 'onadata.libs.renderers.renderers.GeoJsonRenderer'>]
serializer_class

alias of MergedXFormSerializer

onadata.apps.api.viewsets.messaging_stats_viewset module

API Endpoint implementation for Messaging statistics

class onadata.apps.api.viewsets.messaging_stats_viewset.MessagingStatsViewSet(**kwargs)

Bases: ListModelMixin, GenericViewSet

Provides a count of each unique messaging event grouped by either day, month or year.

The endpoint accepts the following query parameters:

  • group_by: field to group events by day, month or year

  • target_type: field to be used to determine the target

    object type i.e xform, project

  • target_id: field used to identify the target object

  • verb: field used to filter returned responses by a specific verb

  • timestamp: used to filter by actions that occurred in a specific time. This

    query parameter support date time lookups i.e timestamp__day, timestamp__year.

Example:

GET /api/v1/stats/messaging?target_id=1&target_type=xform&group_by=day

Response: ```json [

{

“submission_edited”: 10, “submission_created”: 5, “submission_deleted”: 15, “group”: “2023-02-17”

}

]

SUPPORTED_GROUP_BY = {'day': 'YYYY-MM-DD', 'month': 'MM-YYYY', 'year': 'YYYY'}
filter_backends = [<class 'onadata.apps.messaging.filters.TargetTypeFilterBackend'>, <class 'onadata.apps.messaging.filters.TargetIDFilterBackend'>, <class 'django_filters.rest_framework.backends.DjangoFilterBackend'>]
filterset_class

alias of ActionFilterSet

list(request, *args, **kwargs)
permission_classes = [<class 'rest_framework.permissions.IsAuthenticated'>, <class 'onadata.apps.messaging.permissions.TargetObjectPermissions'>]

onadata.apps.api.viewsets.metadata_viewset module

The /api/v1/metadata API implementation.

List, Create, Update, Delete MetaData objects.

class onadata.apps.api.viewsets.metadata_viewset.MetaDataViewSet(**kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, DefaultBaseViewset, ModelViewSet

List, Create, Update, Delete MetaData objects.

content_negotiation_class

alias of MediaFileContentNegotiation

filter_backends = (<class 'onadata.libs.filters.MetaDataFilter'>,)
permission_classes = (<class 'onadata.apps.api.permissions.MetaDataObjectPermissions'>,)
renderer_classes = (<class 'rest_framework.renderers.JSONRenderer'>, <class 'rest_framework.renderers.BrowsableAPIRenderer'>, <class 'onadata.libs.renderers.renderers.MediaFileRenderer'>)
retrieve(request, *args, **kwargs)
serializer_class

alias of MetaDataSerializer

onadata.apps.api.viewsets.note_viewset module

The /api/v1/notes API implementation.

List, Create, Update, Delete Note objects.

class onadata.apps.api.viewsets.note_viewset.NoteViewSet(**kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, DefaultBaseViewset, ModelViewSet

The /api/v1/notes API implementation.

List, Create, Update, Delete Note objects.

destroy(request, *args, **kwargs)
filter_backends = (<class 'onadata.libs.filters.NoteFilter'>, <class 'rest_framework_guardian.filters.ObjectPermissionsFilter'>)
get_object()

Returns the object the view is displaying.

You may want to override this if you need to provide non-standard queryset lookups. Eg if objects are referenced using multiple keyword arguments in the url conf.

permission_classes = [<class 'onadata.apps.api.permissions.ViewDjangoObjectPermissions'>, <class 'rest_framework.permissions.IsAuthenticated'>]
retrieve(request, *args, **kwargs)
serializer_class

alias of NoteSerializer

onadata.apps.api.viewsets.open_data_viewset module

The /api/v1/open-data implementation.

class onadata.apps.api.viewsets.open_data_viewset.OpenDataViewSet(**kwargs)

Bases: ETagsMixin, CacheControlMixin, DefaultBaseViewset, ModelViewSet

The /api/v1/open-data API endpoint.

MAX_INSTANCES_PER_REQUEST = 1000
data(request, **kwargs)

Streams submission data response matching uuid in the request.

destroy(request, *args, **kwargs)

Deletes an OpenData object.

flatten_xform_columns(json_of_columns_fields)

Flattens a json of column fields and the result is set to a class variable.

flattened_dict = {}
get_queryset()

Scope capabilities by action and XForm authorization.

get_serializer_class()

Return UUIDs only from a successful authorized create.

get_streaming_response(data)

Get a StreamingHttpResponse response object

get_tableau_column_headers()

Retrieve columns headers that are valid in tableau.

get_tableau_type(xform_type)

Returns a tableau-supported type based on a xform type.

lookup_field = 'uuid'
pagination_class

alias of StandardPageNumberPagination

permission_classes = (<class 'onadata.apps.api.permissions.OpenDataViewSetPermissions'>,)
schema(request, **kwargs)

Tableau schema - headers and table alias.

serializer_class

alias of OpenDataSerializer

uuid(request, *args, **kwargs)

Respond with the OpenData uuid.

onadata.apps.api.viewsets.open_data_viewset.process_tableau_data(data, xform)

Streamlines the row header fields with the column header fields for the same form. Handles Flattening repeat data for tableau

onadata.apps.api.viewsets.open_data_viewset.replace_special_characters_with_underscores(data)

Replaces special characters with underscores.

onadata.apps.api.viewsets.organization_profile_viewset module

The /api/v1/orgs API implementation

List, Retrieve, Update, Create/Register Organizations.

class onadata.apps.api.viewsets.organization_profile_viewset.OrganizationProfileViewSet(*args, **kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, ObjectLookupMixin, RevisionMixin, DefaultBaseViewset, ModelViewSet

List, Retrieve, Update, Create/Register Organizations.

create(request, *args, **kwargs)

Create and cache organization

destroy(request, *args, **kwargs)

Clear cache and destroy organization

filter_backends = (<class 'onadata.libs.filters.OrganizationPermissionFilter'>, <class 'onadata.libs.filters.OrganizationsSharedWithUserFilter'>)
get_serializer_class()

Override get_serializer_class method

lookup_field = 'user'
members(request, *args, **kwargs)

Return organization members.

permission_classes = [<class 'onadata.apps.api.permissions.OrganizationProfilePermissions'>]
retrieve(request, *args, **kwargs)

Get organization from cache or db

rotate_key(request, *args, **kwargs)

Manually rotate KMS key.

serializer_class

alias of OrganizationSerializer

update(request, *args, **kwargs)

Update org in cache and db

onadata.apps.api.viewsets.organization_profile_viewset.serializer_from_settings()

Return the OrganizationSerializer either from settings or the default.

onadata.apps.api.viewsets.osm_viewset module

The osm API endpoint.

class onadata.apps.api.viewsets.osm_viewset.OsmViewSet(**kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, DefaultBaseViewset, ReadOnlyModelViewSet

This endpoint provides public access to OSM submitted data in OSM format. No authentication is required. Where:

  • pk - the form unique identifier

  • dataid - submission data unique identifier

  • owner - username of the owner(user/organization) of the data point

## GET JSON List of data end points

Lists the data endpoints accessible to requesting user, for anonymous access a list of public data endpoints is returned.

<pre class=”prettyprint”> <b>GET</b> /api/v1/osm </pre>

> Example > > curl -X GET https://ona.io/api/v1/osm

## OSM

The .osm file format concatenates all the files for a form or individual

submission. When the .json endpoint is accessed, the individual osm files are listed on the _attachments key.

### OSM endpoint for all osm files uploaded to a form concatenated.

<pre class=”prettyprint”> <b>GET</b> /api/v1/osm/<code>{pk}</code>.osm </pre>

> Example > > curl -X GET https://ona.io/api/v1/osm/28058.osm

### OSM endpoint with all osm files for a specific submission concatenated.

<pre class=”prettyprint”> <b>GET</b> /api/v1/osm/<code>{pk}</code>/<code>{data_id}</code>.osm </pre>

> Example > > curl -X GET https://ona.io/api/v1/osm/28058/20.osm

extra_lookup_fields = None
filter_queryset(queryset)

Filters the queryset using the pk when used.

get_object()

Returns the Instance object using the pk and dataid lookup values.

get_serializer_class()

Returns the OSMSiteMapSerializer class when list API is invoked.

list(request, *args, **kwargs)

Returns a list of URLs to the individual XForm OSM data.

lookup_field = 'pk'
lookup_fields = ('pk', 'dataid')
permission_classes = (<class 'rest_framework.permissions.AllowAny'>,)
public_data_endpoint = 'public'
renderer_classes = [<class 'onadata.libs.renderers.renderers.OSMRenderer'>, <class 'rest_framework.renderers.JSONRenderer'>]
retrieve(request, *args, **kwargs)

Returns a single Instance JSON object API response

serializer_class

alias of OSMSerializer

onadata.apps.api.viewsets.project_viewset module

The /projects API endpoint implementation.

class onadata.apps.api.viewsets.project_viewset.ProjectViewSet(*args, **kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, LabelsMixin, ProfilerMixin, RevisionMixin, DefaultBaseViewset, ModelViewSet

List, Retrieve, Update, Create Project and Project Forms.

api_version = 'v1'
destroy(request, *args, **kwargs)

Soft deletes a project

extra_lookup_fields = None
filter_backends = (<class 'onadata.libs.filters.AnonUserProjectFilter'>, <class 'onadata.libs.filters.ProjectOwnerFilter'>, <class 'onadata.libs.filters.TagFilter'>, <class 'onadata.libs.filters.ActiveProjectOrganizationFilter'>)
forms(request, **kwargs)

Add a form to a project or list forms for the project.

The request key xls_file holds the XLSForm file object.

get_queryset()

Use the active-organization prefetched queryset.

get_serializer_class()

Override `get_serializer_class.

invitations(request, *args, **kwargs)

List, Create. Update project invitations

lookup_field = 'pk'
pagination_class

alias of StandardPageNumberPagination

permission_classes = [<class 'onadata.apps.api.permissions.ProjectPermissions'>]
resend_invitation(request, *args, **kwargs)

Resend a project invitation object

retrieve(request, *args, **kwargs)

Retrieve single project

revoke_invitation(request, *args, **kwargs)

Revoke a project invitation object

serializer_class

alias of ProjectSerializer

share(request, *args, **kwargs)

Allow sharing of a project to a user.

star(request, *args, **kwargs)

Allows to add a user that stars a project.

update(request, *args, **kwargs)

Updates project properties and set’s cache with the updated records.

onadata.apps.api.viewsets.stats_viewset module

The /api/v1/stats API endpoint implementaion.

class onadata.apps.api.viewsets.stats_viewset.StatsViewSet(**kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, AnonymousUserPublicFormsMixin, DefaultBaseViewset, ReadOnlyModelViewSet

The /api/v1/stats API endpoint implementaion.

filter_backends = (<class 'onadata.libs.filters.AnonDjangoObjectPermissionFilter'>, <class 'onadata.libs.filters.ActiveXFormOrganizationFilter'>)
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)

lookup_field = 'pk'
permission_classes = [<class 'onadata.apps.api.permissions.XFormPermissions'>]
serializer_class

alias of StatsSerializer

onadata.apps.api.viewsets.submission_review_viewset module

Submission Review Viewset Module

class onadata.apps.api.viewsets.submission_review_viewset.SubmissionReviewViewSet(**kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, BulkCreateMixin, DefaultBaseViewset, ModelViewSet

Submission Review ViewSet class

create(request, *args, **kwargs)

Custom create method. Handle bulk create

destroy(request, *args, **kwargs)

Custom destroy method

filter_backends = (<class 'django_filters.rest_framework.backends.DjangoFilterBackend'>,)
filterset_fields = ('instance', 'created_by', 'status')
permission_classes = [<class 'onadata.apps.api.permissions.SubmissionReviewPermissions'>]
serializer_class

alias of SubmissionReviewSerializer

onadata.apps.api.viewsets.submissionstats_viewset module

The /api/v1/stats/submissions API endpoint implementation.

class onadata.apps.api.viewsets.submissionstats_viewset.SubmissionStatsViewSet(**kwargs)

Bases: AnonymousUserPublicFormsMixin, AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, DefaultBaseViewset, ReadOnlyModelViewSet

Provides submissions counts grouped by a specified field. It accepts query parameters group and name. Default result is grouped by _submission_time, hence you get submission counts per day. If a date field is used as the group, the result will be grouped by day.

  • group - field to group submission counts by

  • name - name to be applied to the group on results

Example:

GET /api/v1/stats/submissions/1? group=_submission_time&name=day_of_submission

Response:

[
    {
        "count": 8,
        "day_of_submission": "2013-11-15",
    },
    {
        "count": 99,
        "day_of_submission": "2013-11-16",
    },
    {
        "count": 133,
        "day_of_submission": "2013-11-17",
    },
    {
        "count": 162,
        "day_of_submission": "2013-11-18",
    },
    {
        "count": 102,
        "day_of_submission": "2013-11-19",
    }
]
filter_backends = (<class 'onadata.libs.filters.AnonDjangoObjectPermissionFilter'>, <class 'onadata.libs.filters.ActiveXFormOrganizationFilter'>)
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)

lookup_field = 'pk'
permission_classes = [<class 'onadata.apps.api.permissions.XFormPermissions'>]
serializer_class

alias of SubmissionStatsSerializer

onadata.apps.api.viewsets.team_viewset module

The /teams API endpoint implementation.

class onadata.apps.api.viewsets.team_viewset.TeamViewSet(**kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, DefaultBaseViewset, ModelViewSet

This endpoint allows you to create, update and view team information.

extra_lookup_fields = None
filter_backends = (<class 'rest_framework_guardian.filters.ObjectPermissionsFilter'>, <class 'onadata.libs.filters.TeamOrgFilter'>)
lookup_field = 'pk'
members(request, *args, **kwargs)

Returns members of an organization.

permission_classes = [<class 'rest_framework.permissions.DjangoObjectPermissions'>]
serializer_class

alias of TeamSerializer

share(request, *args, **kwargs)

Performs sharing a team project operations.

onadata.apps.api.viewsets.user_profile_viewset module

UserProfileViewSet module.

class onadata.apps.api.viewsets.user_profile_viewset.UserProfileViewSet(*args, **kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, ObjectLookupMixin, RevisionMixin, DefaultBaseViewset, ModelViewSet

List, Retrieve, Update, Create/Register users.

change_password(request, *args, **kwargs)

Change user’s password.

create(request, *args, **kwargs)

Create and cache user profile

filter_backends = (<class 'onadata.libs.filters.UserProfileFilter'>, <class 'rest_framework.filters.OrderingFilter'>)
get_object(queryset=None)

Lookup user profile by pk or username

lookup_field = 'user'
lookup_value_regex = '(?:[\\w.-]+(?<!\\.json)(?<!\\.xml)(?<!\\.csv)(?<!\\.jsonp)(?<!\\.yaml)(?<!\\.html)(?<!\\.api))|\\+?[\\d.\\-]+|(?:[\\w.%+-]+@[\\w.-]+\\.[a-zA-Z]{2,}(?<!\\.json)(?<!\\.xml)(?<!\\.csv)(?<!\\.jsonp)(?<!\\.yaml)(?<!\\.html)(?<!\\.api))'
monthly_submissions(request, *args, **kwargs)

Get the total number of submissions for a user

ordering = ('user__username',)
partial_update(request, *args, **kwargs)

Allows for partial update of the user profile data.

permission_classes = [<class 'onadata.apps.api.permissions.UserProfilePermissions'>]
retrieve(request, *args, **kwargs)

Get user profile from cache or db

send_verification_email(request, *args, **kwargs)

Sends verification email on user profile registration.

serializer_class

alias of UserProfileSerializer

update(request, *args, **kwargs)

Update user in cache and db

verify_email(request, *args, **kwargs)

Accepts email verification token and marks the profile as verified.

onadata.apps.api.viewsets.user_profile_viewset.change_password_attempts(request)

Track number of login attempts made by user within a specified amount of time

onadata.apps.api.viewsets.user_profile_viewset.check_if_key_exists(a_key, expected_dict)

Return True or False if a_key exists in the expected_dict dictionary.

onadata.apps.api.viewsets.user_profile_viewset.check_user_lockout(request)

Returns the error object with lockout error message.

onadata.apps.api.viewsets.user_profile_viewset.replace_key_value(lookup, new_value, expected_dict)

Replaces the value matching the key ‘lookup’ in the ‘expected_dict’ with the new value ‘new_value’.

onadata.apps.api.viewsets.user_profile_viewset.serializer_from_settings()

Return a serilizer class configured in settings.PROFILE_SERIALIZER or default to UserProfileSerializer.

onadata.apps.api.viewsets.user_profile_viewset.set_is_email_verified(profile, is_email_verified)

Sets is_email_verified value in the profile’s metadata object.

onadata.apps.api.viewsets.user_viewset module

Users /users API endpoint.

class onadata.apps.api.viewsets.user_viewset.UserViewSet(**kwargs)

Bases: AuthenticateHeaderMixin, DefaultBaseViewset, CacheControlMixin, ETagsMixin, ReadOnlyModelViewSet

This endpoint allows you to list and retrieve user’s first and last names.

filter_backends = (<class 'rest_framework.filters.SearchFilter'>, <class 'onadata.libs.filters.UserNoOrganizationsFilter'>)
get_object()

Lookup a username by pk else use lookup_field

lookup_field = 'username'
lookup_value_regex = '(?:[\\w.-]+(?<!\\.json)(?<!\\.xml)(?<!\\.csv)(?<!\\.jsonp)(?<!\\.yaml)(?<!\\.html)(?<!\\.api))|\\+?[\\d.\\-]+|(?:[\\w.%+-]+@[\\w.-]+\\.[a-zA-Z]{2,}(?<!\\.json)(?<!\\.xml)(?<!\\.csv)(?<!\\.jsonp)(?<!\\.yaml)(?<!\\.html)(?<!\\.api))'
permission_classes = [<class 'onadata.apps.api.permissions.UserViewSetPermissions'>]
search_fields = ('=email', 'username')
serializer_class

alias of UserSerializer

onadata.apps.api.viewsets.widget_viewset module

Expose and persist charts and corresponding data.

class onadata.apps.api.viewsets.widget_viewset.WidgetViewSet(**kwargs)

Bases: AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, DefaultBaseViewset, ModelViewSet

Expose and persist charts and corresponding data.

filter_backends = (<class 'onadata.libs.filters.WidgetFilter'>,)
get_object(queryset=None)

Returns the object the view is displaying.

You may want to override this if you need to provide non-standard queryset lookups. Eg if objects are referenced using multiple keyword arguments in the url conf.

list(request, *args, **kwargs)
lookup_field = 'pk'
permission_classes = [<class 'onadata.apps.api.permissions.WidgetViewSetPermissions'>]
serializer_class

alias of WidgetSerializer

onadata.apps.api.viewsets.xform_list_viewset module

OpenRosa Form List API - https://docs.getodk.org/openrosa-form-list/

class onadata.apps.api.viewsets.xform_list_viewset.PreviewXFormListViewSet(**kwargs)

Bases: XFormListViewSet

OpenRosa Form List API - for preview purposes only

filter_backends = (<class 'onadata.libs.filters.AnonDjangoObjectPermissionFilter'>,)
permission_classes = (<class 'rest_framework.permissions.AllowAny'>,)
class onadata.apps.api.viewsets.xform_list_viewset.XFormListViewSet(**kwargs)

Bases: ETagsMixin, DefaultBaseViewset, ReadOnlyModelViewSet

OpenRosa Form List API - https://docs.getodk.org/openrosa-form-list/

authentication_classes = (<class 'onadata.libs.authentication.DigestAuthentication'>, <class 'onadata.libs.authentication.EnketoTokenAuthentication'>, <class 'rest_framework.authentication.TokenAuthentication'>)
content_negotiation_class

alias of MediaFileContentNegotiation

filter_backends = (<class 'onadata.libs.filters.XFormListObjectPermissionFilter'>, <class 'onadata.libs.filters.XFormListXFormPKFilter'>, <class 'django_filters.rest_framework.backends.DjangoFilterBackend'>)
filter_queryset(queryset)

Given a queryset, filter it with whichever filter backend is in use.

You are unlikely to want to override this method, although you may need to call it either from a list view, or from a custom get_object method if you want to apply the configured filtering backend to the default queryset.

filterset_class

alias of FormIDFilter

get_object()

Returns the object the view is displaying.

You may want to override this if you need to provide non-standard queryset lookups. Eg if objects are referenced using multiple keyword arguments in the url conf.

get_serializer(*args, **kwargs)

Return the serializer instance that should be used for validating and deserializing input, and for serializing output.

get_serializer_class()

Return the class to use for the serializer

list(request, *args, **kwargs)
manifest(request, *args, **kwargs)

A manifest defining additional supporting objects.

media(request, *args, **kwargs)

Returns the media file contents.

permission_classes = (<class 'rest_framework.permissions.AllowAny'>,)
renderer_classes = (<class 'onadata.libs.renderers.renderers.XFormListRenderer'>,)
retrieve(request, *args, **kwargs)
serializer_class

alias of XFormListSerializer

template_name = 'api/xformsList.xml'
throttle_scope = 'xformlist'

onadata.apps.api.viewsets.xform_submission_viewset module

XFormSubmissionViewSet module

class onadata.apps.api.viewsets.xform_submission_viewset.FLOIPParser

Bases: JSONParser

Flow Results JSON parser.

media_type = 'application/vnd.org.flowinterop.results+json'
renderer_classes

alias of FLOIPRenderer

class onadata.apps.api.viewsets.xform_submission_viewset.XFormSubmissionViewSet(**kwargs)

Bases: AuthenticateHeaderMixin, OpenRosaHeadersMixin, CreateModelMixin, UpdateModelMixin, DefaultBaseViewset, GenericViewSet

XFormSubmissionViewSet class

authentication_classes = (<class 'onadata.libs.authentication.DigestAuthentication'>, <class 'onadata.libs.authentication.LockoutBasicAuthentication'>, <class 'rest_framework.authentication.TokenAuthentication'>, <class 'onadata.libs.authentication.EnketoTokenAuthentication'>)
create(request, *args, **kwargs)
filter_backends = (<class 'onadata.libs.filters.AnonDjangoObjectPermissionFilter'>,)
get_serializer(*args, **kwargs)

Pass many=True flag if data is a list.

get_serializer_class()

Returns the serializer class to be used based on content_type.

handle_exception(exc)

Handles exceptions thrown by handler method and returns appropriate error response.

model

alias of Instance

parser_classes = (<class 'onadata.apps.api.viewsets.xform_submission_viewset.FLOIPParser'>, <class 'rest_framework.parsers.JSONParser'>, <class 'rest_framework.parsers.FormParser'>, <class 'rest_framework.parsers.MultiPartParser'>)
permission_classes = (<class 'rest_framework.permissions.AllowAny'>, <class 'onadata.apps.api.permissions.IsAuthenticatedSubmission'>)
renderer_classes = (<class 'onadata.libs.renderers.renderers.TemplateXMLRenderer'>, <class 'rest_framework.renderers.JSONRenderer'>, <class 'rest_framework.renderers.BrowsableAPIRenderer'>, <class 'onadata.libs.renderers.renderers.FLOIPRenderer'>)
serializer_class

alias of SubmissionSerializer

template_name = 'submission.xml'
throttle_scope = 'submission'
update(request, *args, **kwargs)

Handle submission edit requests.

Uses the SubmissionSerializer to handle decryption of encrypted submissions and save the edit via safe_create_instance.

onadata.apps.api.viewsets.xform_viewset module

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.

Module contents