onadata.libs.serializers package

Subpackages

Submodules

onadata.libs.serializers.attachment_serializer module

Attachments serializer.

class onadata.libs.serializers.attachment_serializer.AttachmentSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

Attachments serializer

class Meta

Bases: object

fields = ('url', 'filename', 'mimetype', 'field_xpath', 'id', 'xform', 'instance', 'download_url', 'small_download_url', 'medium_download_url')
model

alias of Attachment

get_download_url(obj)

Return attachment download url.

get_field_xpath(obj)

Return question xpath

get_medium_download_url(obj)

Return attachment download url for resized medium image.

get_small_download_url(obj)

Return attachment download url for resized small image.

get_xform(obj)

Return xform_id - old forms xform id is in submission instance xform_id

onadata.libs.serializers.attachment_serializer.dict_key_for_value(_dict, value)

This function is used to get key by value in a dictionary

onadata.libs.serializers.attachment_serializer.get_path(data, question_name, path_list)

A recursive function that returns the xpath of a media file :param json data: JSON representation of xform :param string question_name: Name of media file being searched for :param list path_list: Contains the names that make up the xpath :return: an xpath which is a string or None if name cannot be found :rtype: string or None

onadata.libs.serializers.chart_serializer module

Chart serializer.

class onadata.libs.serializers.chart_serializer.ChartSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

Chart serializer

class Meta

Bases: object

fields = ('id', 'id_string', 'url')
model

alias of XForm

class onadata.libs.serializers.chart_serializer.FieldsChartSerializer(*args, **kwargs)

Bases: ModelSerializer

Generate chart data for the field.

class Meta

Bases: object

model

alias of XForm

to_representation(instance)

Generate chart data for a given field in the request query params.

onadata.libs.serializers.clone_xform_serializer module

Clone an XForm serializer.

class onadata.libs.serializers.clone_xform_serializer.CloneXFormSerializer(*args, **kwargs)

Bases: Serializer

Clone an xform serializer class

create(validated_data)

Uses the CloneXForm class to clone/copy an XForm.

Returns the CloneXForm instance.

update(instance, validated_data)
validate_username(value)

Check that the username exists

onadata.libs.serializers.data_serializer module

Submission data serializers module.

class onadata.libs.serializers.data_serializer.BaseRapidProSubmissionSerializer(*args, **kwargs)

Bases: SubmissionSuccessMixin, Serializer

Base Rapidpro SubmissionSerializer - Implements the basic functionalities of a Rapidpro webhook serializer

create(validated_data)
update(instance, validated_data)
validate(attrs)

Validate that the XForm ID is passed in view kwargs

class onadata.libs.serializers.data_serializer.DataInstanceSerializer(*args, **kwargs)

Bases: ModelSerializer

DataInstanceSerializer class - for json field data representation on the Instance (submission) model.

class Meta

Bases: object

fields = ('json',)
model

alias of Instance

to_representation(instance)

Object instance -> Dict of primitive datatypes.

class onadata.libs.serializers.data_serializer.DataInstanceXMLSerializer(*args, **kwargs)

Bases: ModelSerializer

DataInstanceXMLSerializer class - for XML field data representation on the Instance model.

class Meta

Bases: object

fields = ('xml',)
model

alias of Instance

to_representation(instance)

Object instance -> Dict of primitive datatypes.

class onadata.libs.serializers.data_serializer.DataSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

DataSerializer class - used for the list view to show id, id_string, title and description.

class Meta

Bases: object

fields = ('id', 'id_string', 'title', 'description', 'url')
model

alias of XForm

class onadata.libs.serializers.data_serializer.FLOIPListSerializer(*args, **kwargs)

Bases: ListSerializer

Custom ListSerializer for a FLOIP submission.

create(*args)
update(instance, validated_data)
class onadata.libs.serializers.data_serializer.FLOIPSubmissionSerializer(*args, **kwargs)

Bases: SubmissionSuccessMixin, Serializer

FLOIP SubmmissionSerializer - Handles a row of FLOIP specification format.

class Meta

Bases: object

Call the list serializer class to create an instance.

list_serializer_class

alias of FLOIPListSerializer

create(validated_data)
run_validators(value)

Add read_only fields with defaults to value before running validators.

to_internal_value(data)

Overrides validating rows in list data.

update(instance, validated_data)
validate(attrs)

Custom list data validator.

class onadata.libs.serializers.data_serializer.InstanceHistorySerializer(*args, **kwargs)

Bases: ModelSerializer

InstanceHistorySerializer class - for the json field data representation.

class Meta

Bases: object

fields = ('json',)
model

alias of InstanceHistory

to_representation(instance)

Object instance -> Dict of primitive datatypes.

class onadata.libs.serializers.data_serializer.JSONSubmissionSerializer(*args, **kwargs)

Bases: SubmissionSuccessMixin, Serializer

JSON SubmissionSerializer - handles JSON submission data.

create(*args)
update(instance, validated_data)
validate(attrs)

Custom submission validator in request data.

class onadata.libs.serializers.data_serializer.JsonDataSerializer(*args, **kwargs)

Bases: Serializer

JSON DataSerializer class - for json field data representation.

create(validated_data)
to_representation(instance)

Object instance -> Dict of primitive datatypes.

update(instance, validated_data)
class onadata.libs.serializers.data_serializer.OSMSerializer(*args, **kwargs)

Bases: Serializer

OSM Serializer - represents OSM data.

create(validated_data)
property data

Returns the serialized data on the serializer.

to_representation(instance)

Return a list of osm file objects from attachments.

update(instance, validated_data)
class onadata.libs.serializers.data_serializer.OSMSiteMapSerializer(*args, **kwargs)

Bases: Serializer

OSM SiteMap Serializer.

create(validated_data)
to_representation(instance)

Return a list of osm file objects from attachments.

update(instance, validated_data)
class onadata.libs.serializers.data_serializer.RapidProJSONSubmissionSerializer(*args, **kwargs)

Bases: BaseRapidProSubmissionSerializer

Rapidpro SubmissionSerializer - handles RapidPro JSON webhook posts

create(*args)
update(instance, validated_data)
class onadata.libs.serializers.data_serializer.RapidProSubmissionSerializer(*args, **kwargs)

Bases: BaseRapidProSubmissionSerializer

Rapidpro SubmissionSerializer - handles Rapidpro webhook post.

create(*args)
update(instance, validated_data)
class onadata.libs.serializers.data_serializer.SubmissionSerializer(*args, **kwargs)

Bases: SubmissionSuccessMixin, Serializer

