def indicator(self): indicator_all = self.record.resultindicator_set.all() if indicator_all: self.add_field('result_indicator', []) self.add_field('result_indicator_measure', []) self.add_field('result_indicator_ascending', []) self.add_field('result_indicator_aggregation_status', []) self.add_field('result_indicator_title_narrative', []) self.add_field('result_indicator_description_narrative', []) for indicator in indicator_all: self.add_value_list( 'result_indicator', JSONRenderer().render( ResultIndicatorSerializer(indicator).data ).decode() ) self.add_value_list( 'result_indicator_measure', indicator.measure_id ) self.add_value_list( 'result_indicator_ascending', bool_string(indicator.ascending) ) self.add_value_list( 'result_indicator_aggregation_status', bool_string(indicator.aggregation_status) ) self.field_narrative( get_child_attr(indicator, 'resultindicatortitle'), 'result_indicator_title_narrative' ) self.field_narrative( get_child_attr(indicator, 'resultindicatordescription'), 'result_indicator_description_narrative' ) self.document_link( indicator.result_indicator_document_links.all(), prefix='result_indicator_document_link' ) self.reference( indicator.resultindicatorreference_set.all(), prefix='result_indicator_reference', is_indicator=True ) self.indicator_baseline(indicator) self.indicator_period(indicator)
def description(self): description = get_child_attr(self.record, 'resultdescription') if description: self.narrative(description, 'result_description', True) self.add_field('result_description_narrative', []) for narrative in description.narratives.all(): self.add_value_list('result_description_narrative', narrative.content)
def title(self): title = get_child_attr(self.record, 'resulttitle') if title: self.narrative(title, 'result_title', True) self.add_field('result_title_narrative', []) for narrative in title.narratives.all(): self.add_value_list('result_title_narrative', narrative.content)
def name(self): name = get_child_attr(self.record, 'name') if name: self.add_field( 'organisation_name', JSONRenderer().render( OrganisationNameSerializer(name).data).decode()) self.indexing['organisation_name_narrative_lang'], self.indexing[ 'organisation_name_narrative'] = get_narrative_lang_list(name)
def dataset_note(self): dataset_note = self.record self.add_field('id', dataset_note.id) self.add_field('iati_identifier', dataset_note.iati_identifier) self.add_field('exception_type', dataset_note.exception_type) self.add_field('model', dataset_note.model) self.add_field('field', dataset_note.field) self.add_field('message', dataset_note.message) self.add_field('line_number', dataset_note.line_number) self.add_field('variable', dataset_note.variable) self.add_field( 'publisher_iati_id', get_child_attr(dataset_note, '.dataset.publisher.publisher_iati_id')) self.add_field('publisher_name', get_child_attr(dataset_note, '.dataset.publisher.name')) self.add_field( 'publisher_name', get_child_attr(dataset_note, '.dataset.publisher.display_name'))
def dataset_publisher(self): publisher = get_child_attr(self.record, 'publisher') if publisher: self.add_field( 'publisher', JSONRenderer().render( PublisherSerializer(fields=[ 'iati_id', 'publisher_iati_id', 'display_name', 'name', 'activity_count' ], instance=publisher).data).decode()) self.add_field('publisher_iati_id', publisher.publisher_iati_id) self.add_field('publisher_name', publisher.name) self.add_field('publisher_display_name', publisher.display_name)
def result(self): self.add_field('id', self.record.id) self.add_field('iati_identifier', self.record.activity.iati_identifier) self.add_field( 'humanitarian', bool_string(get_child_attr(self.record, 'activity.humanitarian'))) add_reporting_org(self, self.record.activity) self.title() self.description() self.document_link(self.record.documentlink_set.all()) self.reference(self.record.resultreference_set.all()) self.indicator()
def indicator_baseline(self, indicator): baseline_all = indicator.resultindicatorbaseline_set.all() if baseline_all: if 'result_indicator_baseline_year' not in self.indexing: self.add_field('result_indicator_baseline_year', []) self.add_field('result_indicator_baseline_iso_date', []) self.add_field('result_indicator_baseline_value', []) self.add_field('result_indicator_baseline_location_ref', []) self.add_field('result_indicator_baseline_dimension_name', []) self.add_field('result_indicator_baseline_dimension_value', []) self.add_field('result_indicator_baseline_comment_narrative', []) for baseline in baseline_all: self.add_value_list('result_indicator_baseline_year', baseline.year) self.add_value_list('result_indicator_baseline_iso_date', value_string(baseline.iso_date)) self.add_value_list('result_indicator_baseline_value', baseline.value) for location in baseline.location_set.all(): self.add_value_list( 'result_indicator_baseline_location_ref', location.ref) for dimension in \ baseline.resultindicatorbaselinedimension_set.all(): self.add_value_list( 'result_indicator_baseline_dimension_name', dimension.name) self.add_value_list( 'result_indicator_baseline_dimension_value', dimension.value) comment = get_child_attr(baseline, 'resultindicatorbaselinecomment') if comment: for narrative in comment.narratives.all(): self.add_value_list( 'result_indicator_baseline_comment_narrative', narrative.content) self.document_link( baseline.baseline_document_links.all(), prefix='result_indicator_baseline_document_link')
def transaction(self): transaction = self.record self.add_field('id', transaction.id) self.add_field('iati_identifier', transaction.activity.iati_identifier) if get_child_attr(transaction, 'activity.title'): self.indexing['title_lang'], self.indexing['title_narrative'] = \ get_narrative_lang_list(transaction.activity.title) self.add_field('activity_description_type', []) self.add_field('activity_description_narrative', []) for description in transaction.activity.description_set.all(): self.add_value_list('activity_description_type', description.type_id) for narrative in description.narratives.all(): self.add_value_list('activity_description_narrative', narrative.content) self.add_field('activity_date_type', []) self.add_field('activity_date_iso_date', []) add_reporting_org(self, transaction.activity) recipient_country_all = transaction.activity.\ activityrecipientcountry_set.all() if recipient_country_all: self.add_field('activity_recipient_country_code', []) self.add_field('activity_recipient_country_name', []) for recipient_country in recipient_country_all: self.add_value_list('activity_recipient_country_code', recipient_country.country.code) self.add_value_list('activity_recipient_country_name', recipient_country.country.name) recipient_region_all = transaction.activity.\ activityrecipientregion_set.all() if recipient_region_all: self.add_field('activity_recipient_region_code', []) self.add_field('activity_recipient_region_name', []) for recipient_region in recipient_region_all: self.add_value_list('activity_recipient_region_code', recipient_region.region.code) self.add_value_list('activity_recipient_region_name', recipient_region.region.name) if get_child_attr(transaction, 'description'): self.indexing['transaction_description_lang'], self.indexing[ 'transaction_description_narrative'] = \ get_narrative_lang_list(transaction.description) self.add_field('transaction_ref', transaction.ref) self.add_field('transaction_humanitarian', bool_string(transaction.humanitarian)) self.add_field('transaction_type', transaction.transaction_type_id) self.add_field('transaction_date_iso_date', str(transaction.transaction_date)) self.add_field('transaction_date_iso_date_f', date_string(transaction.transaction_date)) self.add_field('transaction_value_currency', transaction.currency_id) self.add_field('transaction_value_date', date_string(transaction.value_date)) self.add_field('transaction_value', decimal_string(transaction.value)) self.add_field('transaction_value_usd', decimal_string(transaction.usd_value)) self.add_field('transaction_imf_link', transaction.imf_url) self.add_field('transaction_usd_conversion_rate', decimal_string(transaction.usd_exchange_rate)) self.add_field( 'transaction_provider_org_provider_activity_id', get_child_attr(transaction, 'provider_organisation.provider_activity_ref')) self.add_field( 'transaction_provider_org_type', get_child_attr(transaction, 'provider_organisation.type_id')) self.add_field( 'transaction_provider_org_ref', get_child_attr(transaction, 'provider_organisation.ref')) provider_organisation = getattr(transaction, 'provider_organisation', None) if provider_organisation: narrative = provider_organisation.narratives.first() if narrative: self.add_field('transaction_provider_org_narrative', narrative.content) self.add_field('transaction_provider_org_narrative_text', narrative.content) self.add_field('transaction_provider_org_narrative_lang', narrative.language_id) self.add_field( 'transaction_receiver_org_receiver_activity_id', get_child_attr(transaction, 'receiver_organisation.receiver_activity_ref')) self.add_field( 'transaction_receiver_org_type', get_child_attr(transaction, 'receiver_organisation.type_id')) self.add_field( 'transaction_receiver_org_ref', get_child_attr(transaction, 'receiver_organisation.ref')) self.add_field('transaction_receiver_org_narrative', []) self.add_field('transaction_receiver_org_narrative_lang', []) self.add_field('transaction_receiver_org_narrative_text', []) receiver_organisation = getattr(transaction, 'receiver_organisation', None) if receiver_organisation: for narrative in receiver_organisation.narratives.all(): self.add_value_list('transaction_receiver_org_narrative', narrative.content) self.add_value_list('transaction_receiver_org_narrative_text', narrative.content) self.add_value_list('transaction_receiver_org_narrative_lang', narrative.language_id) self.add_field('transaction_disbursement_channel_code', transaction.disbursement_channel_id) self.add_field('transaction_sector_vocabulary', []) self.add_field('transaction_sector_vocabulary_uri', []) self.add_field('transaction_sector_code', []) for sector in transaction.transactionsector_set.all(): self.add_value_list('transaction_sector_vocabulary', sector.vocabulary_id) self.add_value_list('transaction_sector_vocabulary_uri', sector.vocabulary_uri) self.add_value_list('transaction_sector_code', sector.sector.code) self.add_field( 'transaction_recipient_country_code', get_child_attr(transaction, 'transaction_recipient_country.country_id')) self.add_field( 'transaction_recipient_region_code', get_child_attr(transaction, 'transaction_recipient_region.region_id')) self.add_field( 'transaction_recipient_region_vocabulary', get_child_attr(transaction, 'transaction_recipient_region.vocabulary_id')) self.add_field('transaction_flow_type_code', transaction.flow_type_id) self.add_field('transaction_finance_type_code', transaction.finance_type_id) self.add_field('transaction_aid_type_code', []) self.add_field('transaction_aid_type_vocabulary', []) for transaction_aid_type in transaction.transactionaidtype_set.all(): self.add_value_list('transaction_aid_type_code', transaction_aid_type.aid_type.code) self.add_value_list('transaction_aid_type_vocabulary', transaction_aid_type.aid_type.vocabulary_id) self.add_field('transaction_tied_status_code', transaction.tied_status_id) self.add_field( 'humanitarian', bool_string(get_child_attr(transaction, 'activity.humanitarian'))) self.add_field('activity_sector_vocabulary', []) self.add_field('activity_sector_code', []) for activity_sector in transaction.activity.activitysector_set.all(): self.add_value_list('activity_sector_vocabulary', activity_sector.vocabulary_id) self.add_value_list('activity_sector_code', activity_sector.sector.code)
def transaction(self): transaction = self.record self.add_field('id', transaction.id) self.add_field('iati_identifier', transaction.activity.iati_identifier) self.indexing['title_lang'], self.indexing['title_narrative'] = \ get_narrative_lang_list(transaction.activity.title) self.add_field('description_type', []) self.add_field('description_lang', []) self.add_field('description_narrative', []) for description in transaction.activity.description_set.all(): self.add_value_list('description_type', description.type_id) for narrative in description.narratives.all(): self.add_value_list('description_narrative', narrative.content) self.add_value_list('description_lang', narrative.language_id) self.add_field('activity_date_type', []) self.add_field('activity_date_iso_date', []) add_reporting_org(self, transaction.activity) self.add_field('transaction_ref', transaction.ref) self.add_field('transaction_humanitarian', bool_string(transaction.humanitarian)) self.add_field('transaction_type', transaction.transaction_type_id) self.add_field('transaction_date_iso_date', date_string(transaction.transaction_date)) self.add_field('transaction_value_currency', transaction.currency_id) self.add_field('transaction_value_date', date_string(transaction.value_date)) self.add_field('transaction_value', decimal_string(transaction.value)) self.add_field( 'transaction_provider_org_provider_activity_id', get_child_attr(transaction, 'provider_organisation.provider_activity_ref')) self.add_field( 'transaction_provider_org_type', get_child_attr(transaction, 'provider_organisation.type_id')) self.add_field( 'transaction_provider_org_ref', get_child_attr(transaction, 'provider_organisation.ref')) provider_organisation = getattr(transaction, 'provider_organisation', None) if provider_organisation: narrative = provider_organisation.narratives.first() if narrative: self.add_field('transaction_provider_org_narrative', narrative.content) self.add_field('transaction_provider_org_narrative_text', narrative.content) self.add_field('transaction_provider_org_narrative_lang', narrative.language_id) self.add_field( 'transaction_receiver_org_receiver_activity_id', get_child_attr(transaction, 'receiver_organisation.receiver_activity_ref')) self.add_field( 'transaction_receiver_org_type', get_child_attr(transaction, 'receiver_organisation.type_id')) self.add_field( 'transaction_receiver_org_ref', get_child_attr(transaction, 'receiver_organisation.ref')) self.add_field('transaction_receiver_org_narrative', []) self.add_field('transaction_receiver_org_narrative_lang', []) self.add_field('transaction_receiver_org_narrative_text', []) receiver_organisation = getattr(transaction, 'receiver_organisation', None) if receiver_organisation: for narrative in receiver_organisation.narratives.all(): self.add_value_list('transaction_receiver_org_narrative', narrative.content) self.add_value_list('transaction_receiver_org_narrative_text', narrative.content) self.add_value_list('transaction_receiver_org_narrative_lang', narrative.language_id) self.add_field('transaction_disburstment_channel_code', transaction.disbursement_channel_id) self.add_field('transaction_sector_vocabulary', []) self.add_field('transaction_sector_vocabulary_uri', []) self.add_field('transaction_sector_code', []) for transaction_sector in transaction.transactionsector_set.all(): self.add_value_list('transaction_sector_vocabulary', transaction_sector.vocabulary_id) self.add_value_list('transaction_sector_vocabulary_uri', transaction_sector.vocabulary_uri) self.add_value_list('transaction_sector_code', transaction_sector.sector_id) self.add_field( 'transaction_recipient_country_code', get_child_attr(transaction, 'transaction_recipient_region.region_id')) self.add_field( 'transaction_recipient_region_code', get_child_attr(transaction, 'transaction_recipient_region.region_id')) self.add_field( 'transaction_recipient_region_vocabulary', get_child_attr(transaction, 'transaction_recipient_region.vocabulary_id')) self.add_field('transaction_flow_type_code', transaction.flow_type_id) self.add_field('transaction_finance_type_code', transaction.finance_type_id) self.add_field('transaction_aid_type_code', []) self.add_field('transaction_aid_type_vocabulary', []) for transaction_aid_type in transaction.transactionaidtype_set.all(): self.add_value_list('transaction_aid_type_code', transaction_aid_type.aid_type.code) self.add_value_list('transaction_aid_type_vocabulary', transaction_aid_type.aid_type.vocabulary_id) self.add_field('transaction_tied_status_code', transaction.tied_status_id) self.add_field( 'humanitarian', bool_string(get_child_attr(transaction, 'activity.humanitarian'))) self.add_field('sector', []) self.add_field('sector_vocabulary', []) self.add_field('sector_vocabulary_uri', []) self.add_field('sector_code', []) self.add_field('sector_percentage', []) self.add_field('sector_narrative', []) for activity_sector in transaction.activity.activitysector_set.all(): self.add_value_list( 'sector', JSONRenderer().render( ActivitySectorSerializer(activity_sector).data).decode()) self.add_value_list('sector_vocabulary', activity_sector.vocabulary_id) self.add_value_list('sector_vocabulary_uri', activity_sector.vocabulary_uri) self.add_value_list('sector_code', activity_sector.sector_id) self.add_value_list('sector_percentage', decimal_string(activity_sector.percentage)) for narrative in activity_sector.narratives.all(): self.add_value_list('sector_narrative', narrative.content)
def add_activity_additional_filter_fields(serializer, activity): serializer.add_field('activity_scope_code', activity.scope_id) serializer.add_field('activity_status_code', activity.activity_status_id) serializer.add_field('collaboration_type_code', activity.collaboration_type_id) serializer.add_field('default_currency', activity.default_currency_id) serializer.add_field('default_finance_type_code', activity.default_finance_type_id) serializer.add_field('default_lang', activity.default_lang_id) serializer.add_field('default_flow_type_code', activity.default_flow_type_id) serializer.add_field('default_tied_status_code', activity.default_tied_status_id) serializer.add_field('hierarchy', value_string(activity.hierarchy)) serializer.add_field('default_humanitarian', bool_string(activity.humanitarian)) serializer.add_field('dataset_iati_version', activity.iati_standard_version_id) # default-aid-type default_aid_type_all = activity.default_aid_types.all() if default_aid_type_all: serializer.add_field('default_aid_type_code', []) serializer.add_field('default_aid_type_vocabulary', []) serializer.add_field('default_aid_type_category_code', []) for default_aid_type in default_aid_type_all: serializer.add_value_list( 'default_aid_type_code', get_child_attr(default_aid_type, 'aid_type.code')) serializer.add_value_list( 'default_aid_type_vocabulary', get_child_attr(default_aid_type, 'aid_type.vocabulary.code')) serializer.add_value_list( 'default_aid_type_category_code', get_child_attr(default_aid_type, 'aid_type.category.code')) # document-link-category-code # we want to get only activity/document-link not other document-links document_link_all = activity.documentlink_set.filter( result_id__isnull=True, result_indicator_id__isnull=True, result_indicator_baseline_id__isnull=True, result_indicator_period_actual_id__isnull=True, result_indicator_period_target_id__isnull=True) if document_link_all: serializer.add_field('document_link_category_code', []) for document_link in document_link_all: for document_link_category in \ document_link.documentlinkcategory_set.all(): serializer.add_value_list('document_link_category_code', document_link_category.category_id) # humanitarian scope humanitarian_scope_all = activity.humanitarianscope_set.all() if humanitarian_scope_all: serializer.add_field('humanitarian_scope_type', []) serializer.add_field('humanitarian_scope_vocabulary', []) for humanitarian_scope in humanitarian_scope_all: serializer.add_value_list('humanitarian_scope_type', humanitarian_scope.type_id) serializer.add_value_list('humanitarian_scope_vocabulary', humanitarian_scope.vocabulary_id) # other-identifier other_identifier_all = activity.otheridentifier_set.all() if other_identifier_all: serializer.add_field('other_identifier_type', []) for other_identifier in other_identifier_all: serializer.add_value_list('other_identifier_type', other_identifier.type_id) # policy-marker policy_marker_all = activity.activitypolicymarker_set.all() if policy_marker_all: serializer.add_field('policy_marker_code', []) for policy_marker in policy_marker_all: serializer.add_value_list('policy_marker_code', policy_marker.code_id) # tag tag_all = activity.activitytag_set.all() if tag_all: serializer.add_field('tag_code', []) serializer.add_field('tag_vocabulary', []) for tag in tag_all: serializer.add_value_list('tag_code', tag.code) serializer.add_value_list('tag_vocabulary', tag.vocabulary_id)