예제 #1
0
class ConditionsXMLSerializer(XMLMetaMixin, SkipNullMixin,
                              activity_serializers.ConditionsSerializer):
    xml_meta = {'attributes': ('attached',)}
    attached = BoolToNumField()

    class ConditionXMLSerializer(XMLMetaMixin, SkipNullMixin,
                                 activity_serializers.ConditionSerializer):
        xml_meta = {'attributes': ('type', )}
        type = serializers.CharField(source='type.code')
        narrative = NarrativeXMLSerializer(many=True, source='narratives')

        class Meta:
            model = iati_models.Condition
            fields = (
                'type',
                'narrative',
            )

    condition = ConditionXMLSerializer(
        many=True,
        source="condition_set")

    class Meta(activity_serializers.ConditionsSerializer.Meta):
        fields = (
            'attached',
            'condition',
        )
예제 #2
0
class ResultIndicatorXMLSerializer(XMLMetaMixin, SkipNullMixin,
                                   activity_serializers
                                   .ResultIndicatorSerializer):
    xml_meta = {'attributes': ('measure', 'ascending',)}

    title = NarrativeContainerXMLSerializer(source="resultindicatortitle")
    description = NarrativeContainerXMLSerializer(
        source="resultindicatordescription"
    )
    reference = ResultIndicatorReferenceXMLSerializer(
        source='resultindicatorreference_set', many=True, required=False)
    baseline = ResultIndicatorBaselineXMLSerializer(source="*")
    period = ResultIndicatorPeriodXMLSerializer(
        source='resultindicatorperiod_set', many=True
    )
    measure = serializers.CharField(source='measure.code')
    ascending = BoolToNumField()

    class Meta:
        model = iati_models.ResultIndicator
        fields = (
            'title',
            'description',
            'reference',
            'baseline',
            'period',
            'measure',
            'ascending'
        )
예제 #3
0
class TransactionSerializer(XMLMetaMixin, SkipNullMixin,
                            transaction_serializers.TransactionSerializer):
    xml_meta = {
        'attributes': (
            'ref',
            'humanitarian',
        )
    }

    transaction_type = CodelistSerializer()
    description = NarrativeContainerXMLSerializer()
    provider_org = TransactionProviderSerializer(
        source='provider_organisation')
    receiver_org = TransactionReceiverSerializer(
        source='receiver_organisation')
    flow_type = CodelistSerializer()
    finance_type = CodelistSerializer()
    aid_type = CodelistSerializer()
    tied_status = CodelistSerializer()
    currency = CodelistSerializer()

    sector = TransactionSectorXMLSerializer(many=True,
                                            required=False,
                                            source="transactionsector_set")
    recipient_country = TransactionRecipientCountryXMLSerializer(
        many=True, required=False, source="transactionrecipientcountry_set")
    recipient_region = TransactionRecipientRegionXMLSerializer(
        many=True, required=False, source="transactionrecipientregion_set")

    value = ValueSerializer(source='*')
    transaction_date = IsoDateSerializer()
    disbursement_channel = CodelistSerializer()
    humanitarian = BoolToNumField()

    class Meta(transaction_serializers.TransactionSerializer.Meta):
        fields = (
            'ref',
            'humanitarian',
            'transaction_type',
            'transaction_date',
            'value',
            'description',
            'provider_org',
            'receiver_org',
            'disbursement_channel',
            'sector',
            'recipient_country',
            'recipient_region',
            'flow_type',
            'finance_type',
            'aid_type',
            'tied_status',
        )
예제 #4
0
    class CrsAddOtherFlagsXMLSerializer(
            XMLMetaMixin, SkipNullMixin, activity_serializers
            .CrsAddOtherFlagsSerializer):
        xml_meta = {'attributes': ('code', 'significance', )}

        code = serializers.CharField(source='other_flags.code')
        significance = BoolToNumField()

        class Meta:
            model = iati_models.CrsAddOtherFlags
            fields = (
                'code',
                'significance',
            )