XML SubmissionSerializer - handles creating a submission from XML.

create(*args)
update(*args)
validate(attrs)
class onadata.libs.serializers.data_serializer.SubmissionSuccessMixin

Bases: object

SubmissionSuccessMixin - prepares submission success data/message.

to_representation(instance)

Returns a dict with a successful submission message.

class onadata.libs.serializers.data_serializer.TableauDataSerializer(*args, **kwargs)

Bases: ModelSerializer

TableauDataSerializer class - cleans out instance fields.

class Meta

Bases: object

fields = ('json',)
model

alias of Instance

to_representation(instance)

Object instance -> Dict of primitive datatypes.

onadata.libs.serializers.data_serializer.create_submission(request, username, data_dict, xform_id, gen_uuid: bool = False)

Returns validated data object instances

onadata.libs.serializers.data_serializer.get_request_and_username(context)

Returns request object and username

onadata.libs.serializers.dataview_serializer module

The DataViewSerializer - manage DataView objects.

class onadata.libs.serializers.dataview_serializer.DataViewMinimalSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

The DataViewMinimalSerializer - manage DataView objects.

class Meta

Bases: object

fields = ('dataviewid', 'name', 'url', 'xform', 'project', 'columns', 'query', 'matches_parent', 'date_created', 'instances_with_geopoints', 'date_modified')
model

alias of DataView

to_representation(instance)

Object instance -> Dict of primitive datatypes.

class onadata.libs.serializers.dataview_serializer.DataViewSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

The DataViewSerializer - manage DataView objects.

class Meta

Bases: object

fields = ('dataviewid', 'name', 'xform', 'project', 'columns', 'query', 'matches_parent', 'count', 'instances_with_geopoints', 'last_submission_time', 'has_hxl_support', 'url', 'date_created')
model

alias of DataView

validators = [<UniqueTogetherValidator(queryset=<QuerySet model=logger.DataView>, fields=('name', 'xform'))>]
create(validated_data)

We have a bit of extra checking around this in order to provide descriptive messages when something goes wrong, but this method is essentially just:

return ExampleModel.objects.create(**validated_data)

If there are many to many fields present on the instance then they cannot be set until the model is instantiated, in which case the implementation is like so:

example_relationship = validated_data.pop(‘example_relationship’) instance = ExampleModel.objects.create(**validated_data) instance.example_relationship = example_relationship return instance

The default implementation also does not handle nested relationships. If you want to support writable nested relationships you’ll need to write an explicit .create() method.

get_count(obj)

Returns the submission count for the data view,

get_has_hxl_support(obj)

Returns true if a DataView has columns with HXL tags.

get_instances_with_geopoints(obj)

Returns True if a DataView has submissions with geopoints.

get_last_submission_time(obj)

Returns the last submission timestamp.

to_representation(instance)

Object instance -> Dict of primitive datatypes.

update(instance, validated_data)
validate(attrs)
validate_columns(value)

Checks the value is a list.

validate_query(value)

Checks if the query filters in value are known.

validate_xform(value)

Prevent changing a DataView’s source XForm after creation.

onadata.libs.serializers.dataview_serializer.match_columns(data, instance=None)

Checks if the fields in two forms are a match.

onadata.libs.serializers.dataview_serializer.validate_date(value)

Returns True if the value is a date string.

onadata.libs.serializers.dataview_serializer.validate_datetime(value)

Returns True if the value is a datetime string.

onadata.libs.serializers.entity_serializer module

Entities serializer module.

class onadata.libs.serializers.entity_serializer.EntityArraySerializer(*args, **kwargs)

Bases: EntitySerializer

Serializer for a list of Entities

class Meta

Bases: object

fields = ('url', 'id', 'uuid', 'date_created', 'json', 'label', 'data')
model

alias of Entity

get_url(obj)

Returns the URL to an Entity list.

class onadata.libs.serializers.entity_serializer.EntityDeleteSerializer(*args, **kwargs)

Bases: Serializer

Serializer for deleting Entities

save(**kwargs)
validate_entity_ids(ids)
class onadata.libs.serializers.entity_serializer.EntityListArraySerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

Serializer for an array of EntityList

class Meta

Bases: object

fields = ('url', 'id', 'name', 'project', 'public', 'date_created', 'date_modified', 'num_registration_forms', 'num_follow_up_forms', 'num_entities')
model

alias of EntityList

get_num_entities(obj: EntityList) → int

Returns number of Entities in the dataset

Adds cached counter to database counter

get_num_follow_up_forms(obj: EntityList) → int

Returns number of FollowUpForms consuming Entities from dataset

get_num_registration_forms(obj: EntityList) → int

Returns number of RegistrationForms for EntityList object

class onadata.libs.serializers.entity_serializer.EntityListDetailSerializer(*args, **kwargs)

Bases: EntityListArraySerializer

Serializer for EntityList detail

class Meta

Bases: object

fields = ('id', 'name', 'project', 'public', 'date_created', 'date_modified', 'num_registration_forms', 'num_follow_up_forms', 'num_entities', 'registration_forms', 'follow_up_forms')
model

alias of EntityList

class onadata.libs.serializers.entity_serializer.EntityListSerializer(*args, **kwargs)

Bases: ModelSerializer

Default Serializer for EntityList

class Meta

Bases: object

fields = ('id', 'name', 'project', 'date_created', 'date_modified')
model

alias of EntityList

read_only_fields = ('date_created', 'date_modified')
validators = [<UniqueTogetherValidator(queryset=<QuerySet model=logger.EntityList>, fields=['name', 'project'])>]
validate_name(value: str) → str

Validate name field

Uses the same validation rules as PyXForm rules for dataset name

validate_project(value: Project) → Project

Validate project field

class onadata.libs.serializers.entity_serializer.EntitySerializer(*args, **kwargs)

Bases: ModelSerializer

Serializer for Entity

class Meta

Bases: object

fields = ('id', 'uuid', 'date_created', 'date_modified', 'json', 'label', 'data')
model

alias of Entity

read_only_fields = ('json',)
create(validated_data)

Override create

to_representation(instance)

Object instance -> Dict of primitive datatypes.

update(instance, validated_data)

Override update

validate(attrs)

Override validate

validate_data(value)

Validate and cast data field values to strings

validate_uuid(value)

Validate uuid field

class onadata.libs.serializers.entity_serializer.FollowUpFormInlineSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

Inline serializer for FollowUpForm

class Meta

Bases: object

fields = ('title', 'xform', 'id_string')
model

alias of FollowUpForm

