def export_count(request): if request.method == 'GET': return HttpResponse(status=405) submission_type = request.GET.get(u'type') post_body = json.loads(request.POST['data']) search_filters = post_body['search_filters'] questionnaire_code = post_body['questionnaire_code'] manager = get_database_manager(request.user) questionnaire = get_project_by_code(manager, questionnaire_code) organization = get_organization(request) local_time_delta = get_country_time_delta(organization.country) # the number_of_results limit will not be used for result-set size since scan-scroll api does not support it. # it is specified since the code-flow requires its value to be present query_params = { "search_filters": search_filters, "start_result_number": 0, "number_of_results": 4000, "order": "", "sort_field": "date" } search_text = search_filters.get("search_text", '') query_params.update({"search_text": search_text}) query_params.update({"filter": submission_type}) submission_count = get_submission_count(manager, questionnaire, query_params, local_time_delta) return HttpResponse(mimetype='application/json', content=json.dumps({"count": submission_count}))
def get_stats(request, form_code): dbm = get_database_manager(request.user) questionnaire = get_project_by_code(dbm, form_code) search_parameters = {} search_parameters.update({"start_result_number": 0}) search_parameters.update({"number_of_results": 0}) filter_type = "success" search_parameters.update({"filter": filter_type}) search_parameters.update({"sort_field": "ds_id"}) search_parameters.update( {"order": "-" if request.POST.get('sSortDir_0') == "desc" else ""}) search_filters = json.loads(request.POST.get('search_filters')) search_parameters.update({"search_filters": search_filters}) search_text = search_filters.get("search_text", '') search_parameters.update({"search_text": search_text}) organization = get_organization(request) local_time_delta = get_country_time_delta(organization.country) # total success submission count irrespective of current fields being present or not facet_results, total_submissions = get_facets_for_choice_fields( dbm, questionnaire, search_parameters, local_time_delta) return HttpResponse(json.dumps({ 'result': create_statistics_response(facet_results, questionnaire), 'total': total_submissions }), content_type='application/json')
def _get_all_criterias_from_request(request, form_code): dbm = get_database_manager(request.user) questionnaire = get_project_by_code(dbm, form_code) organization = get_organization(request) local_time_delta = get_country_time_delta(organization.country) pagination_params = _get_pagination_params(request) sort_params = _get_sorting_params(request) search_parameters = _get_search_params(request) return dbm, questionnaire, pagination_params, \ local_time_delta, sort_params, search_parameters
def headers(request, form_code): manager = get_database_manager(request.user) questionnaire = get_project_by_code(manager, form_code) submission_type = request.GET.get('type', 'all') headers = SubmissionsPageHeader(questionnaire, submission_type).get_column_title() response = [] for header in headers: response.append({"sTitle": ugettext(header)}) return HttpResponse(encode_json(response))
def export(request): if request.method == 'GET': # To handle django error #3480 return HttpResponse(status=405) search_filters = json.loads(request.POST.get('search_filters')) questionnaire_code = request.POST.get(u'questionnaire_code') manager = get_database_manager(request.user) questionnaire = get_project_by_code(manager, questionnaire_code) return _create_export_artifact(questionnaire, manager, request, search_filters)
def analysis_user_preferences(request, form_code): manager = get_database_manager(request.user) questionnaire = get_project_by_code(manager, form_code) if request.method == 'POST': preferences_submitted = request.POST.iterlists() preferences_to_save = { key: 'True' in value for key, value in preferences_submitted } save_analysis_field_preferences(manager, request.user.id, questionnaire, preferences_to_save) return HttpResponse() preferences = get_analysis_field_preferences(manager, request.user.id, questionnaire, ugettext) return HttpResponse(encode_json(preferences), content_type='application/json')
def get_submissions(request, form_code): dbm = get_database_manager(request.user) questionnaire = get_project_by_code(dbm, form_code) search_parameters = {} search_parameters.update( {"start_result_number": int(request.POST.get('iDisplayStart'))}) search_parameters.update( {"number_of_results": int(request.POST.get('iDisplayLength'))}) filter_type = request.GET['type'] search_parameters.update({"filter": filter_type}) search_parameters.update({ "sort_field": _get_field_to_sort_on(request.POST, questionnaire, filter_type) }) search_parameters.update( {"order": "-" if request.POST.get('sSortDir_0') == "desc" else ""}) search_filters = json.loads(request.POST.get('search_filters')) search_parameters.update({"search_filters": search_filters}) search_text = search_filters.get("search_text", '') search_parameters.update({"search_text": search_text}) organization = get_organization(request) local_time_delta = get_country_time_delta(organization.country) search_results, query_fields = get_submissions_paginated( dbm, questionnaire, search_parameters, local_time_delta) submission_count_with_filters = get_submission_count( dbm, questionnaire, search_parameters, local_time_delta) submission_count_without_filters = get_submissions_without_user_filters_count( dbm, questionnaire, search_parameters) submissions = SubmissionQueryResponseCreator( questionnaire, local_time_delta).create_response(query_fields, search_results) return HttpResponse(jsonpickle.encode( { 'data': submissions, 'iTotalDisplayRecords': submission_count_with_filters, 'iDisplayStart': int(request.POST.get('iDisplayStart')), "iTotalRecords": submission_count_without_filters, 'iDisplayLength': int(request.POST.get('iDisplayLength')) }, unpicklable=False), content_type='application/json')