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
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]")
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("/")
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))
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)
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
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
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)
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(
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))