class onadata.libs.serializers.entity_serializer.ImportEntitiesSerializer(*args, **kwargs)

Bases: Serializer

Serializer for importing entities

validate_csv_file(value)

Validate csv_file field

class onadata.libs.serializers.entity_serializer.PropertySerializer(*args, **kwargs)

Bases: ModelSerializer

Serializer for EntityList property

class Meta

Bases: object

fields = ('name', 'entity_list')
model

alias of EntityListProperty

validators = [<UniqueTogetherValidator(queryset=<QuerySet model=logger.EntityListProperty>, fields=['name', 'entity_list'])>]
create(validated_data)

We have a bit of extra checking around this in order to provide descriptive messages when something goes wrong, but this method is essentially just:

return ExampleModel.objects.create(**validated_data)

If there are many to many fields present on the instance then they cannot be set until the model is instantiated, in which case the implementation is like so:

example_relationship = validated_data.pop(‘example_relationship’) instance = ExampleModel.objects.create(**validated_data) instance.example_relationship = example_relationship return instance

The default implementation also does not handle nested relationships. If you want to support writable nested relationships you’ll need to write an explicit .create() method.

validate(attrs)
validate_name(value: str) → str

Validate name field

Uses the same validation rules as PyXForm rules for field name

class onadata.libs.serializers.entity_serializer.RegistrationFormInlineSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

Inline serializer for RegistrationForm

class Meta

Bases: object

fields = ('title', 'xform', 'id_string', 'save_to')
model

alias of RegistrationForm

get_save_to(obj: RegistrationForm) → list[str]

Returns the save_to fields defined in the XLSForm

onadata.libs.serializers.export_serializer module

The ExportSerializer class - create, list exports.

class onadata.libs.serializers.export_serializer.ExportSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

The ExportSerializer class - create, list exports.

class Meta

Bases: object

fields = ('id', 'job_status', 'type', 'task_id', 'xform', 'date_created', 'filename', 'options', 'export_url', 'error_message')
model

alias of Export

get_export_url(obj)

Returns the export download URL.

get_job_status(obj)

Returns export async status text.

get_type(obj)

Returns export type - CSV,XLS,…

onadata.libs.serializers.floip_serializer module

FloipSerializer module.

class onadata.libs.serializers.floip_serializer.FloipListSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

FloipListSerializer class.

class JSONAPIMeta

Bases: object

JSON API metaclass.

resource_name = 'packages'
class Meta

Bases: object

fields = ('url', 'id', 'name', 'title', 'created', 'modified')
model

alias of XForm

class onadata.libs.serializers.floip_serializer.FloipSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

FloipSerializer class.

class JSONAPIMeta

Bases: object

JSON API metaclass.

resource_name = 'packages'
class Meta

Bases: object

fields = ('url', 'id', 'id_string', 'title', 'profile', 'created', 'modified', 'flow_results_specification_version', 'resources')
model

alias of XForm

create(validated_data)

We have a bit of extra checking around this in order to provide descriptive messages when something goes wrong, but this method is essentially just:

return ExampleModel.objects.create(**validated_data)

If there are many to many fields present on the instance then they cannot be set until the model is instantiated, in which case the implementation is like so:

example_relationship = validated_data.pop(‘example_relationship’) instance = ExampleModel.objects.create(**validated_data) instance.example_relationship = example_relationship return instance

The default implementation also does not handle nested relationships. If you want to support writable nested relationships you’ll need to write an explicit .create() method.

get_flow_results_specification_version(value)

Returns the flow results specification version.

get_profile(value)

Returns the data-package profile.

get_resources(value)

Returns empty dict, a dummy holder for the eventually generated data package resources.

to_representation(instance)

Object instance -> Dict of primitive datatypes.

update(instance, validated_data)
class onadata.libs.serializers.floip_serializer.FlowResultsResponse(session_id, responses, duplicates=None)

Bases: object

FLowResultsResponse class to hold a list of submission ids.

duplicates = 0
id = None
responses = []
class onadata.libs.serializers.floip_serializer.FlowResultsResponseSerializer(*args, **kwargs)

Bases: Serializer

FlowResultsResponseSerializer for handling publishing of Flow Results Response package.

class JSONAPIMeta

Bases: object

JSON API metaclass.

resource_name = 'responses'
create(validated_data)
update(instance, validated_data)
class onadata.libs.serializers.floip_serializer.ReadOnlyUUIDField(*args, **kwargs)

Bases: ReadOnlyField

Custom ReadOnlyField for UUID

to_internal_value(data)

Transform the incoming primitive data into a native value.

to_representation(value)

Transform the outgoing native value into primitive data.

onadata.libs.serializers.floip_serializer.parse_responses(responses, session_id_index=3, question_index=4, answer_index=5, contact_id_index=2)

Returns individual submission for all responses in a flow-results responses package.

onadata.libs.serializers.geojson_serializer module

The GeoJsonSerializer class - uses the GeoJSON structure for submission data.

class onadata.libs.serializers.geojson_serializer.GeoJsonListSerializer(*args, **kwargs)

Bases: GeoJsonSerializer

Creates a FeatureCollections

to_representation(instance)

Serialize objects -> primitives.

class onadata.libs.serializers.geojson_serializer.GeoJsonSerializer(*args, **kwargs)

Bases: GeoFeatureModelSerializer

The GeoJsonSerializer class - uses the GeoJSON structure for submission data.

class Meta

Bases: object

fields = ('id', 'xform')
geo_field = 'geom'
id_field = False
lookup_field = 'pk'
model

alias of Instance

to_representation(instance)

Serialize objects -> primitives.

class onadata.libs.serializers.geojson_serializer.GeometryField(*args, **kwargs)

Bases: GeometryField

The GeometryField class - representation for single GeometryField.

to_representation(value)

Transform the outgoing native value into primitive data.

onadata.libs.serializers.geojson_serializer.create_feature(instance, geo_field, fields)

Create a geojson feature from a single instance

onadata.libs.serializers.geojson_serializer.geometry_from_dataview(dataview, instance_data)

Return a geometry collection containing selected DataView points.

onadata.libs.serializers.geojson_serializer.geometry_from_string(points, simple_style)

Takes a string, returns a geometry object. simple_style param allows building geojson that adheres to the simplestyle-spec

onadata.libs.serializers.geojson_serializer.is_polygon(point_list)

Takes a list of tuples and determines if it is a polygon

onadata.libs.serializers.merged_xform_serializer module

MergedXFormSerializer class

class onadata.libs.serializers.merged_xform_serializer.CanMergeXForms

