Example #1
0
class EngagementActionPointSerializer(PermissionsBasedSerializerMixin,
                                      ActionPointBaseSerializer):
    section = SeparatedReadWriteField(
        read_field=SectorSerializer(read_only=True, label=_('Section')),
        required=True,
    )
    office = SeparatedReadWriteField(read_field=OfficeSerializer(
        read_only=True, label=_('Office')),
                                     required=True)

    history = HistorySerializer(many=True,
                                label=_('History'),
                                read_only=True,
                                source='get_meaningful_history')

    url = serializers.ReadOnlyField(label=_('Link'), source='get_object_url')

    class Meta(ActionPointBaseSerializer.Meta):
        model = EngagementActionPoint
        fields = ActionPointBaseSerializer.Meta.fields + [
            'section',
            'office',
            'history',
            'url',
        ]
        extra_kwargs = copy(ActionPointBaseSerializer.Meta.extra_kwargs)
        extra_kwargs.update(
            {'assigned_to': {
                'label': _('Person Responsible')
            }})
Example #2
0
class TPMActionPointSerializer(PermissionsBasedSerializerMixin,
                               ActionPointBaseSerializer):
    reference_number = serializers.ReadOnlyField(label=_('Reference No.'))

    partner = MinimalPartnerOrganizationListSerializer(
        read_only=True, label=_('Related Partner'))
    intervention = SeparatedReadWriteField(
        read_field=BaseInterventionListSerializer(),
        required=False,
        label=_('Related PD/SSFA'))
    cp_output = SeparatedReadWriteField(read_field=ResultSerializer(),
                                        required=False,
                                        label=_('Related CP Output'))

    location = SeparatedReadWriteField(read_field=LocationLightSerializer(),
                                       required=False,
                                       label=_('Related Location'))

    section = SeparatedReadWriteField(read_field=SectionSerializer(),
                                      required=True,
                                      label=_('Section of Assignee'))
    office = SeparatedReadWriteField(read_field=OfficeSerializer(),
                                     required=True,
                                     label=_('Office of Assignee'))

    is_responsible = serializers.SerializerMethodField()
    history = HistorySerializer(many=True,
                                label=_('History'),
                                read_only=True,
                                source='get_meaningful_history')

    url = serializers.ReadOnlyField(label=_('Link'), source='get_object_url')

    class Meta(ActionPointBaseSerializer.Meta):
        model = TPMActionPoint
        fields = ActionPointBaseSerializer.Meta.fields + [
            'partner', 'intervention', 'cp_output', 'location', 'tpm_activity',
            'section', 'office', 'history', 'is_responsible', 'url'
        ]
        fields.remove('category')
        extra_kwargs = copy(ActionPointBaseSerializer.Meta.extra_kwargs)
        extra_kwargs.update({
            'tpm_activity': {
                'label': _('Related Task')
            },
            'high_priority': {
                'label': _('Priority')
            },
        })

    def get_is_responsible(self, obj):
        return self.get_user() == obj.assigned_to

    def create(self, validated_data):
        activity = validated_data['tpm_activity']

        validated_data.update({
            'partner_id': activity.partner_id,
        })
        return super(TPMActionPointSerializer, self).create(validated_data)
Example #3
0
class EngagementActionPointSerializer(PermissionsBasedSerializerMixin,
                                      ActionPointBaseSerializer):
    reference_number = serializers.ReadOnlyField(label=_('Reference No.'))

    partner = MinimalPartnerOrganizationListSerializer(
        read_only=True, label=_('Related Partner'))
    intervention = SeparatedReadWriteField(
        label=_('Related PD/SSFA'),
        read_field=BaseInterventionListSerializer(),
        required=False,
    )

    section = SeparatedReadWriteField(
        read_field=SectionSerializer(read_only=True),
        required=True,
        label=_('Section of Assignee'))
    office = SeparatedReadWriteField(
        read_field=OfficeSerializer(read_only=True),
        required=True,
        label=_('Office of Assignee'))
    category = CategoryModelChoiceField(
        label=_('Action Point Category'),
        required=True,
        queryset=Category.objects.filter(module=Category.MODULE_CHOICES.audit))

    history = HistorySerializer(many=True,
                                label=_('History'),
                                read_only=True,
                                source='get_meaningful_history')

    url = serializers.ReadOnlyField(label=_('Link'), source='get_object_url')

    class Meta(ActionPointBaseSerializer.Meta):
        model = EngagementActionPoint
        fields = ActionPointBaseSerializer.Meta.fields + [
            'partner',
            'intervention',
            'history',
            'url',
        ]
        extra_kwargs = copy(ActionPointBaseSerializer.Meta.extra_kwargs)
        extra_kwargs.update({
            'high_priority': {
                'label': _('Priority')
            },
        })

    def create(self, validated_data):
        engagement = validated_data['engagement']
        validated_data.update({
            'partner_id': engagement.partner_id,
        })

        return super().create(validated_data)
