コード例 #1
0
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:
コード例 #2
0
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
コード例 #3
0
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')
コード例 #4
0
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
コード例 #5
0
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(
コード例 #6
0
ファイル: user_viewset.py プロジェクト: onaio/onadata
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', )