Skip to content

Commit

Permalink
search results | fixing source version concepts/mappings search results
Browse files Browse the repository at this point in the history
  • Loading branch information
snyaggarwal committed Feb 18, 2021
1 parent b55e12f commit de66255
Show file tree
Hide file tree
Showing 5 changed files with 28 additions and 11 deletions.
16 changes: 14 additions & 2 deletions core/common/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -616,14 +616,26 @@ def update_version_data(self, obj=None):
def seed_concepts(self):
head = self.head
if head:
self.concepts.set(head.concepts.all())
from core.sources.models import Source
if self.__class__ == Source:
concepts = head.concepts.filter(is_latest_version=True)
else:
concepts = head.concepts.all()

self.concepts.set(concepts)
for concept in self.concepts.all():
concept.save() # ES Indexing

def seed_mappings(self):
head = self.head
if head:
self.mappings.set(head.mappings.all())
from core.sources.models import Source
if self.__class__ == Source:
mappings = head.mappings.filter(is_latest_version=True)
else:
mappings = head.mappings.all()

self.mappings.set(mappings)
for mapping in self.mappings.all():
mapping.save() # ES Indexing

Expand Down
3 changes: 2 additions & 1 deletion core/common/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -324,7 +324,8 @@ def __search_results(self): # pylint: disable=too-many-branches
if self.should_perform_es_search():
results = self.document_model.search()
default_filters = self.default_filters.copy()
if self.is_source_child_document_model() and 'collection' not in self.kwargs:
if self.is_source_child_document_model() and 'collection' not in self.kwargs and \
'version' not in self.kwargs:
default_filters['is_latest_version'] = True

for field, value in default_filters.items():
Expand Down
2 changes: 1 addition & 1 deletion core/concepts/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def get_serializer_class(self):
return ConceptListSerializer

def get_queryset(self, _=None):
is_latest_version = 'collection' not in self.kwargs
is_latest_version = 'collection' not in self.kwargs and 'version' not in self.kwargs
queryset = super().get_queryset()
if is_latest_version:
queryset = queryset.filter(is_latest_version=True)
Expand Down
3 changes: 2 additions & 1 deletion core/mappings/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -77,10 +77,11 @@ def get_serializer_class(self):
return MappingListSerializer

def get_queryset(self, _=None):
is_latest_version = 'collection' not in self.kwargs
is_latest_version = 'collection' not in self.kwargs and 'version' not in self.kwargs
queryset = super().get_queryset()
if is_latest_version:
queryset = queryset.filter(is_latest_version=True)

return queryset.select_related(
'parent__organization', 'parent__user', 'from_concept__parent', 'to_concept__parent', 'to_source',
'versioned_object', 'from_source',
Expand Down
15 changes: 9 additions & 6 deletions core/sources/tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -188,24 +188,27 @@ def test_persist_new_version(self):
self.assertEqual(source.concepts_set.count(), 2) # parent-child
self.assertEqual(source.concepts.count(), 2)
self.assertTrue(version1.is_latest_version)
self.assertEqual(version1.concepts.count(), 2)
self.assertEqual(version1.concepts.count(), 1)
self.assertEqual(version1.concepts.first(), source.concepts.filter(is_latest_version=True).first())
self.assertEqual(version1.concepts_set.count(), 0) # no direct child

@patch('core.common.services.S3.delete_objects', Mock())
def test_source_version_delete(self):
source = OrganizationSourceFactory(version=HEAD)
concept = ConceptFactory(mnemonic='concept1', version=HEAD, sources=[source], parent=source)
concept = ConceptFactory(
mnemonic='concept1', version=HEAD, sources=[source], parent=source
)

self.assertTrue(source.is_latest_version)
self.assertEqual(concept.sources.count(), 1)
self.assertEqual(concept.get_latest_version().sources.count(), 1)

version1 = OrganizationSourceFactory.build(
name='version1', version='v1', mnemonic=source.mnemonic, organization=source.organization
)
Source.persist_new_version(version1, source.created_by)
source.refresh_from_db()

self.assertEqual(concept.sources.count(), 2)
self.assertEqual(concept.get_latest_version().sources.count(), 2)
self.assertTrue(version1.is_latest_version)
self.assertFalse(source.is_latest_version)

Expand All @@ -214,7 +217,7 @@ def test_source_version_delete(self):
version='v1',
)
self.assertTrue(source_versions.exists())
self.assertEqual(version1.concepts.count(), 2)
self.assertEqual(version1.concepts.count(), 1)

version1.delete()
source.refresh_from_db()
Expand All @@ -224,7 +227,7 @@ def test_source_version_delete(self):
mnemonic=source.mnemonic,
).exists())
self.assertTrue(source.is_latest_version)
self.assertEqual(concept.sources.count(), 1)
self.assertEqual(concept.get_latest_version().sources.count(), 1)

def test_child_count_updates(self):
source = OrganizationSourceFactory(version=HEAD)
Expand Down

0 comments on commit de66255

Please sign in to comment.