Bases: object

Validate the user administers the project of every xform being merged and that the xforms are mergeable.

The checks run sequentially, stopping at the first failure. DRF runs every field validator and combines their errors, so as separate validators has_matching_fields would reveal the fields of an xform the user cannot read even when the permission check fails.

message = 'You do not have permission to merge one or more of these forms.'
requires_context = True
class onadata.libs.serializers.merged_xform_serializer.MergedXFormSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

MergedXForm Serializer to create and update merged datasets

class Meta

Bases: object

fields = ('url', 'id', 'xforms', 'name', 'project', 'title', 'num_of_submissions', 'last_submission_time', 'uuid')
model

alias of MergedXForm

write_only_fields = ('uuid',)
create(validated_data)

We have a bit of extra checking around this in order to provide descriptive messages when something goes wrong, but this method is essentially just:

return ExampleModel.objects.create(**validated_data)

If there are many to many fields present on the instance then they cannot be set until the model is instantiated, in which case the implementation is like so:

example_relationship = validated_data.pop(‘example_relationship’) instance = ExampleModel.objects.create(**validated_data) instance.example_relationship = example_relationship return instance

The default implementation also does not handle nested relationships. If you want to support writable nested relationships you’ll need to write an explicit .create() method.

get_last_submission_time(obj)

Return datetime of last submission from all forms

get_num_of_submissions(obj)

Return number of submissions either from the aggregate ‘number_of_submissions’ in the queryset or from the xform field ‘num_of_submissions’.

validate_project(value)

Validate the user can add a form to the project

class onadata.libs.serializers.merged_xform_serializer.XFormListField(*args, **kwargs)

Bases: ManyRelatedField

XFormSerializer

to_representation(iterable)

Transform the outgoing native value into primitive data.

class onadata.libs.serializers.merged_xform_serializer.XFormSerializer

Bases: HyperlinkedModelSerializer

class Meta

Bases: object

fields = ('url', 'id', 'id_string', 'title', 'num_of_submissions', 'owner', 'project_id', 'project_name')
model

alias of XForm

onadata.libs.serializers.merged_xform_serializer.get_merged_xform_survey(xforms)

Genertates a new pyxform survey object from the intersection of fields of the xforms being merged.

Parameters:

xforms – A list of XForms of at least length 2.

onadata.libs.serializers.merged_xform_serializer.has_matching_fields(value)

Validate we have some matching fields in the xforms being merged.

onadata.libs.serializers.merged_xform_serializer.minimum_two_xforms(value)

Validate at least 2 xforms are provided

onadata.libs.serializers.metadata_serializer module

MetaData Serializer

class onadata.libs.serializers.metadata_serializer.MetaDataSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

MetaData HyperlinkedModelSerializer

class Meta

Bases: object

fields = ('id', 'xform', 'project', 'instance', 'data_value', 'data_type', 'data_file', 'extra_data', 'data_file_type', 'media_url', 'file_hash', 'url', 'date_created')
model

alias of MetaData

create(validated_data)

We have a bit of extra checking around this in order to provide descriptive messages when something goes wrong, but this method is essentially just:

return ExampleModel.objects.create(**validated_data)

If there are many to many fields present on the instance then they cannot be set until the model is instantiated, in which case the implementation is like so:

example_relationship = validated_data.pop(‘example_relationship’) instance = ExampleModel.objects.create(**validated_data) instance.example_relationship = example_relationship return instance

The default implementation also does not handle nested relationships. If you want to support writable nested relationships you’ll need to write an explicit .create() method.

get_content_object(validated_data)

Returns the validated ‘xform’ or ‘project’ or ‘instance’ ids being linked to the metadata.

get_media_url(obj)

Returns media URL for given metadata

to_representation(instance)

Use the filename-aware URL for both uploaded-file URL fields.

update(instance, validated_data)
validate(attrs)

Validate url if we are adding a media uri instead of a media file

onadata.libs.serializers.metadata_serializer.create_xform_meta_permissions(data_value, xform)

Creates and updates xform meta permissions.

Parameters:
  • data_value – example: “editor-no-download|dataentry-only|readonly-no-download”

  • xform – The xform object for which to set metadata

Returns:

The created metadata object

Raises:

serializers.ValidationError – If the permissions format is invalid

onadata.libs.serializers.metadata_serializer.get_linked_object(parts)

Returns an XForm or DataView object

Raises 404 Exception if object is not found. Raises serializers.ValidationError if the format of the linked object is not valid.

onadata.libs.serializers.monthly_submissions_serializer module

Monthly submissions serializer

class onadata.libs.serializers.monthly_submissions_serializer.MonthlySubmissionsListSerializer(*args, **kwargs)

Bases: ListSerializer

Monthly submissions serializer

to_representation(data)

List of object instances -> List of dicts of primitive datatypes.

update(instance, validated_data)
class onadata.libs.serializers.monthly_submissions_serializer.MonthlySubmissionsSerializer(*args, **kwargs)

Bases: Serializer

Monthly submissions serializer

class Meta

Bases: object

list_serializer_class

alias of MonthlySubmissionsListSerializer

create(validated_data)
to_representation(instance)

Returns the total number of private/public submissions for a user

update(instance, validated_data)

onadata.libs.serializers.note_serializer module

Note Serializers Module

class onadata.libs.serializers.note_serializer.NoteSerializer(*args, **kwargs)

Bases: ModelSerializer

NoteSerializer class

class Meta

Bases: object

Meta Options for NoteSerializer

fields = ('id', 'note', 'instance', 'instance_field', 'created_by', 'date_created', 'date_modified', 'owner')
model

alias of Note

create(validated_data)

We have a bit of extra checking around this in order to provide descriptive messages when something goes wrong, but this method is essentially just:

return ExampleModel.objects.create(**validated_data)

If there are many to many fields present on the instance then they cannot be set until the model is instantiated, in which case the implementation is like so:

example_relationship = validated_data.pop(‘example_relationship’) instance = ExampleModel.objects.create(**validated_data) instance.example_relationship = example_relationship return instance

The default implementation also does not handle nested relationships. If you want to support writable nested relationships you’ll need to write an explicit .create() method.

get_owner(obj)

Custom method return the username of Note creator

validate(attrs)

onadata.libs.serializers.open_data_serializer module

The OpenDataSerializer class - create/list OpenData model data.

class onadata.libs.serializers.open_data_serializer.OpenDataCreateSerializer(*args, **kwargs)

Bases: OpenDataSerializer

Create serializer that returns a capability UUID once to its creator.

class Meta

