Source code for greenlang.calculations.sfdr.pai_carbon_footprint
""" carbon_footprint """
import logging
from fingreen_web.models import CollectionItem
logger = logging.getLogger(__name__)
[docs]
class CarbonFootprint(): #pylint: disable=[invalid-name, too-few-public-methods]
""" carbon_footprint """
[docs]
def impact(self, collections, assets, invest_value_tot, period): # pylint: disable=[unused-argument]
""" Compute carbon_footprint
Formula ???
Args:
- assets
Returns:
- share_t
"""
value_t = 0
for asset in assets:
# Get spcope 1, 2, 3 ghg emissions
#collection = Collection.objects.get(company=asset.company)
collection = collections.filter(company=asset.company, collection_type='metrics')[0]
collection_items_ghg_1 = CollectionItem.objects.get(collection=collection,
template__name='ghg_scope_1_tonnes')
collection_items_ghg_2 = CollectionItem.objects.get(collection=collection,
template__name='ghg_scope_2_tonnes')
collection_items_ghg_3 = CollectionItem.objects.get(collection=collection,
template__name='ghg_scope_3_tonnes')
if collection_items_ghg_1.value_pint is None:
collection_items_ghg_1.value_pint = 0
if collection_items_ghg_2.value_pint is None:
collection_items_ghg_2.value_pint = 0
if collection_items_ghg_3.value_pint is None:
collection_items_ghg_3.value_pint = 0
ghg_tot = (collection_items_ghg_1.value_pint
+ collection_items_ghg_2.value_pint
+ collection_items_ghg_3.value_pint)
value_i = asset.shares_pct * ghg_tot / 100
value_t = value_t + value_i
value_t = value_t / invest_value_tot * 1000000
value_t = round(value_t, 2)
return f'{value_t:g}'