diff --git a/src/documents/matching.py b/src/documents/matching.py index 521d49284..a7ceb5a5a 100644 --- a/src/documents/matching.py +++ b/src/documents/matching.py @@ -35,7 +35,11 @@ def match_correspondents(document, classifier, user=None): correspondents = Correspondent.objects.all() return list( - filter(lambda o: matches(o, document) or o.pk == pred_id, correspondents), + filter( + lambda o: matches(o, document) + or (o.pk == pred_id and o.matching_algorithm == MatchingModel.MATCH_AUTO), + correspondents, + ), ) @@ -55,7 +59,11 @@ def match_document_types(document, classifier, user=None): document_types = DocumentType.objects.all() return list( - filter(lambda o: matches(o, document) or o.pk == pred_id, document_types), + filter( + lambda o: matches(o, document) + or (o.pk == pred_id and o.matching_algorithm == MatchingModel.MATCH_AUTO), + document_types, + ), ) @@ -71,7 +79,14 @@ def match_tags(document, classifier, user=None): tags = Tag.objects.all() return list( - filter(lambda o: matches(o, document) or o.pk in predicted_tag_ids, tags), + filter( + lambda o: matches(o, document) + or ( + o.matching_algorithm == MatchingModel.MATCH_AUTO + and o.pk in predicted_tag_ids + ), + tags, + ), ) @@ -92,7 +107,8 @@ def match_storage_paths(document, classifier, user=None): return list( filter( - lambda o: matches(o, document) or o.pk == pred_id, + lambda o: matches(o, document) + or (o.pk == pred_id and o.matching_algorithm == MatchingModel.MATCH_AUTO), storage_paths, ), ) diff --git a/src/documents/tests/test_consumer.py b/src/documents/tests/test_consumer.py index 441cffddf..138066355 100644 --- a/src/documents/tests/test_consumer.py +++ b/src/documents/tests/test_consumer.py @@ -561,10 +561,16 @@ class TestConsumer(DirectoriesMixin, FileSystemAssertsMixin, TestCase): @mock.patch("documents.consumer.load_classifier") def testClassifyDocument(self, m): - correspondent = Correspondent.objects.create(name="test") - dtype = DocumentType.objects.create(name="test") - t1 = Tag.objects.create(name="t1") - t2 = Tag.objects.create(name="t2") + correspondent = Correspondent.objects.create( + name="test", + matching_algorithm=Correspondent.MATCH_AUTO, + ) + dtype = DocumentType.objects.create( + name="test", + matching_algorithm=DocumentType.MATCH_AUTO, + ) + t1 = Tag.objects.create(name="t1", matching_algorithm=Tag.MATCH_AUTO) + t2 = Tag.objects.create(name="t2", matching_algorithm=Tag.MATCH_AUTO) m.return_value = MagicMock() m.return_value.predict_correspondent.return_value = correspondent.pk