Bases: Meta

fields = ('name', 'data_type', 'object_id', 'active', 'uuid')
class onadata.libs.serializers.open_data_serializer.OpenDataSerializer(*args, **kwargs)

Bases: ModelSerializer

The OpenDataSerializer class - create/list OpenData model data.

class Meta

Bases: object

fields = ('name', 'data_type', 'object_id', 'active')
model

alias of OpenData

create(validated_data)

We have a bit of extra checking around this in order to provide descriptive messages when something goes wrong, but this method is essentially just:

return ExampleModel.objects.create(**validated_data)

If there are many to many fields present on the instance then they cannot be set until the model is instantiated, in which case the implementation is like so:

example_relationship = validated_data.pop(‘example_relationship’) instance = ExampleModel.objects.create(**validated_data) instance.example_relationship = example_relationship return instance

The default implementation also does not handle nested relationships. If you want to support writable nested relationships you’ll need to write an explicit .create() method.

update(instance, validated_data)
validate_data_type(value)

OpenData capabilities are only supported for XForms.

onadata.libs.serializers.open_data_serializer.get_data(request_data, update=False)

return a namedtuple with error, message and data values.

onadata.libs.serializers.open_data_serializer.get_manageable_xforms(user)

Return active XForms the user is allowed to change.

onadata.libs.serializers.organization_member_serializer module

The OrganizationMemberSerializer - manages a users access in an organization

class onadata.libs.serializers.organization_member_serializer.OrganizationMemberSerializer(*args, **kwargs)

Bases: Serializer

The OrganizationMemberSerializer - manages a users access in an organization

create(validated_data)
property data
update(instance, validated_data)
validate(attrs)
validate_role(value)

check that the role exists

validate_username(value)

Check that the username exists

onadata.libs.serializers.organization_serializer module

Organization Serializer

class onadata.libs.serializers.organization_serializer.KMSKeyInlineSerializer(*args, **kwargs)

Bases: ModelSerializer

Serializer for KMSKey model.

class Meta

Bases: object

fields = ('id', 'description', 'date_created', 'is_active', 'is_expired', 'expiry_date', 'grace_end_date', 'is_automatic')
model

alias of KMSKey

get_is_automatic(obj)

Whether the key was created automatically.

class onadata.libs.serializers.organization_serializer.OrganizationSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

Organization profile serializer

class Meta

Bases: object

exclude = ('created_by', 'is_organization', 'organization')
model

alias of OrganizationProfile

owner_only_fields = ('metadata', 'email', 'encryption_keys')
create(validated_data)

Create an organization profile.

get_encryption_keys(obj)

Get the encryption keys for organization.

get_users(obj)

Return organization members.

update(instance, validated_data)

Update organization profile properties.

validate_org(value)

Validate organization name.

class onadata.libs.serializers.organization_serializer.RotateOrganizationKeySerializer(*args, **kwargs)

Bases: Serializer

Serializer for manual key rotation.

save(**kwargs)
validate_id(value)

onadata.libs.serializers.project_invitation_serializer module

Project invitations serializer

class onadata.libs.serializers.project_invitation_serializer.ProjectInvitationResendSerializer(*args, **kwargs)

Bases: ProjectInvitationUpdateBaseSerializer

Serializer for resending a project invitation

save(**kwargs)
validate_invitation_id(invitation_id)

Validate invitation_id field

class onadata.libs.serializers.project_invitation_serializer.ProjectInvitationRevokeSerializer(*args, **kwargs)

Bases: ProjectInvitationUpdateBaseSerializer

Serializer for revoking a project invitation

save(**kwargs)
validate_invitation_id(invitation_id)

Validate invitation_id field

class onadata.libs.serializers.project_invitation_serializer.ProjectInvitationSerializer(*args, **kwargs)

Bases: ModelSerializer

Serializer for ProjectInvitation model object

class Meta

Bases: object

extra_kwargs = {'project': {'write_only': True}}
fields = ('id', 'email', 'project', 'role', 'status')
model

alias of ProjectInvitation

read_only_fields = ('status',)
create(validated_data)

We have a bit of extra checking around this in order to provide descriptive messages when something goes wrong, but this method is essentially just:

return ExampleModel.objects.create(**validated_data)

If there are many to many fields present on the instance then they cannot be set until the model is instantiated, in which case the implementation is like so:

example_relationship = validated_data.pop(‘example_relationship’) instance = ExampleModel.objects.create(**validated_data) instance.example_relationship = example_relationship return instance

The default implementation also does not handle nested relationships. If you want to support writable nested relationships you’ll need to write an explicit .create() method.

update(instance, validated_data)
validate_email(email)

Validate email field

validate_role(role)

Validate role field

class onadata.libs.serializers.project_invitation_serializer.ProjectInvitationUpdateBaseSerializer(*args, **kwargs)

Bases: Serializer

Base serializer for project invitation updates

validate_invitation_id(invitation_id)

Validate invitation_id field

onadata.libs.serializers.project_serializer module

Project Serializer module.

class onadata.libs.serializers.project_serializer.BaseProjectSerializer(*args, **kwargs)

Bases: PublicProjectFieldsMixin, HyperlinkedModelSerializer

BaseProjectSerializer class.

class Meta

Bases: object

fields = ['url', 'projectid', 'owner', 'created_by', 'metadata', 'starred', 'users', 'forms', 'public', 'tags', 'num_datasets', 'last_submission_date', 'teams', 'name', 'date_created', 'date_modified', 'deleted_at']
model

alias of Project

get_forms(obj)

Return list of xforms in the project.

get_last_submission_date(obj)

Return the most recent submission date to any of the projects datasets.

get_num_datasets(obj)

Return the number of datasets attached to the project.

get_starred(obj)

Return True if request user has starred this project.

get_teams(obj)

Return the teams with access to the project.

get_users(obj)

Return a list of users and organizations that have access to the project.

class onadata.libs.serializers.project_serializer.BaseProjectXFormSerializer(*args, **kwargs)

Bases: XFormEntityListsMixin, HyperlinkedModelSerializer

BaseProjectXFormSerializer class.

class Meta

Bases: object

fields = ('name', 'formid', 'id_string', 'is_merged_dataset', 'encrypted', 'is_managed', 'contributes_entities_to', 'consumes_entities_from')
model

alias of XForm

class onadata.libs.serializers.project_serializer.ProjectSerializer(*args, **kwargs)

Bases: PublicProjectFieldsMixin, HyperlinkedModelSerializer

ProjectSerializer class - creates and updates a project.

class Meta

