# -*- 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 rest_framework import serializers
from akvo.rest.serializers.rsr_serializer import BaseRSRSerializer
from akvo.rsr.models import IndicatorPeriodDisaggregation
from akvo.utils import ensure_decimal, maybe_decimal
[docs]class IndicatorPeriodDisaggregationLiteSerializer(BaseRSRSerializer):
dimension_name = serializers.SerializerMethodField()
dimension_value = serializers.SerializerMethodField()
[docs] def get_dimension_name(self, obj):
return {'id': obj.dimension_value.name.pk, 'name': obj.dimension_value.name.name}
[docs] def get_dimension_value(self, obj):
return {'id': obj.dimension_value.pk, 'value': obj.dimension_value.value}
[docs]class IndicatorPeriodDisaggregationReadOnlySerializer(BaseRSRSerializer):
category = serializers.ReadOnlyField(source='dimension_value.name.name')
category_id = serializers.ReadOnlyField(source='dimension_value.name.id')
type = serializers.ReadOnlyField(source='dimension_value.value')
type_id = serializers.ReadOnlyField(source='dimension_value.id')
value = serializers.SerializerMethodField()
numerator = serializers.SerializerMethodField()
denominator = serializers.SerializerMethodField()
[docs] def get_value(self, obj):
return ensure_decimal(obj.value)
[docs] def get_numerator(self, obj):
return maybe_decimal(obj.numerator)
[docs] def get_denominator(self, obj):
return maybe_decimal(obj.denominator)