Exemplo n.º 1
0
def get_registered_datasender_count(dbm, questionnaire_name):
    es = Elasticsearch(hosts=[{"host": ELASTIC_SEARCH_HOST, "port": ELASTIC_SEARCH_PORT}])
    search = Search(using=es, index=dbm.database_name, doc_type='reporter')
    search = search.query("term", projects_value=lowercase_and_strip_accents(questionnaire_name))
    search = search.query("term", void=False)
    body = search.to_dict()
    return es.search(index=dbm.database_name, doc_type='reporter', body=body, search_type='count')['hits']['total']
Exemplo n.º 2
0
def _add_project_filter(search, search_filter_param):
    project_name = search_filter_param.get('project_name')
    if project_name:
        search = search.filter(
            "term", projects_value=lowercase_and_strip_accents(project_name))
    projects_name = search_filter_param.get('projects')
    if projects_name:
        search = search.filter("terms", projects_value=projects_name)
    return search
Exemplo n.º 3
0
 def _get_mobile_numbers_for_registered_data_senders(self, dbm, request):
     if request.POST['recipient'] == 'linked':
         questionnaire_names = map(
             lambda item: lowercase_and_strip_accents(item),
             json.loads(request.POST['questionnaire-names']))
         mobile_numbers = self._mobile_numbers_for_questionnaire(
             dbm, questionnaire_names)
         return mobile_numbers
     else:
         return []
Exemplo n.º 4
0
def _get_contact_details_for_questionnaire(dbm, failed_numbers, request):
    questionnaire_names = map(lambda item: lowercase_and_strip_accents(item),
                              json.loads(request.POST['questionnaire-names']))
    search_parameters = {
        'void': False,
        'search_filters': {
            'projects': questionnaire_names
        }
    }
    mobile_numbers, contact_display_list, short_codes = _get_all_contacts_details_with_mobile_number(
        dbm, search_parameters, failed_numbers)
    return contact_display_list, mobile_numbers, short_codes
Exemplo n.º 5
0
 def get_contact_details(self, dbm, request):
     questionnaire_names = map(
         lambda item: lowercase_and_strip_accents(item),
         json.loads(request.POST['questionnaire-names']))
     search_parameters = {
         'void': False,
         'search_filters': {
             'projects': questionnaire_names
         }
     }
     mobile_numbers, contact_display_list = _get_all_contacts_details(
         dbm, search_parameters)
     return mobile_numbers, contact_display_list
Exemplo n.º 6
0
def _associate_data_senders_to_questionnaire(manager, questionnaire, selected_option):
    data_senders_list = []
    if selected_option.get('option') == 'questionnaire_linked':
        questionnaire_names = map(lambda item: lowercase_and_strip_accents(item), selected_option.get('questionnaire_names'))
        data_senders_list = get_datasenders_ids_by_questionnaire_names(manager, questionnaire_names)
        questionnaire.associate_data_sender_to_project(manager, data_senders_list)

    elif selected_option.get('option') == 'group':
        group_names = selected_option.get('group_names')
        data_senders_list = get_datasender_ids_by_group_names(manager, group_names)
        questionnaire.associate_data_sender_to_project(manager, data_senders_list)

    elif selected_option.get('option') == 'broadcast':
        questionnaire.is_open_survey = True
Exemplo n.º 7
0
    def post(self, request, project_name, *args, **kwargs):
        user = request.user
        manager = get_database_manager(user)
        project_name_unquoted = lowercase_and_strip_accents(
            unquote(project_name))
        search_parameters = {}
        search_filters = {}
        search_text = lower(request.POST.get('sSearch', '').strip())
        search_filters.update({"search_text": search_text})
        search_parameters.update(
            {"start_result_number": int(request.POST.get('iDisplayStart'))})
        search_parameters.update(
            {"number_of_results": int(request.POST.get('iDisplayLength'))})
        search_parameters.update({
            "sort_field":
            DATASENDER_DISPLAY_FIELD_ORDER[int(request.POST.get('iSortCol_0'))
                                           - 1]
        })
        search_parameters.update(
            {"order": "-" if request.POST.get('sSortDir_0') == "desc" else ""})
        search_filters.update({"project_name": project_name_unquoted})
        search_parameters.update({"search_filters": search_filters})

        query_fields, search_results = get_data_sender_search_results(
            manager, search_parameters)
        total_count = get_data_sender_without_search_filters_count(
            manager, search_parameters)
        filtered_count = get_data_sender_count(manager, search_parameters)
        query_fields.remove('projects')
        datasenders = DatasenderQueryResponseCreator().create_response(
            search_results, show_projects=False)

        return HttpResponse(jsonpickle.encode(
            {
                'data': datasenders,
                'iTotalDisplayRecords': filtered_count,
                'iDisplayStart': int(request.POST.get('iDisplayStart')),
                "iTotalRecords": total_count,
                'iDisplayLength': int(request.POST.get('iDisplayLength'))
            },
            unpicklable=False),
                            content_type='application/json')