Exemplo 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
Exemplo 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]")
Exemplo 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("/")
Exemplo 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("/")
Exemplo 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]")
Exemplo n.º 6
0
def published_survey_draft_url(request, pk):
    try:
        survey_draft = SurveyDraft.objects.get(pk=pk, user=request.user)
    except SurveyDraft.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    username = survey_draft.user.name

    return HttpResponseRedirect(kobocat_integration._kobocat_url("/%s" % username))
Exemplo n.º 7
0
def published_survey_draft_url(request, pk):
    try:
        survey_draft = SurveyDraft.objects.get(pk=pk, user=request.user)
    except SurveyDraft.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    username = survey_draft.user.name

    return HttpResponseRedirect(kobocat_integration._kobocat_url("/%s" % username))
Exemplo n.º 8
0
def spa(request):
    context = RequestContext(request)
    page_kobo_configs = {
        u'kobocatServer': kobocat_integration._kobocat_url('/'),
        u'previewServer': settings.KOBOFORM_PREVIEW_SERVER,
        u'enketoServer': settings.ENKETO_SERVER,
        u'enketoPreviewUri': settings.ENKETO_PREVIEW_URI,
        }
    if request.user.is_authenticated():
        context['user_details'] = json.dumps({u'name': request.user.email,
                        u'gravatar': utils.gravatar_url(request.user.email),
                        u'debug': settings.DEBUG,
                        u'username': request.user.username})
    else:
        context['user_details'] = "{}"
    context['page_kobo_configs'] = json.dumps(page_kobo_configs)
    return render_to_response("index.html", context_instance=context)
Exemplo n.º 9
0
def spa(request):
    context = RequestContext(request)
    page_kobo_configs = {
        u'kobocatServer': kobocat_integration._kobocat_url('/'),
        u'previewServer': settings.KOBOFORM_PREVIEW_SERVER,
        u'enketoServer': settings.ENKETO_SERVER,
        u'enketoPreviewUri': settings.ENKETO_PREVIEW_URI,
        }
    if request.user.is_authenticated():
        context['user_details'] = json.dumps({u'name': request.user.email,
                        u'gravatar': utils.gravatar_url(request.user.email),
                        u'debug': settings.DEBUG,
                        u'username': request.user.username})
    else:
        context['user_details'] = "{}"
    context['page_kobo_configs'] = json.dumps(page_kobo_configs)
    return render_to_response("index.html", context_instance=context)
Exemplo n.º 10
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
Exemplo n.º 11
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
Exemplo n.º 12
0
def spa(request):
    context = RequestContext(request)
    page_kobo_configs = {
        u'kobocatServer': kobocat_integration._kobocat_url('/'),
        u'previewServer': settings.KOBOFORM_PREVIEW_SERVER,
        u'enketoServer': settings.ENKETO_SERVER,
        u'enketoPreviewUri': settings.ENKETO_PREVIEW_URI,
        }
    if request.user.is_authenticated():
        context['user_details'] = json.dumps({u'name': request.user.email,
                        u'gravatar': utils.gravatar_url(request.user.email),
                        u'debug': settings.DEBUG,
                        u'username': request.user.username})
    else:
        context['user_details'] = "{}"
    if settings.TRACKJS_TOKEN:
        context['trackjs_token'] = settings.TRACKJS_TOKEN
    if settings.GOOGLE_ANALYTICS_TOKEN:
        context['google_analytics_token'] = settings.GOOGLE_ANALYTICS_TOKEN
    if settings.LIVE_RELOAD:
        context['livereload_address'] = "http://%s:35729/livereload.js" % request.META['HTTP_HOST'].split(':')[0]
    context['DEBUG'] = settings.DEBUG
    context['page_kobo_configs'] = json.dumps(page_kobo_configs)
    return render_to_response("index.html", context_instance=context)
Exemplo n.º 13
0
        status_code = response.status_code
        resp = response.json()
    except Exception, e:
        resp = {'status_code': 504, 'detail': str(e)}
        status_code = 504

    if 'formid' in resp:
        survey_draft.kobocat_published_form_id = resp[u'formid']
        survey_draft.save()
        serializer = DetailSurveyDraftSerializer(survey_draft)
        resp.update({
            u'message':
            'Successfully published form',
            u'published_form_url':
            kobocat_integration._kobocat_url(
                '/%s/forms/%s' %
                (request.user.username, resp.get('id_string')))
        })

    return Response(resp, status=status_code)


def published_survey_draft_url(request, pk):
    try:
        survey_draft = SurveyDraft.objects.get(pk=pk, user=request.user)
    except SurveyDraft.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    username = survey_draft.user.name

    return HttpResponseRedirect(
Exemplo n.º 14
0
    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

    if 'formid' in resp:
        survey_draft.kobocat_published_form_id = resp[u'formid']
        survey_draft.save()
        serializer = DetailSurveyDraftSerializer(survey_draft)
        resp.update({
            u'message': 'Successfully published form',
            u'published_form_url': kobocat_integration._kobocat_url('/%s/forms/%s' % (request.user.username, resp.get('id_string')))
            })

    return Response(resp, status=status_code)

def published_survey_draft_url(request, pk):
    try:
        survey_draft = SurveyDraft.objects.get(pk=pk, user=request.user)
    except SurveyDraft.DoesNotExist:
        return Response(status=status.HTTP_404_NOT_FOUND)

    username = survey_draft.user.name

    return HttpResponseRedirect(kobocat_integration._kobocat_url("/%s" % username))