Esempio n. 1
0
    def update(self, instance, validated_data):
        from core.concepts.models import Concept
        from core.sources.models import Source

        instance.extras = validated_data.get('extras', instance.extras)
        instance.external_id = validated_data.get('external_id',
                                                  instance.external_id)
        instance.comment = validated_data.get(
            'update_comment') or validated_data.get('comment')
        instance.retired = validated_data.get('retired', instance.retired)
        from_concept_url = validated_data.get('from_concept_url', None)
        to_concept_url = validated_data.get('to_concept_url', None)
        to_source_url = validated_data.get('to_source_url', None)
        if from_concept_url:
            instance.from_concept = Concept.from_uri_queryset(
                from_concept_url).first()
        if to_concept_url:
            instance.to_concept = Concept.from_uri_queryset(
                to_concept_url).first()
        if to_source_url:
            instance.to_source = Source.head_from_uri(to_source_url).first()

        instance.mnemonic = validated_data.get('mnemonic', instance.mnemonic)
        instance.map_type = validated_data.get('map_type', instance.map_type)
        instance.to_concept_code = validated_data.get('to_concept_code',
                                                      instance.to_concept_code)
        instance.to_concept_name = validated_data.get('to_concept_name',
                                                      instance.to_concept_name)

        errors = Mapping.persist_clone(instance,
                                       self.context.get('request').user)
        if errors:
            self._errors.update(errors)

        return instance
Esempio n. 2
0
    def test_persist_clone(self):
        source_head = OrganizationSourceFactory(version=HEAD)
        source_version0 = OrganizationSourceFactory(
            version='v0',
            mnemonic=source_head.mnemonic,
            organization=source_head.organization)

        self.assertEqual(source_head.versions.count(), 2)

        mapping = MappingFactory(parent=source_version0)
        cloned_mapping = mapping.clone(mapping.created_by)

        self.assertEqual(
            Mapping.persist_clone(cloned_mapping),
            dict(
                version_created_by=
                'Must specify which user is attempting to create a new mapping version.'
            ))

        self.assertEqual(
            Mapping.persist_clone(cloned_mapping, mapping.created_by), {})

        persisted_mapping = Mapping.objects.filter(
            id=cloned_mapping.id, version=cloned_mapping.version).first()
        self.assertEqual(mapping.versions.count(), 2)
        self.assertNotEqual(mapping.id, persisted_mapping.id)
        self.assertEqual(persisted_mapping.from_concept_id,
                         mapping.from_concept_id)
        self.assertEqual(persisted_mapping.to_concept_id,
                         mapping.to_concept_id)
        self.assertEqual(persisted_mapping.parent, source_version0)
        self.assertEqual(persisted_mapping.sources.count(), 2)
        self.assertEqual(source_head.mappings.first().id, persisted_mapping.id)
        self.assertEqual(
            persisted_mapping.uri,
            '/orgs/{}/sources/{}/{}/mappings/{}/{}/'.format(
                source_version0.organization.mnemonic,
                source_version0.mnemonic, source_version0.version,
                persisted_mapping.mnemonic, persisted_mapping.version))
        self.assertEqual(persisted_mapping.version_url, persisted_mapping.uri)