from onadata.libs.utils.email import (get_verification_email_data, get_verification_url) from onadata.libs.utils.cache_tools import (cache, CHANGE_PASSWORD_ATTEMPTS, LOCKOUT_CHANGE_PASSWORD_USER) from onadata.libs import filters from onadata.libs.mixins.authenticate_header_mixin import \ AuthenticateHeaderMixin from onadata.libs.mixins.cache_control_mixin import CacheControlMixin from onadata.libs.mixins.etags_mixin import ETagsMixin from onadata.libs.mixins.object_lookup_mixin import ObjectLookupMixin from onadata.libs.serializers.monthly_submissions_serializer import \ MonthlySubmissionsSerializer from onadata.libs.serializers.user_profile_serializer import \ UserProfileSerializer BaseViewset = get_baseviewset_class() # pylint: disable=invalid-name LOCKOUT_TIME = getattr(settings, 'LOCKOUT_TIME', 1800) MAX_CHANGE_PASSWORD_ATTEMPTS = getattr(settings, 'MAX_CHANGE_PASSWORD_ATTEMPTS', 10) def replace_key_value(lookup, new_value, expected_dict): """ Replaces the value matching the key 'lookup' in the 'expected_dict' with the new value 'new_value'. """ for key, value in expected_dict.items(): if lookup == key: if isinstance(value, dict) and isinstance(new_value, dict): value.update(new_value) else:
from onadata.libs.utils.logger_tools import publish_form from onadata.libs.utils.model_tools import queryset_iterator from onadata.libs.utils.string import str2bool from onadata.libs.utils.viewer_tools import (enketo_url, generate_enketo_form_defaults, get_enketo_preview_url, get_form_url, get_enketo_single_submit_url) from onadata.libs.exceptions import EnketoError from onadata.settings.common import XLS_EXTENSIONS, CSV_EXTENSION ENKETO_AUTH_COOKIE = getattr(settings, 'ENKETO_AUTH_COOKIE', '__enketo') ENKETO_META_UID_COOKIE = getattr(settings, 'ENKETO_META_UID_COOKIE', '__enketo_meta_uid') BaseViewset = get_baseviewset_class() def upload_to_survey_draft(filename, username): return os.path.join(username, 'survey-drafts', os.path.split(filename)[1]) def get_survey_dict(csv_name): survey_file = default_storage.open(csv_name, 'rb') survey_dict = parse_file_to_json(survey_file.name, default_name='data', file_object=survey_file) return survey_dict
from rest_framework import status from rest_framework.response import Response from rest_framework.viewsets import ModelViewSet from onadata.apps.api.permissions import SubmissionReviewPermissions from onadata.apps.api.tools import get_baseviewset_class from onadata.apps.logger.models import SubmissionReview from onadata.libs.mixins.authenticate_header_mixin import \ AuthenticateHeaderMixin from onadata.libs.mixins.cache_control_mixin import CacheControlMixin from onadata.libs.mixins.etags_mixin import ETagsMixin from onadata.libs.mixins.bulk_create_mixin import BulkCreateMixin from onadata.libs.serializers.submission_review_serializer import \ SubmissionReviewSerializer BaseViewset = get_baseviewset_class() # pylint: disable=too-many-ancestors class SubmissionReviewViewSet(AuthenticateHeaderMixin, CacheControlMixin, ETagsMixin, BulkCreateMixin, BaseViewset, ModelViewSet): """ Submission Review ViewSet class """ queryset = SubmissionReview.objects.filter(deleted_at__isnull=True) serializer_class = SubmissionReviewSerializer permission_classes = [SubmissionReviewPermissions] filter_backends = (DjangoFilterBackend, ) filter_fields = ('instance', 'created_by', 'status')
from onadata.apps.api.permissions import IsAuthenticatedSubmission from onadata.apps.api.tools import get_baseviewset_class from onadata.apps.logger.models import Instance from onadata.libs import filters from onadata.libs.authentication import (DigestAuthentication, EnketoTokenAuthentication) from onadata.libs.mixins.authenticate_header_mixin import \ AuthenticateHeaderMixin from onadata.libs.mixins.openrosa_headers_mixin import OpenRosaHeadersMixin from onadata.libs.renderers.renderers import FLOIPRenderer, TemplateXMLRenderer from onadata.libs.serializers.data_serializer import ( FLOIPSubmissionSerializer, JSONSubmissionSerializer, RapidProSubmissionSerializer, SubmissionSerializer) from onadata.libs.utils.logger_tools import OpenRosaResponseBadRequest BaseViewset = get_baseviewset_class() # pylint: disable=C0103 # 10,000,000 bytes DEFAULT_CONTENT_LENGTH = getattr(settings, 'DEFAULT_CONTENT_LENGTH', 10000000) FLOIP_RESULTS_CONTENT_TYPE = 'application/vnd.org.flowinterop.results+json' class FLOIPParser(JSONParser): # pylint: disable=too-few-public-methods """ Flow Results JSON parser. """ media_type = FLOIP_RESULTS_CONTENT_TYPE renderer_classes = FLOIPRenderer class XFormSubmissionViewSet(AuthenticateHeaderMixin, # pylint: disable=R0901
from onadata.apps.api.permissions import IsAuthenticatedSubmission from onadata.apps.api.tools import get_baseviewset_class from onadata.apps.logger.models import Instance from onadata.libs import filters from onadata.libs.authentication import (DigestAuthentication, EnketoTokenAuthentication) from onadata.libs.mixins.authenticate_header_mixin import \ AuthenticateHeaderMixin from onadata.libs.mixins.openrosa_headers_mixin import OpenRosaHeadersMixin from onadata.libs.renderers.renderers import FLOIPRenderer, TemplateXMLRenderer from onadata.libs.serializers.data_serializer import ( FLOIPSubmissionSerializer, JSONSubmissionSerializer, RapidProSubmissionSerializer, SubmissionSerializer) from onadata.libs.utils.logger_tools import OpenRosaResponseBadRequest BaseViewset = get_baseviewset_class() # pylint: disable=C0103 # 10,000,000 bytes DEFAULT_CONTENT_LENGTH = getattr(settings, 'DEFAULT_CONTENT_LENGTH', 10000000) FLOIP_RESULTS_CONTENT_TYPE = 'application/vnd.org.flowinterop.results+json' class FLOIPParser(JSONParser): # pylint: disable=too-few-public-methods """ Flow Results JSON parser. """ media_type = FLOIP_RESULTS_CONTENT_TYPE renderer_classes = FLOIPRenderer class XFormSubmissionViewSet(
from django.conf import settings from django.contrib.auth.models import User from rest_framework.generics import get_object_or_404 from rest_framework.viewsets import ReadOnlyModelViewSet from rest_framework import filters from onadata.libs.filters import UserNoOrganizationsFilter from onadata.libs.mixins.authenticate_header_mixin import \ AuthenticateHeaderMixin from onadata.libs.mixins.cache_control_mixin import CacheControlMixin from onadata.libs.mixins.etags_mixin import ETagsMixin from onadata.libs.serializers.user_serializer import UserSerializer from onadata.apps.api import permissions from onadata.apps.api.tools import get_baseviewset_class BaseViewset = get_baseviewset_class() # pylint: disable=invalid-name # pylint: disable=too-many-ancestors class UserViewSet(AuthenticateHeaderMixin, BaseViewset, CacheControlMixin, ETagsMixin, ReadOnlyModelViewSet): """ This endpoint allows you to list and retrieve user's first and last names. """ queryset = User.objects.filter(is_active=True).exclude( username__iexact=settings.ANONYMOUS_DEFAULT_USERNAME, ) serializer_class = UserSerializer lookup_field = 'username' permission_classes = [permissions.UserViewSetPermissions] filter_backends = (filters.SearchFilter, UserNoOrganizationsFilter, ) search_fields = ('=email', )