onadata.libs.serializers package¶
Subpackages¶
- onadata.libs.serializers.fields package
- Submodules
- onadata.libs.serializers.fields.hyperlinked_multi_identity_field module
- onadata.libs.serializers.fields.hyperlinked_multi_related_field module
- onadata.libs.serializers.fields.instance_related_field module
- onadata.libs.serializers.fields.json_field module
- onadata.libs.serializers.fields.organization_field module
- onadata.libs.serializers.fields.project_field module
- onadata.libs.serializers.fields.project_related_field module
- onadata.libs.serializers.fields.team_field module
- onadata.libs.serializers.fields.utils module
- onadata.libs.serializers.fields.xform_field module
- onadata.libs.serializers.fields.xform_related_field module
- Module contents
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
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.
- 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.
- 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 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(instance, validated_data)¶
- 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.
- 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 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')¶
- validators¶
- 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.
- 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.
- 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
- 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')¶
- 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')¶
- read_only_fields = ('json',)¶
- create(validated_data)¶
Override create
- save(**kwargs)¶
- 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.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')¶
- 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 onadata.libs.serializers.floip_serializer.FloipSerializer(*args, **kwargs)¶
Bases:
HyperlinkedModelSerializer
FloipSerializer class.
- class Meta¶
Bases:
object
- fields = ('url', 'id', 'id_string', 'title', 'profile', 'created', 'modified', 'flow_results_specification_version', 'resources')¶
- 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.
- 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'¶
- 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_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.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’.
- 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(*args, **kwargs)¶
Bases:
HyperlinkedModelSerializer
- 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')¶
- 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
- 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.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')¶
- 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.OpenDataSerializer(*args, **kwargs)¶
Bases:
ModelSerializer
The OpenDataSerializer class - create/list OpenData model data.
- 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)¶
- onadata.libs.serializers.open_data_serializer.get_data(request_data, update=False)¶
return a namedtuple with error, message and data values.
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.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')¶
- create(validated_data)¶
Create an organization profile.
- get_users(obj)¶
Return organization members.
- update(instance, validated_data)¶
Update organization profile properties.
- validate_org(value)¶
Validate organization name.
onadata.libs.serializers.password_reset_serializer module¶
Password reset serializer.
- class onadata.libs.serializers.password_reset_serializer.CustomPasswordResetTokenGenerator¶
Bases:
PasswordResetTokenGenerator
Custom Password Token Generator Class.
- class onadata.libs.serializers.password_reset_serializer.PasswordReset(email, reset_url, email_subject=None)¶
Bases:
object
Class resets the password and sends the reset email.
Class imitates a model functionality for use with PasswordResetSerializer
- save(subject_template_name='registration/password_reset_subject.txt', email_template_name='api_password_reset_email.html', token_generator=<onadata.libs.serializers.password_reset_serializer.CustomPasswordResetTokenGenerator object>, from_email=None)¶
Generates a one-use only link for resetting password and sends to the user.
- class onadata.libs.serializers.password_reset_serializer.PasswordResetChange(uid, new_password, token)¶
Bases:
object
Class resets and changes the password.
Class imitates a model functionality for use with PasswordResetSerializer
- save()¶
Set a new user password and invalidate/regenerate tokens.
- class onadata.libs.serializers.password_reset_serializer.PasswordResetChangeSerializer(*args, **kwargs)¶
Bases:
Serializer
Reset and change password serializer.
- create(validated_data, instance=None)¶
Set a new user password and invalidate/regenerate tokens.
- validate(attrs)¶
Validates the generated user token.
- validate_uid(value)¶
Validate the user uid.
- class onadata.libs.serializers.password_reset_serializer.PasswordResetSerializer(*args, **kwargs)¶
Bases:
Serializer
Password reset serializer.
- create(validated_data)¶
Reset a user password.
- validate_email(value)¶
Validates the email.
- validate_email_subject(value)¶
Validate the email subject is not empty.
- onadata.libs.serializers.password_reset_serializer.get_password_reset_email(user, reset_url, subject_template_name='registration/password_reset_subject.txt', email_template_name='api_password_reset_email.html', token_generator=<onadata.libs.serializers.password_reset_serializer.CustomPasswordResetTokenGenerator object>, email_subject=None)¶
Creates the subject and email body for password reset email.
- onadata.libs.serializers.password_reset_serializer.get_user_from_uid(uid)¶
Return user from base64 encoded
uid
.
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
onadata.libs.serializers.project_serializer module¶
Project Serializer module.
- class onadata.libs.serializers.project_serializer.BaseProjectSerializer(*args, **kwargs)¶
Bases:
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']¶
- 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:
HyperlinkedModelSerializer
BaseProjectXFormSerializer class.
- class onadata.libs.serializers.project_serializer.ProjectSerializer(*args, **kwargs)¶
Bases:
HyperlinkedModelSerializer
ProjectSerializer class - creates and updates a 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', 'published_by_formbuilder', 'last_submission_time', 'date_created', 'url', 'last_updated_at', 'is_merged_dataset', 'contributes_entities_to', 'consumes_entities_from')¶
- get_published_by_formbuilder(obj)¶
Returns true if the form was published by formbuilder.
- 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.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 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.
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.
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_serializer module¶
The UserSerializer class - Users serializer
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
.
- class onadata.libs.serializers.widget_serializer.WidgetSerializer(*args, **kwargs)¶
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')¶
- get_data(obj)¶
Return the Widget.query_data(obj)
- validate(attrs)¶
Validates that column exists in the XForm.
- 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
- exclude = ('json', 'xml', 'xls', 'user', 'has_start_time', 'shared', 'shared_data', 'deleted_at', 'deleted_by')¶
- read_only_fields = ('json', 'xml', 'date_created', 'date_modified', 'encrypted', 'bamboo_dataset', 'last_submission_time', 'is_merged_dataset', 'xls_available')¶
- class onadata.libs.serializers.xform_serializer.XFormCreateSerializer(*args, **kwargs)¶
Bases:
XFormSerializer
XForm serializer that is only relevant during the XForm publishing process.
- get_has_id_string_changed(obj)¶
Returns the value of
obj.has_id_string_changed
- 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:
object
XForm mixins
- get_contributes_entities_to(obj: XForm)¶
Return the EntityList that the form contributes Entities to
- 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_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:
XFormMixin
,HyperlinkedModelSerializer
XForm model serializer
- class Meta¶
Bases:
object
- exclude = ('json', 'xml', 'xls', 'user', 'has_start_time', 'shared', 'shared_data', 'deleted_at', 'deleted_by')¶
- read_only_fields = ('json', 'xml', 'date_created', 'date_modified', 'encrypted', 'bamboo_dataset', 'last_submission_time', 'is_merged_dataset', 'xls_available')¶
- get_form_versions(obj)¶
Returns all form versions.
- get_metadata(obj)¶
Returns XForn
obj
metadata.
- 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.clean_public_key(value)¶
Strips public key comments and spaces from a public key
value
.
- onadata.libs.serializers.xform_serializer.user_to_username(item)¶
Replaces the item[“user”] user object with the to user.username.