onadata.libs package

Subpackages

Submodules

onadata.libs.authentication module

class onadata.libs.authentication.DigestAuthentication

Bases: rest_framework.authentication.BaseAuthentication

authenticate(request)
authenticate_header(request)
class onadata.libs.authentication.EnketoTokenAuthentication

Bases: rest_framework.authentication.TokenAuthentication

authenticate(request)
model

alias of Token

class onadata.libs.authentication.TempTokenAuthentication

Bases: rest_framework.authentication.TokenAuthentication

authenticate(request)
authenticate_credentials(key)
authenticate_header(request)
model

alias of TempToken

class onadata.libs.authentication.TempTokenURLParameterAuthentication

Bases: onadata.libs.authentication.TempTokenAuthentication

authenticate(request)
model

alias of TempToken

onadata.libs.authentication.expired(time_token_created)

Checks if the time between when time_token_created and current time is greater than the token expiry time.

Params time_token_created:
 The time the token we are checking was created.
Returns:Boolean True if not passed expired time, otherwise False.
onadata.libs.authentication.get_api_token(json_web_token)

Get API Token from JSON Web Token

onadata.libs.baseviewset module

class onadata.libs.baseviewset.DefaultBaseViewset

Bases: object

onadata.libs.exceptions module

exception onadata.libs.exceptions.J2XException

Bases: exceptions.Exception

exception onadata.libs.exceptions.NoRecordsFoundError

Bases: exceptions.Exception

exception onadata.libs.exceptions.NoRecordsPermission

Bases: exceptions.Exception

exception onadata.libs.exceptions.ServiceUnavailable(detail=None)

Bases: rest_framework.exceptions.APIException

default_detail = 'Service temporarily unavailable, try again later.'
status_code = 503

onadata.libs.filters module

class onadata.libs.filters.AnonDjangoObjectPermissionFilter

Bases: rest_framework.filters.DjangoObjectPermissionsFilter

filter_queryset(request, queryset, view)

Anonymous user has no object permissions, return queryset as it is.

class onadata.libs.filters.AnonUserProjectFilter

Bases: rest_framework.filters.DjangoObjectPermissionsFilter

filter_queryset(request, queryset, view)

Anonymous user has no object permissions, return queryset as it is.

owner_prefix = 'organization'
class onadata.libs.filters.AttachmentFilter

Bases: onadata.libs.filters.XFormPermissionFilterMixin, rest_framework.filters.DjangoObjectPermissionsFilter

filter_queryset(request, queryset, view)
class onadata.libs.filters.DataFilter

Bases: rest_framework.filters.DjangoObjectPermissionsFilter

filter_queryset(request, queryset, view)
class onadata.libs.filters.ExportFilter

Bases: onadata.libs.filters.XFormPermissionFilterMixin, rest_framework.filters.DjangoObjectPermissionsFilter

filter_queryset(request, queryset, view)
class onadata.libs.filters.InstancePermissionFilterMixin

Bases: object

class onadata.libs.filters.MetaDataFilter

Bases: onadata.libs.filters.ProjectPermissionFilterMixin, onadata.libs.filters.InstancePermissionFilterMixin, onadata.libs.filters.XFormPermissionFilterMixin, rest_framework.filters.DjangoObjectPermissionsFilter

filter_queryset(request, queryset, view)
class onadata.libs.filters.NoteFilter

Bases: rest_framework.filters.BaseFilterBackend

filter_queryset(request, queryset, view)
class onadata.libs.filters.OrganizationPermissionFilter

Bases: rest_framework.filters.DjangoObjectPermissionsFilter

filter_queryset(request, queryset, view)

Return a filtered queryset or all profiles if a getting a specific profile.

class onadata.libs.filters.OrganizationsSharedWithUserFilter

Bases: rest_framework.filters.BaseFilterBackend

filter_queryset(request, queryset, view)

This returns a queryset containing only organizations to which the passed user belongs.

class onadata.libs.filters.ProjectOwnerFilter

Bases: onadata.libs.filters.XFormOwnerFilter

owner_prefix = 'organization'
class onadata.libs.filters.ProjectPermissionFilterMixin

Bases: object

class onadata.libs.filters.RestServiceFilter

Bases: onadata.libs.filters.XFormPermissionFilterMixin, rest_framework.filters.DjangoObjectPermissionsFilter

filter_queryset(request, queryset, view)
class onadata.libs.filters.TagFilter

Bases: rest_framework.filters.BaseFilterBackend

filter_queryset(request, queryset, view)
class onadata.libs.filters.TeamOrgFilter

Bases: rest_framework.filters.BaseFilterBackend

filter_queryset(request, queryset, view)
class onadata.libs.filters.UserNoOrganizationsFilter