예제 #5
0
class FssXMLSerializer(XMLMetaMixin, SkipNullMixin,
                       activity_serializers.FssSerializer):
    xml_meta = {
        'attributes': (
            'extraction_date',
            'priority',
            'phaseout_year',
        )
    }

    priority = BoolToNumField()

    class FssForecastXMLSerializer(XMLMetaMixin, SkipNullMixin,
                                   activity_serializers.FssForecastSerializer):
        xml_meta = {
            'attributes': (
                'year',
                'value_date',
                'currency',
            )
        }

        currency = serializers.CharField(source='currency.code')

        text = serializers.DecimalField(
            source='value',
            max_digits=15,
            decimal_places=2,
            coerce_to_string=False,
        )

        class Meta(activity_serializers.FssForecastSerializer.Meta):
            fields = (
                'text',
                'year',
                'value_date',
                'currency',
            )

    forecast = FssForecastXMLSerializer(many=True, source='fssforecast_set')

    class Meta(activity_serializers.FssSerializer.Meta):
        model = iati_models.Fss
        fields = (
            'extraction_date',
            'priority',
            'phaseout_year',
            'forecast',
        )
예제 #6
0
class OrganisationReportingOrganisationSerializer(ModelSerializerNoValidation):
    xml_meta = {'attributes': ('ref', 'type', 'secondary_reporter')}

    ref = serializers.CharField(source="reporting_org_identifier")
    type = CodelistSerializer(source="org_type")
    secondary_reporter = BoolToNumField()

    narratives = OrganisationNarrativeSerializer(many=True)

    class Meta:
        model = org_models.OrganisationReportingOrganisation
        fields = (
            'ref',
            'type',
            'secondary_reporter',
            'narratives',
        )
예제 #7
0
class ReportingOrganisationSerializer(
        XMLMetaMixin, SkipNullMixin,
        activity_serializers.ReportingOrganisationSerializer):
    xml_meta = {'attributes': ('ref', 'type', 'secondary_reporter')}

    ref = serializers.CharField(
        source="publisher.organisation.organisation_identifier")
    type = serializers.CharField(source="publisher.organisation.type.code")
    secondary_reporter = BoolToNumField()

    narrative = NarrativeXMLSerializer(
        source="publisher.organisation.name.narratives", many=True)

    class Meta(activity_serializers.ReportingOrganisationSerializer.Meta):
        fields = (
            'ref',
            'type',
            'secondary_reporter',
            'narrative',
        )
예제 #8
0
class OrganisationReportingOrganisationXMLSerializer(XMLMetaMixin,
                                                     SkipNullMixin,
                                                     ModelSerializer):
    xml_meta = {'attributes': ('ref', 'type', 'secondary_reporter')}

    ref = serializers.CharField(source="reporting_org_identifier")
    type = serializers.CharField(source="org_type")
    secondary_reporter = BoolToNumField()

    narrative = OrganisationNarrativeXMLSerializer(many=True,
                                                   source="narratives")

    class Meta:
        model = org_models.OrganisationReportingOrganisation
        fields = (
            'ref',
            'type',
            'secondary_reporter',
            'narrative',
        )
예제 #9
0
class ResultXMLSerializer(XMLMetaMixin, SkipNullMixin,
                          activity_serializers.ResultSerializer):
    xml_meta = {'attributes': ('type', 'aggregation_status',)}

    type = serializers.CharField(source='type.code')
    title = NarrativeContainerXMLSerializer(source="resulttitle")
    description = NarrativeContainerXMLSerializer(source="resultdescription")
    indicator = ResultIndicatorXMLSerializer(
        source='resultindicator_set', many=True
    )
    aggregation_status = BoolToNumField()

    class Meta(activity_serializers.ResultSerializer.Meta):
        fields = (
            'title',
            'description',
            'indicator',
            'type',
            'aggregation_status',
        )