Bases: object

fields = ['url', 'projectid', 'name', 'owner', 'created_by', 'metadata', 'starred', 'users', 'forms', 'public', 'tags', 'num_datasets', 'last_submission_date', 'teams', 'data_views', 'date_created', 'date_modified']
model

alias of Project

create(*args)

We have a bit of extra checking around this in order to provide descriptive messages when something goes wrong, but this method is essentially just:

return ExampleModel.objects.create(**validated_data)

If there are many to many fields present on the instance then they cannot be set until the model is instantiated, in which case the implementation is like so:

example_relationship = validated_data.pop(‘example_relationship’) instance = ExampleModel.objects.create(**validated_data) instance.example_relationship = example_relationship return instance

The default implementation also does not handle nested relationships. If you want to support writable nested relationships you’ll need to write an explicit .create() method.

get_data_views(obj)

Return a list of filtered datasets.

get_forms(obj)

Return list of xforms in the project.

get_last_submission_date(obj)

Return the most recent submission date to any of the projects datasets.

get_num_datasets(obj)

Return the number of datasets attached to the project.

get_starred(obj)

Return True if request user has starred this project.

get_teams(obj)

Return the teams with access to the project.

get_users(obj)

Return a list of users and organizations that have access to the project.

update(instance, validated_data)

Update project properties.

validate(attrs)

Validate the project name does not exist and the user has the permissions to create a project in the organization.

validate_metadata(value)

Validate metadaata is a valid JSON value.

validate_public(value)

Validate the public field

class onadata.libs.serializers.project_serializer.ProjectXFormSerializer(*args, **kwargs)

Bases: BaseProjectXFormSerializer

ProjectXFormSerializer class - to return project xform info.

class Meta

Bases: object

fields = ('name', 'formid', 'id_string', 'num_of_submissions', 'downloadable', 'encrypted', 'is_managed', 'published_by_formbuilder', 'last_submission_time', 'date_created', 'url', 'last_updated_at', 'is_merged_dataset', 'contributes_entities_to', 'consumes_entities_from')
model

alias of XForm

get_published_by_formbuilder(obj)

Returns true if the form was published by formbuilder.

class onadata.libs.serializers.project_serializer.PublicProjectFieldsMixin

Bases: object

Remove project administration fields when a requester only has access because the project is public.

get_fields()

Return serializer fields, excluding internal fields for public access.

is_public_access(instance)

Return True if the request should receive the public-safe shape.

public_excluded_fields = {'created_by', 'metadata', 'owner', 'teams', 'users'}
to_representation(instance)

Remove internal fields from public-only list items.

onadata.libs.serializers.project_serializer.can_add_project_to_profile(user, organization)

Check if user has permission to add a project to a profile.

onadata.libs.serializers.project_serializer.get_last_submission_date(project)

Return the most recent submission date to any of the projects datasets.

Parameters:

project – The project to find the last submission date for.

onadata.libs.serializers.project_serializer.get_num_datasets(project)

Return the number of datasets attached to the project.

Parameters:

project – The project to find datasets for.

onadata.libs.serializers.project_serializer.get_project_xforms(project)

Returns an XForm queryset from project. The prefetched xforms_prefetch or xform_set.filter() queryset.

onadata.libs.serializers.project_serializer.get_team_permissions(team, project)

Return team permissions.

onadata.libs.serializers.project_serializer.get_teams(project)

Return the teams with access to the project.

onadata.libs.serializers.project_serializer.get_users(project, context, all_perms=True)

Return a list of users and organizations that have access to the project.

onadata.libs.serializers.project_serializer.is_starred(project, request)

Return True if the request.user has starred this project.

onadata.libs.serializers.project_serializer.set_owners_permission(user, project)

Give the user owner permission

onadata.libs.serializers.restservices_serializer module

The RestServiceSerializer class - create, list a rest service.

class onadata.libs.serializers.restservices_serializer.RestServiceSerializer(*args, **kwargs)

Bases: ModelSerializer

The RestServiceSerializer class - create, list a rest service.

class Meta

Bases: object

fields = ('id', 'xform', 'name', 'service_url', 'date_created', 'date_modified', 'active', 'inactive_reason')
model

alias of RestService

onadata.libs.serializers.share_project_serializer module

The ShareProjectSerializer class - support sharing a project.

class onadata.libs.serializers.share_project_serializer.RemoveUserFromProjectSerializer(*args, **kwargs)

Bases: ShareProjectSerializer

RemoveUserFromProjectSerializer class - removes a user’s access to a project.

create(validated_data)
save(**kwargs)
update(instance, validated_data)
validate(attrs)

Check and confirm that the project will be left with at least one owner. Raises a validation error if only one owner found

class onadata.libs.serializers.share_project_serializer.ShareProjectSerializer(*args, **kwargs)

Bases: Serializer

The ShareProjectSerializer class - support sharing a project.

create(validated_data)
update(instance, validated_data)
validate(attrs)
validate_role(value)

check that the role exists

validate_username(value)

Check that the username exists

onadata.libs.serializers.share_project_serializer.attrs_to_instance(attrs, instance)

Apply attributes into a class object from a dict.

onadata.libs.serializers.share_team_project_serializer module

Share projects to team functions.

class onadata.libs.serializers.share_team_project_serializer.RemoveTeamFromProjectSerializer(*args, **kwargs)

Bases: ShareTeamProjectSerializer

Remove a team from a project.

create(validated_data)

Remove a team from a project

update(instance, validated_data)

Remove a team from a project

class onadata.libs.serializers.share_team_project_serializer.ShareTeamProjectSerializer(*args, **kwargs)

Bases: Serializer

Shares a project with a team.

create(validated_data)

Shares a project to a team.

update(instance, validated_data)

Update project sharing properties.

validate_role(value)

check that the role exists

onadata.libs.serializers.share_xform_serializer module

Share XForm serializer.

class onadata.libs.serializers.share_xform_serializer.ShareXFormSerializer(*args, **kwargs)

Bases: Serializer

Share xform to a user.

create(validated_data)

Assign role permission for a form to a user.

update(instance, validated_data)

Make changes to form share to a user.

validate_role(value)

check that the role exists

validate_username(value)

Check that the username exists

onadata.libs.serializers.stats_serializer module

Stats API endpoint serializer.

class onadata.libs.serializers.stats_serializer.StatsInstanceSerializer(*args, **kwargs)

Bases: Serializer

The stats instance serializer - calls the relevant statistical functions and returns the results against form data submissions.

to_representation(instance)

Returns the result of the selected stats function.

