Source code for akvo.iati.exports.org_elements.recipient_region_budget

# -*- coding: utf-8 -*-

# Akvo RSR is covered by the GNU Affero General Public License.
# See more details in the license.txt file located at the root folder of the Akvo RSR module.
# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >.

from lxml import etree


[docs]def recipient_region_budget(organisation, *_): """ Generate the recipient-region-budget elements. :param organisation: Organisation object :param _: Additional context (not used) :return: A list of Etree elements """ recipient_region_budget_elements = [] for region_budget in organisation.recipient_region_budgets.all(): if region_budget.value or region_budget.value == 0 or region_budget.period_start or \ region_budget.period_end or region_budget.status or region_budget.region: element = etree.Element("recipient-region-budget") if region_budget.status: element.attrib['status'] = region_budget.status if region_budget.region: recipient_region_element = etree.SubElement(element, "recipient-region") recipient_region_element.attrib['code'] = region_budget.region if region_budget.region_vocabulary: recipient_region_element.attrib['vocabulary'] = region_budget.region_vocabulary if region_budget.region_vocabulary_uri: recipient_region_element.attrib['vocabulary-uri'] = \ region_budget.region_vocabulary_uri if region_budget.text: narrative_element = etree.SubElement(recipient_region_element, "narrative") narrative_element.text = region_budget.text if region_budget.period_start: period_start_element = etree.SubElement(element, "period-start") period_start_element.attrib['iso-date'] = str(region_budget.period_start) if region_budget.period_end: period_end_element = etree.SubElement(element, "period-end") period_end_element.attrib['iso-date'] = str(region_budget.period_end) if region_budget.value == 0 or region_budget.value: value_element = etree.SubElement(element, "value") value_element.text = str(region_budget.value) if region_budget.value_date: value_element.attrib['value-date'] = str(region_budget.value_date) if region_budget.currency: value_element.attrib['currency'] = region_budget.currency for budget_line in region_budget.budget_lines.all(): if budget_line.reference or budget_line.value or budget_line.value == 0 or \ budget_line.text: budget_line_element = etree.SubElement(element, "budget-line") if budget_line.reference: budget_line_element.attrib['ref'] = budget_line.reference if budget_line.value or budget_line.value == 0: budget_line_value_element = etree.SubElement(budget_line_element, "value") budget_line_value_element.text = str(budget_line.value) if budget_line.currency: budget_line_value_element.attrib['currency'] = budget_line.currency if budget_line.value_date: budget_line_value_element.attrib['value-date'] = \ str(budget_line.value_date) if budget_line.text: budget_line_narrative_element = etree.SubElement(budget_line_element, "narrative") budget_line_narrative_element.text = str(budget_line.text) recipient_region_budget_elements.append(element) return recipient_region_budget_elements