Bases: rest_framework.filters.BaseFilterBackend

filter_queryset(request, queryset, view)
class onadata.libs.filters.UserProfileFilter

Bases: rest_framework.filters.BaseFilterBackend

filter_queryset(request, queryset, view)
class onadata.libs.filters.WidgetFilter

Bases: onadata.libs.filters.XFormPermissionFilterMixin, rest_framework.filters.DjangoObjectPermissionsFilter

filter_queryset(request, queryset, view)
class onadata.libs.filters.XFormListObjectPermissionFilter

Bases: onadata.libs.filters.AnonDjangoObjectPermissionFilter

perm_format = '%(app_label)s.report_%(model_name)s'
class onadata.libs.filters.XFormOwnerFilter

Bases: rest_framework.filters.BaseFilterBackend

filter_queryset(request, queryset, view)
owner_prefix = 'user'
class onadata.libs.filters.XFormPermissionFilterMixin

Bases: object

onadata.libs.pagination module

class onadata.libs.pagination.StandardPageNumberPagination

Bases: rest_framework.pagination.PageNumberPagination

max_page_size = 10000
page_size = 1000
page_size_query_param = 'page_size'

onadata.libs.permissions module

class onadata.libs.permissions.DataEntryMinorRole

Bases: onadata.libs.permissions.Role

