def process(self): if self.version: instance = self.get_queryset().first().clone() errors = Mapping.create_new_version_for(instance, self.data, self.user) return errors or UPDATED instance = Mapping.persist_new(self.data, self.user) if instance.id: return CREATED return instance.errors or FAILED
def test_persist_new(self): source = SourceFactory(version=HEAD) concept1 = ConceptFactory(parent=source) concept2 = ConceptFactory(parent=source) mapping = Mapping.persist_new({ **factory.build(dict, FACTORY_CLASS=MappingFactory), 'from_concept': concept1, 'to_concept': concept2, 'parent_id': source.id }, source.created_by) self.assertEqual(mapping.errors, {}) self.assertIsNotNone(mapping.id) self.assertEqual(mapping.version, str(mapping.id)) self.assertEqual(source.mappings_set.count(), 1) self.assertEqual(source.mappings.count(), 1) self.assertEqual( mapping.uri, '/orgs/{}/sources/{}/mappings/{}/{}/'.format( source.organization.mnemonic, source.mnemonic, mapping.mnemonic, mapping.id ) )
def create(self, validated_data): mapping = Mapping.persist_new(data=validated_data, user=self.context.get('request').user) if mapping.errors: self._errors.update(mapping.errors) return mapping