class onadata.libs.serializers.stats_serializer.StatsSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

Stats serializer for use with the list API endpoint, summary of the stats endpoints.

class Meta

Bases: object

fields = ('id', 'id_string', 'url')
model

alias of XForm

class onadata.libs.serializers.stats_serializer.SubmissionStatsInstanceSerializer(*args, **kwargs)

Bases: Serializer

Submissions stats instance serializer - provides submission summary stats.

property data

Return the data as a list with ReturnList instead of a python object.

to_representation(instance)

Returns submissions stats grouped by a specified field.

class onadata.libs.serializers.stats_serializer.SubmissionStatsSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

Submission stats serializer for use with the list API endpoint, summary of the submission stats endpoints.

class Meta

Bases: object

fields = ('id', 'id_string', 'url')
model

alias of XForm

onadata.libs.serializers.submission_review_serializer module

Submission Review Serializer Module

class onadata.libs.serializers.submission_review_serializer.SubmissionReviewSerializer(*args, **kwargs)

Bases: ModelSerializer

SubmissionReviewSerializer Class

class Meta

Bases: object

Meta Options for SubmissionReviewSerializer

fields = ('id', 'instance', 'created_by', 'status', 'date_created', 'note', 'date_modified')
model

alias of SubmissionReview

create(validated_data)

Custom create method for SubmissionReviewSerializer

update(instance, validated_data)

Custom update method for SubmissionReviewSerializer

validate(attrs)

Custom Validate Method for SubmissionReviewSerializer

onadata.libs.serializers.tag_list_serializer module

Tags list serializer module.

class onadata.libs.serializers.tag_list_serializer.TagListSerializer(*args, **kwargs)

Bases: Field

Tags serializer - represents tags as a list of strings.

to_internal_value(data)

Validates the data is a list.

to_representation(value)

Returns all tags linked to the object value as a list.

onadata.libs.serializers.team_serializer module

The TeamSerializer class - access and update Team model objects.

class onadata.libs.serializers.team_serializer.TeamSerializer(*args, **kwargs)

Bases: Serializer

The TeamSerializer class - access and update Team model objects.

create(validated_data)
get_projects(obj)

Organization Projects with default role

get_users(obj)

Returns a users in a team.

update(instance, validated_data)

onadata.libs.serializers.textit_serializer module

The TextItSerializer - supports creating TextIt integration service.

class onadata.libs.serializers.textit_serializer.TextItSerializer(*args, **kwargs)

Bases: Serializer

The TextItSerializer - supports creating TextIt integration service.

create(validated_data)
to_representation(instance)

Object instance -> Dict of primitive datatypes.

update(instance, validated_data)

onadata.libs.serializers.user_profile_serializer module

UserProfile Serializers.

class onadata.libs.serializers.user_profile_serializer.UserProfileSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

UserProfile serializer.

class Meta

Bases: object

fields = ('id', 'is_org', 'url', 'username', 'password', 'first_name', 'last_name', 'email', 'city', 'country', 'organization', 'website', 'twitter', 'gravatar', 'require_auth', 'user', 'metadata', 'joined_on', 'name')
model

alias of UserProfile

owner_only_fields = ('metadata',)
create(*args)

We have a bit of extra checking around this in order to provide descriptive messages when something goes wrong, but this method is essentially just:

return ExampleModel.objects.create(**validated_data)

If there are many to many fields present on the instance then they cannot be set until the model is instantiated, in which case the implementation is like so:

example_relationship = validated_data.pop(‘example_relationship’) instance = ExampleModel.objects.create(**validated_data) instance.example_relationship = example_relationship return instance

The default implementation also does not handle nested relationships. If you want to support writable nested relationships you’ll need to write an explicit .create() method.

get_is_org(obj)

Returns True if it is an organization profile.

to_representation(instance)

Serialize objects -> primitives.

update(instance, validated_data)

Update user properties.

validate(attrs)
validate_email(value)

Checks if user with the same email has already been registered.

validate_twitter(value)

Checks if the twitter handle is valid.

validate_username(value)

Validate username.

class onadata.libs.serializers.user_profile_serializer.UserProfileWithTokenSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

User Profile Serializer that includes the users API Tokens.

class Meta

Bases: object

fields = ('url', 'username', 'name', 'email', 'city', 'country', 'organization', 'website', 'twitter', 'gravatar', 'require_auth', 'user', 'api_token', 'temp_token')
model

alias of UserProfile

get_api_token(obj)

Returns user’s API Token.

get_temp_token(obj)

This should return a valid temp token for this user profile.

onadata.libs.serializers.user_profile_serializer.get_audit_values(profile, fields)

Returns the current values of the audited fields on profile.

Each field is an attribute path on the profile, e.g. user.email; the values are keyed by the attribute name.

onadata.libs.serializers.user_profile_serializer.send_profile_updated_message(profile, old_values, fields, user)

Audit logs the audited fields of profile changed since old_values.

Each changed field maps to its old and new value, except contact fields which are recorded without their values.

onadata.libs.serializers.user_serializer module

The UserSerializer class - Users serializer

class onadata.libs.serializers.user_serializer.UserSerializer(*args, **kwargs)

Bases: HyperlinkedModelSerializer

The UserSerializer class - Users serializer

class Meta

Bases: object

fields = ('id', 'username', 'first_name', 'last_name')
model

alias of User

onadata.libs.serializers.widget_serializer module

Widget serializer

class onadata.libs.serializers.widget_serializer.GenericRelatedField(*args, **kwargs)

Bases: HyperlinkedRelatedField

GenericRelatedField - handle related field relations for XForm and DataView

default_error_messages = {'incorrect_match': '`{input}` is not a valid relation.'}
to_internal_value(data)

Verifies that data is a valid URL.

to_representation(value)

Set’s the self.view_name based on the type of value.

use_pk_only_optimization()
class onadata.libs.serializers.widget_serializer.WidgetSerializer

Bases: HyperlinkedModelSerializer

class Meta

Bases: object

Meta model - specifies the fields in the Model Widget for the serializer

fields = ('id', 'url', 'key', 'title', 'description', 'widget_type', 'order', 'view_type', 'column', 'group_by', 'content_object', 'data', 'aggregation', 'metadata')
model

alias of Widget

get_data(obj)

Return the Widget.query_data(obj)

validate(attrs)

Validate the effective widget fields for creates and updates.

validate_content_object(value)

Validate if a user is the owner f the organization.

onadata.libs.serializers.xform_serializer module

XForm model serialization.

