def _append_to_submission(self, entity_question_codes, fieldset_fields, image_fields, language, media_field_codes, meta_fields, required_field_names, res, submission): for key in required_field_names: if key not in meta_fields: if key in entity_question_codes: self.combine_name_and_id(short_code=safe_getattr( res, es_unique_id_code_field_name(key)), entity_name=safe_getattr( res, key), submission=submission) elif key == SubmissionIndexConstants.DATASENDER_NAME_KEY: self._populate_datasender(res, submission) elif key == 'status': submission.append(ugettext(safe_getattr(res, key))) elif key == SubmissionIndexConstants.SUBMISSION_DATE_KEY: self._convert_to_localized_date_time(key, res, submission) elif key == 'error_msg': self._populate_error_message(key, language, res, submission) elif key in fieldset_fields.keys(): submission.append( format_fieldset_values_for_representation( safe_getattr(res, key), fieldset_fields.get(key), submission[0])) else: submission.append( self._append_if_attachments_are_present( res, key, media_field_codes, image_fields, submission[0]))
def _append_if_attachments_are_present(self, res, key, media_field_codes, image_fields, submission_id): if self.form_model.is_media_type_fields_present and key in media_field_codes: if key in image_fields: return _format_media_value(submission_id, safe_getattr(res, key), thumbnail_flag=True) else: return _format_media_value(submission_id, safe_getattr(res, key)) else: temp_dict = {code.replace(".", " "):res[code] for code in res} return temp_dict.get(ugettext(key))
def _populate_datasender(self, res, submission): if safe_getattr(res, SubmissionIndexConstants.DATASENDER_ID_KEY) == u'N/A': submission.append( safe_getattr(res, SubmissionIndexConstants.DATASENDER_NAME_KEY)) else: self.combine_name_and_id( safe_getattr(res, SubmissionIndexConstants.DATASENDER_ID_KEY), safe_getattr(res, SubmissionIndexConstants.DATASENDER_NAME_KEY), submission)
def _get_all_contacts_details(dbm, search_parameters): search_parameters['response_fields'] = [ 'short_code', 'name', 'mobile_number' ] search_results = get_all_datasenders_search_results(dbm, search_parameters) mobile_numbers, contact_display_list = [], [] for entry in search_results.hits: mobile_numbers.append(safe_getattr(entry, 'mobile_number')[0]) display_prefix = safe_getattr(entry, 'name')[0] if safe_getattr( entry, 'name') else safe_getattr(entry, 'mobile_number')[0] short_code = (safe_getattr(entry, 'short_code')[0]) contact_display_list.append("%s (%s)" % (display_prefix, short_code)) return mobile_numbers, contact_display_list
def get_all_data_sender_mobile_numbers(dbm): all_data_senders_count = get_all_data_senders_count(dbm) search_parameters = { "response_fields": ['mobile_number'], "number_of_results": all_data_senders_count, "start_result_number": 0 } es = Elasticsearch(hosts=[{ "host": ELASTIC_SEARCH_HOST, "port": ELASTIC_SEARCH_PORT }]) search = Search(using=es, index=dbm.database_name, doc_type=REPORTER_DOC_TYPE) search = _add_non_contact_filter(search) search = _add_non_deleted_ds_filter(search) search = _restrict_test_ds_filter(search) search = _add_pagination_criteria(search_parameters, search) search = _add_response_fields(search_parameters, search) search_results = search.execute() return [ safe_getattr(item, 'mobile_number')[0] for item in search_results.hits ]
def _convert_to_localized_date_time(self, key, res, submission): submission_date_time = datetime.datetime.strptime( safe_getattr(res, key), "%b. %d, %Y, %I:%M %p") datetime_local = convert_utc_to_localized(self.localized_time_delta, submission_date_time) submission.append(datetime_local.strftime("%b. %d, %Y, %H:%M"))
def _populate_error_message(self, key, language, res, submission): error_msg = safe_getattr(res, key) if error_msg.find('| |') != -1: error_msg = error_msg.split('| |,')[['en', 'fr'].index(language)] submission.append(error_msg)
def get_all_datasenders_short_codes(dbm, search_parameters): search_parameters['response_fields'] = ['short_code'] search_results = get_all_datasenders_search_results(dbm, search_parameters) return [ safe_getattr(item, 'short_code')[0] for item in search_results.hits ]
def _get_all_contacts_mobile_numbers(dbm, search_parameters): search_parameters['response_fields'] = ['mobile_number'] search_results = get_all_datasenders_search_results(dbm, search_parameters) return [ safe_getattr(item, 'mobile_number')[0] for item in search_results.hits ]