Beispiel #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}))
Beispiel #2
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')
Beispiel #3
0
def _get_slim_submission_paginated(request, project_uuid):
    dbm = get_database_manager(request.user)
    form_model = FormModel.get(dbm, project_uuid)
    length = int(request.GET.get('length', '10'))
    start = int(request.GET.get('start', '0'))
    search_text = request.GET.get('search_str')
    search_parameters = {}
    search_parameters.update({"start_result_number": start})
    search_parameters.update({"number_of_results": length})
    search_parameters.update({"filter": 'all'})
    search_parameters.update({"headers_for": 'all'})
    search_parameters.update(
        {'response_fields': ['ds_id', 'ds_name', 'date', 'status']})
    search_parameters.update({"sort_field": "date"})
    search_parameters.update({"order": "-"})
    search_filters = {
        "submissionDatePicker": "All Dates",
        "datasenderFilter": "",
        "search_text": search_text,
        "dateQuestionFilters": {},
        "uniqueIdFilters": {}
    }
    search_parameters.update({"search_filters": search_filters})
    search_parameters.update({"search_text": search_text})
    local_time_delta = get_country_time_delta('IN')
    search_results, query_fields = get_submissions_paginated(
        dbm, form_model, search_parameters, local_time_delta)
    submission_count_with_filters = get_submission_count(
        dbm, form_model, search_parameters, local_time_delta)
    submissions = SubmissionQueryResponseCreator(form_model, local_time_delta) \
                    .create_response(query_fields, search_results)
    return {
        'data': submissions,
        'headers': '',
        'total': submission_count_with_filters,
        'start': start,
        "search_count": len(submissions),
        'length': length
    }