Skip to content

Commit 9064f33

Browse files
gcarqqcoumes
authored andcommitted
feat: Implement get_documents() for DocumentRegistry
Signed-off-by: gcarq <[email protected]>
1 parent b8cabb2 commit 9064f33

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

django_opensearch_dsl/registries.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from collections import defaultdict
22
from copy import deepcopy
3+
from itertools import chain
34

45
from django.core.exceptions import ImproperlyConfigured, ObjectDoesNotExist
56
from django.db.models import Model
@@ -161,6 +162,14 @@ def delete(self, instance, **kwargs):
161162
"""
162163
self.update(instance, action="delete", **kwargs)
163164

165+
def get_documents(self, models=None):
166+
"""Get all documents in the registry or the documents for a list of models."""
167+
if models is not None:
168+
docs_iter = (self._models[model] for model in models if model in self._models)
169+
else:
170+
docs_iter = self._models.values()
171+
return set(chain.from_iterable(docs_iter))
172+
164173
def get_models(self):
165174
"""Get all models in the registry."""
166175
return set(self._models.keys())

tests/tests/test_registries.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,14 @@ def test_get_indices_by_unregister_model(self):
5757
ModelC = Mock()
5858
self.assertFalse(self.registry.get_indices([ModelC]))
5959

60+
def test_get_documents(self):
61+
docs = {self.doc_a1, self.doc_a2, self.doc_b1, self.doc_c1, self.doc_d1, self.doc_e1}
62+
self.assertEqual(self.registry.get_documents(), docs)
63+
64+
def test_get_documents_by_models(self):
65+
docs = {self.doc_a1, self.doc_a2, self.doc_b1}
66+
self.assertEqual(self.registry.get_documents(models=[self.ModelA, self.ModelB]), docs)
67+
6068
def test_get_models(self):
6169
self.assertEqual(self.registry.get_models(), {self.ModelA, self.ModelB, self.ModelC, self.ModelD, self.ModelE})
6270

0 commit comments

Comments
 (0)