Ejemplo n.º 1
0
def publish_survey_draft(request, pk, format=None):
    if not kobocat_integration._is_enabled():
        return Response({'error': 'KoBoCat Server not specified'}, status=status.HTTP_503_SERVICE_UNAVAILABLE)

    try:
        survey_draft = SurveyDraft.objects.get(pk=pk, user=request.user)
    except SurveyDraft.DoesNotExist:
        return Response({'error': 'SurveyDraft not found'}, status=status.HTTP_404_NOT_FOUND)

    form_id_string = request.DATA.get('id_string', False)
    survey_draft._set_form_id_string(form_id_string, title=request.DATA.get('title', False))

    _set_necessary_permissions(request.user)
    (token, is_new) = Token.objects.get_or_create(user=request.user)
    headers = {u'Authorization':'Token ' + token.key}

    payload = {u'text_xls_form': survey_draft.body}
    try:
        url = kobocat_integration._kobocat_url('/api/v1/forms', internal=True)
        response = requests.post(url, headers=headers, data=payload)
        status_code = response.status_code
        resp = response.json()
    except Exception, e:
        resp = {'status_code': 504, 'detail': str(e)}
        status_code = 504
Ejemplo n.º 2
0
def kobocat_redirect(request, path=''):
    if kobocat_integration._is_enabled():
        if path:
            path = "/%s" % path
        url = kobocat_integration._kobocat_url(path)
        return HttpResponseRedirect(url)
    else:
        raise NotImplementedError("kobocat integration is not enabled. [No settings.KOBOCAT_URL]")
Ejemplo n.º 3
0
def kobocat_redirect(request, path=''):
    if kobocat_integration._is_enabled():
        if path:
            path = "/%s" % path
        url = kobocat_integration._kobocat_url(path)
        return HttpResponseRedirect(url)
    else:
        return HttpResponseRedirect("/")
Ejemplo n.º 4
0
def kobocat_redirect(request, path=''):
    if kobocat_integration._is_enabled():
        if path:
            path = "/%s" % path
        url = kobocat_integration._kobocat_url(path)
        return HttpResponseRedirect(url)
    else:
        return HttpResponseRedirect("/")
Ejemplo n.º 5
0
def kobocat_redirect(request, path=''):
    if kobocat_integration._is_enabled():
        if path:
            path = "/%s" % path
        url = kobocat_integration._kobocat_url(path)
        return HttpResponseRedirect(url)
    else:
        raise NotImplementedError("kobocat integration is not enabled. [No settings.KOBOCAT_URL]")
Ejemplo n.º 6
0
def publish_survey_draft(request, pk, format=None):
    if not kobocat_integration._is_enabled():
        return Response({'error': 'KoBoCat Server not specified'},
                        status=status.HTTP_503_SERVICE_UNAVAILABLE)

    try:
        survey_draft = SurveyDraft.objects.get(pk=pk, user=request.user)
    except SurveyDraft.DoesNotExist:
        return Response({'error': 'SurveyDraft not found'},
                        status=status.HTTP_404_NOT_FOUND)

    # convert csv to ss_struct
    ss_struct = pyxform_utils.convert_csv_to_ss_structure(survey_draft.body)
    form_id_string = request.data.get('id_string', False)

    # set the form_id based on the payload
    if 'settings' not in ss_struct:
        ss_struct['settings'] = [{}]
    elif len(ss_struct['settings']) == 0:
        ss_struct['settings'].append({})

    if form_id_string:
        ss_struct['settings'][0]['form_id'] = form_id_string

    # convert kobo-specific data structures into valid xlsform (e.g. score, rank)
    xlsform_ss_struct = convert_any_kobo_features_to_xlsform_survey_structure(
        ss_struct)
    valid_xlsform_csv_repr = pyxform_utils.convert_ss_structure_to_csv(
        xlsform_ss_struct)
    (token, is_new) = Token.objects.get_or_create(user=request.user)
    headers = {u'Authorization': 'Token ' + token.key}

    payload = {u'text_xls_form': valid_xlsform_csv_repr}
    try:
        url = kobocat_integration._kobocat_url('/api/v1/forms', internal=True)
        response = requests.post(url, headers=headers, data=payload)
        status_code = response.status_code
        resp = response.json()
    except Exception, e:
        resp = {'status_code': 504, 'detail': str(e)}
        status_code = 504
Ejemplo n.º 7
0
def publish_survey_draft(request, pk, format=None):
    if not kobocat_integration._is_enabled():
        return Response({'error': 'KoBoCat Server not specified'}, status=status.HTTP_503_SERVICE_UNAVAILABLE)

    try:
        survey_draft = SurveyDraft.objects.get(pk=pk, user=request.user)
    except SurveyDraft.DoesNotExist:
        return Response({'error': 'SurveyDraft not found'}, status=status.HTTP_404_NOT_FOUND)

    # convert csv to ss_struct
    ss_struct = pyxform_utils.convert_csv_to_ss_structure(survey_draft.body)
    form_id_string = request.DATA.get('id_string', False)

    # set the form_id based on the payload
    if 'settings' not in ss_struct:
        ss_struct['settings'] = [{}]
    elif len(ss_struct['settings']) == 0:
        ss_struct['settings'].append({})

    if form_id_string:
        ss_struct['settings'][0]['form_id'] = form_id_string

    # convert kobo-specific data structures into valid xlsform (e.g. score, rank)
    xlsform_ss_struct = convert_any_kobo_features_to_xlsform_survey_structure(ss_struct)
    valid_xlsform_csv_repr = pyxform_utils.convert_ss_structure_to_csv(xlsform_ss_struct)
    _set_necessary_permissions(request.user)
    (token, is_new) = Token.objects.get_or_create(user=request.user)
    headers = {u'Authorization':'Token ' + token.key}

    payload = {u'text_xls_form': valid_xlsform_csv_repr}
    try:
        url = kobocat_integration._kobocat_url('/api/v1/forms', internal=True)
        response = requests.post(url, headers=headers, data=payload)
        status_code = response.status_code
        resp = response.json()
    except Exception, e:
        resp = {'status_code': 504, 'detail': str(e)}
        status_code = 504