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 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