Example #4
0
class TPMActionPointSerializer(PermissionsBasedSerializerMixin,
                               ActionPointBaseSerializer):
    section = SeparatedReadWriteField(read_field=SectorSerializer(
        read_only=True, label=_('Section')),
                                      read_only=True)
    office = SeparatedReadWriteField(read_field=OfficeSerializer(
        read_only=True, label=_('Office')),
                                     required=True)

    is_responsible = serializers.SerializerMethodField()
    history = HistorySerializer(many=True,
                                label=_('History'),
                                read_only=True,
                                source='get_meaningful_history')

    url = serializers.ReadOnlyField(label=_('Link'), source='get_object_url')

    class Meta(ActionPointBaseSerializer.Meta):
        model = TPMActionPoint
        fields = ActionPointBaseSerializer.Meta.fields + [
            'tpm_activity', 'section', 'office', 'history', 'is_responsible',
            'url'
        ]
        extra_kwargs = copy(ActionPointBaseSerializer.Meta.extra_kwargs)
        extra_kwargs.update({
            'tpm_activity': {
                'label': _('Site Visit Schedule')
            },
            'assigned_to': {
                'label': _('Person Responsible')
            }
        })

    def get_is_responsible(self, obj):
        return self.get_user() == obj.assigned_to

    def create(self, validated_data):
        activity = validated_data['tpm_activity']

        validated_data.update({
            'partner_id': activity.partner_id,
            'intervention_id': activity.intervention_id,
            'cp_output_id': activity.cp_output_id,
            'section': activity.section,
        })
        return super(TPMActionPointSerializer, self).create(validated_data)
Example #5
0
class ActionPointListSerializer(PermissionsBasedSerializerMixin,
                                ActionPointBaseSerializer):
    related_module = serializers.ChoiceField(
        label=_('Related App'),
        choices=ActionPoint.MODULE_CHOICES,
        read_only=True)

    partner = SeparatedReadWriteField(
        read_field=MinimalPartnerOrganizationListSerializer(
            read_only=True, label=_('Partner')), )
    intervention = SeparatedReadWriteField(
        read_field=BaseInterventionListSerializer(read_only=True,
                                                  label=_('PD/SSFA')),
        required=False,
    )

    cp_output = SeparatedReadWriteField(
        read_field=ResultSerializer(read_only=True, label=_('CP Output')),
        required=False,
    )

    location = SeparatedReadWriteField(read_field=LocationLightSerializer(
        read_only=True, label=_('Location')), )

    section = SeparatedReadWriteField(
        read_field=SectionSerializer(read_only=True,
                                     label=_('Section of Assignee')),
        required=True,
    )
    office = SeparatedReadWriteField(read_field=OfficeSerializer(
        read_only=True, label=_('Office of Assignee')),
                                     required=True)

    class Meta(ActionPointBaseSerializer.Meta):
        fields = ActionPointBaseSerializer.Meta.fields + [
            'related_module',
            'cp_output',
            'partner',
            'intervention',
            'location',
            'engagement',
            'tpm_activity',
            'travel_activity',
        ]
Example #6
0
class TPMActivitySerializer(PermissionsBasedSerializerMixin,
                            WritableNestedSerializerMixin, ActivitySerializer):
    partner = SeparatedReadWriteField(
        read_field=MinimalPartnerOrganizationListSerializer(
            read_only=True, label=_('Implementing Partner')), )
    intervention = SeparatedReadWriteField(
        read_field=InterventionCreateUpdateSerializer(read_only=True,
                                                      label=_('PD/SSFA')),
        required=False,
    )

    cp_output = SeparatedReadWriteField(
        read_field=ResultSerializer(read_only=True, label=_('CP Output')),
        required=False,
    )

    locations = SeparatedReadWriteField(read_field=LocationLightSerializer(
        many=True, read_only=True, label=_('Locations')), )

    section = SeparatedReadWriteField(
        read_field=SectionSerializer(read_only=True, label=_('Section')),
        required=True,
    )

    unicef_focal_points = SeparatedReadWriteField(
        read_field=MinimalUserSerializer(read_only=True,
                                         many=True,
                                         label=_('UNICEF Focal Points')),
        required=True,
    )

    offices = SeparatedReadWriteField(
        read_field=OfficeSerializer(
            read_only=True,
            many=True,
            label=_('Office(s) of UNICEF Focal Point(s)')),
        required=True,
    )

    pv_applicable = serializers.BooleanField(read_only=True)

    def _validate_partner_intervention(self, validated_data, instance=None):
        if 'partner' in validated_data and 'intervention' not in validated_data:
            validated_data['intervention'] = None

        partner = validated_data.get('partner',
                                     instance.partner if instance else None)
        intervention = validated_data.get(
            'intervention', instance.intervention if instance else None)

        if partner and partner.partner_type not in [PartnerType.GOVERNMENT, PartnerType.BILATERAL_MULTILATERAL] \
                and not intervention:
            raise ValidationError(
                {'intervention': _('This field is required.')})

        return instance

    def create(self, validated_data):
        self._validate_partner_intervention(validated_data)
        return super(TPMActivitySerializer, self).create(validated_data)

    def update(self, instance, validated_data):
        self._validate_partner_intervention(validated_data, instance=instance)
        return super(TPMActivitySerializer,
                     self).update(instance, validated_data)

    class Meta(WritableNestedSerializerMixin.Meta):
        model = TPMActivity
        fields = [
            'id',
            'partner',
            'intervention',
            'cp_output',
            'section',
            'unicef_focal_points',
            'date',
            'locations',
            'additional_information',
            'pv_applicable',
            'offices',
        ]
        extra_kwargs = {
            'id': {
                'label': _('Task ID')
            },
            'date': {
                'required': True
            },
            'partner': {
                'required': True
            },
        }