class onadata.libs.serializers.xform_serializer.MultiLookupIdentityField(*args, **kwargs)

Bases: HyperlinkedIdentityField

Custom HyperlinkedIdentityField that supports multiple lookup fields.

Credits: https://stackoverflow.com/a/31161585

get_url(obj, view_name, request, format)

Returns URL to the given object.

lookup_fields = (('pk', 'pk'),)
class onadata.libs.serializers.xform_serializer.XFormBaseSerializer(*args, **kwargs)

Bases: XFormMixin, HyperlinkedModelSerializer

XForm base serializer.

class Meta

Bases: object

fields = ('url', 'project', 'formid', 'title', 'id_string', 'sms_id_string', 'version', 'uuid', 'date_created', 'date_modified', 'last_updated_at', 'description', 'downloadable', 'owner', 'created_by', 'public', 'public_data', 'public_key', 'require_auth', 'tags', 'enketo_url', 'enketo_preview_url', 'enketo_single_submit_url', 'num_of_submissions', 'num_of_pending_decryption_submissions', 'num_of_decrypted_submissions', 'last_submission_time', 'xls_available', 'allows_sms', 'encrypted', 'bamboo_dataset', 'instances_with_geopoints', 'instances_with_osm', 'has_hxl_support', 'hash', 'is_merged_dataset', 'is_instance_json_regenerated', 'is_managed', 'contributes_entities_to', 'consumes_entities_from', 'data_views', 'users')
model

alias of XForm

read_only_fields = ('date_created', 'date_modified', 'encrypted', 'bamboo_dataset', 'last_submission_time', 'is_merged_dataset', 'xls_available', 'is_managed')
class onadata.libs.serializers.xform_serializer.XFormCreateSerializer(*args, **kwargs)

Bases: XFormSerializer

XForm serializer that is only relevant during the XForm publishing process.

class Meta

Bases: Meta

fields = ('url', 'project', 'formid', 'title', 'id_string', 'sms_id_string', 'version', 'uuid', 'date_created', 'date_modified', 'last_updated_at', 'description', 'downloadable', 'owner', 'created_by', 'public', 'public_data', 'public_key', 'require_auth', 'tags', 'enketo_url', 'enketo_preview_url', 'enketo_single_submit_url', 'num_of_submissions', 'submission_count_for_today', 'num_of_pending_decryption_submissions', 'num_of_decrypted_submissions', 'last_submission_time', 'xls_available', 'allows_sms', 'encrypted', 'bamboo_dataset', 'instances_with_geopoints', 'instances_with_osm', 'has_hxl_support', 'hash', 'is_merged_dataset', 'is_instance_json_regenerated', 'is_managed', 'enable_kms_encryption', 'contributes_entities_to', 'consumes_entities_from', 'form_versions', 'data_views', 'metadata', 'users', 'has_id_string_changed')
get_has_id_string_changed(obj)

Returns the value of obj.has_id_string_changed

class onadata.libs.serializers.xform_serializer.XFormEntityListsMixin

Bases: object

Mixin for the EntityLists an XForm contributes to or consumes from

get_consumes_entities_from(obj: XForm)

Return the EntityLIst that the form consumes Entities

get_contributes_entities_to(obj: XForm)

Return the EntityLists that the form contributes Entities to

class onadata.libs.serializers.xform_serializer.XFormListSerializer(*args, **kwargs)

Bases: Serializer

XForm serializer for OpenRosa form list API.

get_manifest_url(obj)

Return manifest URL.

get_url(obj)

Returns XForm download URL.

class onadata.libs.serializers.xform_serializer.XFormManifestSerializer(*args, **kwargs)

Bases: Serializer

XForm Manifest serializer class.

get_filename(obj)

Returns media filename.

get_hash(obj)

Returns MD5 hash based on last_submission_time for a media linked form.

get_url(obj)

Return media download URL.

class onadata.libs.serializers.xform_serializer.XFormMixin

Bases: XFormEntityListsMixin

XForm mixins

get_data_views(obj)

Returns a list of filtered datasets linked to the form.

get_enketo_preview_url(obj)

Returns preview Enketo URL for given obj.

get_enketo_single_submit_url(obj)

Returns single submit Enketo URL for given obj.

get_enketo_url(obj)

Returns Enketo URL for given obj.

get_last_submission_time(obj)

Return datetime of last submission

If a form is a merged dataset then it is picked from the list of forms attached to that merged dataset.

get_num_of_pending_decryption_submissions(obj)

Return the number of submissions pending decryption for the form.

get_num_of_submissions(obj)

Returns number of submissions.

get_users(obj)

Returns a list of users based on XForm permissions.

get_xls_available(obj)

Returns True if obj.xls.url is not None, indicates XLS is present.

class onadata.libs.serializers.xform_serializer.XFormSerializer(*args, **kwargs)

Bases: XFormBaseSerializer

XForm model serializer

class Meta

Bases: Meta

fields = ('url', 'project', 'formid', 'title', 'id_string', 'sms_id_string', 'version', 'uuid', 'date_created', 'date_modified', 'last_updated_at', 'description', 'downloadable', 'owner', 'created_by', 'public', 'public_data', 'public_key', 'require_auth', 'tags', 'enketo_url', 'enketo_preview_url', 'enketo_single_submit_url', 'num_of_submissions', 'submission_count_for_today', 'num_of_pending_decryption_submissions', 'num_of_decrypted_submissions', 'last_submission_time', 'xls_available', 'allows_sms', 'encrypted', 'bamboo_dataset', 'instances_with_geopoints', 'instances_with_osm', 'has_hxl_support', 'hash', 'is_merged_dataset', 'is_instance_json_regenerated', 'is_managed', 'enable_kms_encryption', 'contributes_entities_to', 'consumes_entities_from', 'form_versions', 'data_views', 'metadata', 'users')
model

alias of XForm

get_form_versions(obj)

Returns all form versions.

get_metadata(obj)

Returns XForn obj metadata.

update(instance, validated_data)
validate_public(value)

Validate the public field

validate_public_data(value)

Validate the public_data field

validate_public_key(value)

Checks that the given RSA public key is a valid key by trying to use the key data to create an RSA key object using the cryptography package

class onadata.libs.serializers.xform_serializer.XFormVersionListSerializer(*args, **kwargs)

Bases: ModelSerializer

XFormVersion list API serializer

class Meta

Bases: object

exclude = ('json', 'xls', 'id')
model

alias of XFormVersion

onadata.libs.serializers.xform_serializer.user_to_username(item)

Replaces the item[“user”] user object with the to user.username.

Module contents