class_to_permissions = defaultdict(<type 'list'>, {<class 'onadata.apps.logger.models.xform.XForm'>: ['report_xform', 'view_xform', 'can_export_xform_data', 'view_xform_data'], <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>: ['view_organizationprofile'], <class 'onadata.apps.logger.models.project.Project'>: ['view_project', 'report_project_xform', 'can_export_project_data', 'view_project_data']})
name = 'dataentry-minor'
permissions = (('report_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('view_project', <class 'onadata.apps.logger.models.project.Project'>), ('report_project_xform', <class 'onadata.apps.logger.models.project.Project'>), ('can_export_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('can_export_project_data', <class 'onadata.apps.logger.models.project.Project'>), ('view_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_project_data', <class 'onadata.apps.logger.models.project.Project'>))
class onadata.libs.permissions.DataEntryOnlyRole

Bases: onadata.libs.permissions.Role

class_to_permissions = defaultdict(<type 'list'>, {<class 'onadata.apps.logger.models.xform.XForm'>: ['report_xform', 'view_xform', 'can_export_xform_data'], <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>: ['view_organizationprofile'], <class 'onadata.apps.logger.models.project.Project'>: ['view_project', 'report_project_xform', 'can_export_project_data']})
name = 'dataentry-only'
permissions = (('report_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('view_project', <class 'onadata.apps.logger.models.project.Project'>), ('report_project_xform', <class 'onadata.apps.logger.models.project.Project'>), ('can_export_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('can_export_project_data', <class 'onadata.apps.logger.models.project.Project'>))
class onadata.libs.permissions.DataEntryRole

Bases: onadata.libs.permissions.Role

class_to_permissions = defaultdict(<type 'list'>, {<class 'onadata.apps.logger.models.xform.XForm'>: ['report_xform', 'view_xform', 'can_export_xform_data', 'view_xform_all', 'view_xform_data'], <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>: ['view_organizationprofile'], <class 'onadata.apps.logger.models.project.Project'>: ['view_project', 'report_project_xform', 'can_export_project_data', 'view_project_data', 'view_project_all']})
name = 'dataentry'
permissions = (('report_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('view_project', <class 'onadata.apps.logger.models.project.Project'>), ('report_project_xform', <class 'onadata.apps.logger.models.project.Project'>), ('can_export_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('can_export_project_data', <class 'onadata.apps.logger.models.project.Project'>), ('view_xform_all', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_project_data', <class 'onadata.apps.logger.models.project.Project'>), ('view_project_all', <class 'onadata.apps.logger.models.project.Project'>))
class onadata.libs.permissions.EditorMinorRole

Bases: onadata.libs.permissions.Role

class_to_permissions = defaultdict(<type 'list'>, {<class 'onadata.apps.logger.models.xform.XForm'>: ['report_xform', 'change_xform', 'view_xform', 'delete_submission', 'can_export_xform_data', 'view_xform_data'], <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>: ['view_organizationprofile'], <class 'onadata.apps.logger.models.project.Project'>: ['change_project', 'view_project', 'report_project_xform', 'can_export_project_data', 'view_project_data']})
name = 'editor-minor'
permissions = (('report_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('change_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('delete_submission', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('change_project', <class 'onadata.apps.logger.models.project.Project'>), ('view_project', <class 'onadata.apps.logger.models.project.Project'>), ('report_project_xform', <class 'onadata.apps.logger.models.project.Project'>), ('can_export_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('can_export_project_data', <class 'onadata.apps.logger.models.project.Project'>), ('view_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_project_data', <class 'onadata.apps.logger.models.project.Project'>))
class onadata.libs.permissions.EditorRole

Bases: onadata.libs.permissions.Role

class_to_permissions = defaultdict(<type 'list'>, {<class 'onadata.apps.logger.models.xform.XForm'>: ['report_xform', 'change_xform', 'view_xform', 'delete_submission', 'can_export_xform_data', 'view_xform_all', 'view_xform_data'], <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>: ['view_organizationprofile'], <class 'onadata.apps.logger.models.project.Project'>: ['change_project', 'view_project', 'report_project_xform', 'can_export_project_data', 'view_project_data', 'view_project_all']})
name = 'editor'
permissions = (('report_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('change_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('delete_submission', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('change_project', <class 'onadata.apps.logger.models.project.Project'>), ('view_project', <class 'onadata.apps.logger.models.project.Project'>), ('report_project_xform', <class 'onadata.apps.logger.models.project.Project'>), ('can_export_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('can_export_project_data', <class 'onadata.apps.logger.models.project.Project'>), ('view_xform_all', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_project_data', <class 'onadata.apps.logger.models.project.Project'>), ('view_project_all', <class 'onadata.apps.logger.models.project.Project'>))
class onadata.libs.permissions.ManagerRole

Bases: onadata.libs.permissions.Role

class_to_permissions = defaultdict(<type 'list'>, {<class 'onadata.apps.main.models.user_profile.UserProfile'>: ['can_add_xform', 'view_profile'], <class 'onadata.apps.logger.models.xform.XForm'>: ['report_xform', 'add_xform', 'change_xform', 'view_xform', 'delete_submission', 'delete_xform', 'can_export_xform_data', 'view_xform_all', 'view_xform_data'], <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>: ['can_add_xform', 'view_organizationprofile'], <class 'onadata.apps.logger.models.project.Project'>: ['add_project', 'add_project_xform', 'change_project', 'view_project', 'report_project_xform', 'can_export_project_data', 'view_project_data', 'view_project_all']})
name = 'manager'
permissions = (('report_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('add_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('change_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('delete_submission', <class 'onadata.apps.logger.models.xform.XForm'>), ('delete_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('can_add_xform', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('view_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('can_add_xform', <class 'onadata.apps.main.models.user_profile.UserProfile'>), ('view_profile', <class 'onadata.apps.main.models.user_profile.UserProfile'>), ('add_project', <class 'onadata.apps.logger.models.project.Project'>), ('add_project_xform', <class 'onadata.apps.logger.models.project.Project'>), ('change_project', <class 'onadata.apps.logger.models.project.Project'>), ('view_project', <class 'onadata.apps.logger.models.project.Project'>), ('report_project_xform', <class 'onadata.apps.logger.models.project.Project'>), ('can_export_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('can_export_project_data', <class 'onadata.apps.logger.models.project.Project'>), ('view_xform_all', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_project_data', <class 'onadata.apps.logger.models.project.Project'>), ('view_project_all', <class 'onadata.apps.logger.models.project.Project'>))
class onadata.libs.permissions.MemberRole

Bases: onadata.libs.permissions.Role

This is a role for a member of an organization.

name = 'member'
class onadata.libs.permissions.OwnerRole

Bases: onadata.libs.permissions.Role

This is a role for an owner of a dataset, organization, or project.

class_to_permissions = defaultdict(<type 'list'>, {<class 'onadata.apps.main.models.user_profile.UserProfile'>: ['can_add_xform', 'add_userprofile', 'change_userprofile', 'delete_userprofile', 'can_add_xform', 'view_profile'], <class 'onadata.apps.logger.models.xform.XForm'>: ['report_xform', 'delete_submission', 'add_xform', 'view_xform', 'add_datadictionary', 'change_datadictionary', 'delete_datadictionary', 'report_xform', 'delete_xform', 'move_xform', 'transfer_xform', 'change_xform', 'can_export_xform_data', 'view_xform_all', 'view_xform_data'], <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>: ['view_organizationprofile', 'add_organizationprofile', 'can_add_xform', 'change_organizationprofile', 'delete_organizationprofile', 'is_org_owner', 'can_add_xform', 'view_organizationprofile'], <class 'onadata.apps.logger.models.project.Project'>: ['add_project', 'add_project_xform', 'change_project', 'delete_project', 'transfer_project', 'view_project', 'report_project_xform', 'can_export_project_data', 'view_project_data', 'view_project_all']})
name = 'owner'
permissions = (('report_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('delete_submission', <class 'onadata.apps.logger.models.xform.XForm'>), ('add_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('add_datadictionary', <class 'onadata.apps.logger.models.xform.XForm'>), ('change_datadictionary', <class 'onadata.apps.logger.models.xform.XForm'>), ('delete_datadictionary', <class 'onadata.apps.logger.models.xform.XForm'>), ('report_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('delete_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('move_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('transfer_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('change_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('can_add_xform', <class 'onadata.apps.main.models.user_profile.UserProfile'>), ('add_userprofile', <class 'onadata.apps.main.models.user_profile.UserProfile'>), ('change_userprofile', <class 'onadata.apps.main.models.user_profile.UserProfile'>), ('delete_userprofile', <class 'onadata.apps.main.models.user_profile.UserProfile'>), ('can_add_xform', <class 'onadata.apps.main.models.user_profile.UserProfile'>), ('view_profile', <class 'onadata.apps.main.models.user_profile.UserProfile'>), ('view_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('add_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('can_add_xform', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('change_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('delete_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('is_org_owner', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('can_add_xform', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('view_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('add_project', <class 'onadata.apps.logger.models.project.Project'>), ('add_project_xform', <class 'onadata.apps.logger.models.project.Project'>), ('change_project', <class 'onadata.apps.logger.models.project.Project'>), ('delete_project', <class 'onadata.apps.logger.models.project.Project'>), ('transfer_project', <class 'onadata.apps.logger.models.project.Project'>), ('view_project', <class 'onadata.apps.logger.models.project.Project'>), ('report_project_xform', <class 'onadata.apps.logger.models.project.Project'>), ('can_export_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('can_export_project_data', <class 'onadata.apps.logger.models.project.Project'>), ('view_xform_all', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_project_data', <class 'onadata.apps.logger.models.project.Project'>), ('view_project_all', <class 'onadata.apps.logger.models.project.Project'>))
class onadata.libs.permissions.ReadOnlyRole

Bases: onadata.libs.permissions.Role

class_to_permissions = defaultdict(<type 'list'>, {<class 'onadata.apps.logger.models.xform.XForm'>: ['view_xform', 'can_export_xform_data', 'view_xform_all'], <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>: ['view_organizationprofile'], <class 'onadata.apps.logger.models.project.Project'>: ['view_project', 'can_export_project_data', 'view_project_all']})
name = 'readonly'
permissions = (('view_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('view_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_project', <class 'onadata.apps.logger.models.project.Project'>), ('can_export_xform_data', <class 'onadata.apps.logger.models.xform.XForm'>), ('can_export_project_data', <class 'onadata.apps.logger.models.project.Project'>), ('view_xform_all', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_project_all', <class 'onadata.apps.logger.models.project.Project'>))
class onadata.libs.permissions.ReadOnlyRoleNoDownload

Bases: onadata.libs.permissions.Role

class_to_permissions = defaultdict(<type 'list'>, {<class 'onadata.apps.logger.models.xform.XForm'>: ['view_xform', 'view_xform_all'], <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>: ['view_organizationprofile'], <class 'onadata.apps.logger.models.project.Project'>: ['view_project', 'view_project_all']})
name = 'readonly-no-download'
permissions = (('view_organizationprofile', <class 'onadata.apps.api.models.organization_profile.OrganizationProfile'>), ('view_xform', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_project', <class 'onadata.apps.logger.models.project.Project'>), ('view_xform_all', <class 'onadata.apps.logger.models.xform.XForm'>), ('view_project_all', <class 'onadata.apps.logger.models.project.Project'>))
class onadata.libs.permissions.Role

Bases: object

classmethod add(user, obj)
class_to_permissions = None
classmethod has_role(permissions, obj)

Check that permission correspond to this role for this object.

Parameters:
  • permissions – A list of permissions.
  • obj – An object to get the permissions of.
name = None
permissions = None
classmethod user_has_role(user, obj)

Check that a user has this role.

Parameters:
  • user – A user object.
  • obj – An object to get the permissions of.
onadata.libs.permissions.filter_queryset_xform_meta_perms(xform, user, instance_queryset)
onadata.libs.permissions.filter_queryset_xform_meta_perms_sql(xform, user, query)
onadata.libs.permissions.get_object_users_with_permissions(obj, username=False, with_group_users=False)

Returns users, roles and permissions for an object.

Parameters:
  • obj – object, the object to check permissions on
  • username – bool, when True set username instead of a User object
onadata.libs.permissions.get_role(permissions, obj)
onadata.libs.permissions.get_role_in_org(user, organization)
onadata.libs.permissions.get_team_project_default_permissions(team, project)
onadata.libs.permissions.is_organization(obj)

Some OrganizationProfiles have a pointer to the UserProfile, but no UserProfiles do. Check for that first since it avoids a database hit.

onadata.libs.permissions.role

alias of DataEntryMinorRole

Module contents