Esempio n. 1
0
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}))
Esempio n. 2
0
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')
Esempio n. 3
0
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
Esempio n. 4
0
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))
Esempio n. 5
0
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)
Esempio n. 6
0
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')
Esempio n. 7
0
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')