Skip to content

Commit

Permalink
concept-mappings | fixing queryset for latest version
Browse files Browse the repository at this point in the history
  • Loading branch information
snyaggarwal committed Jan 28, 2021
1 parent 098311f commit a82e9a9
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 19 deletions.
12 changes: 11 additions & 1 deletion core/concepts/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -523,10 +523,20 @@ def get_indirect_mappings(self):

def __get_mappings_from_relation(self, relation_manager, is_latest=False):
queryset = getattr(self, relation_manager).filter(parent_id=self.parent_id)

if self.is_versioned_object:
latest_version = self.get_latest_version()
if latest_version:
queryset |= getattr(latest_version, relation_manager).filter(parent_id=self.parent_id)
if self.is_latest_version:
versioned_object = self.versioned_object
if versioned_object:
queryset |= getattr(versioned_object, relation_manager).filter(parent_id=self.parent_id)

if is_latest:
return queryset.filter(is_latest_version=True)

return queryset.filter(id=F('versioned_object_id'))
return queryset.filter(id=F('versioned_object_id')).order_by('-updated_at').distinct('updated_at')

def get_bidirectional_mappings(self):
queryset = self.get_unidirectional_mappings() | self.get_indirect_mappings()
Expand Down
24 changes: 6 additions & 18 deletions core/concepts/tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -396,45 +396,33 @@ def test_get_mappings(self): # pylint: disable=too-many-locals

mappings = concept1.get_unidirectional_mappings()
self.assertEqual(mappings.count(), 2)
self.assertEqual(
list(mappings.order_by('created_at')), [mapping1, mapping2]
)
self.assertEqual(list(mappings), [mapping2, mapping1])

mappings = concept1.get_indirect_mappings()
self.assertEqual(mappings.count(), 1)
self.assertEqual(
list(mappings.order_by('created_at')), [mapping4]
)
self.assertEqual(list(mappings), [mapping4])

mappings = concept1.get_bidirectional_mappings()
self.assertEqual(mappings.count(), 3)
self.assertEqual(
list(mappings.order_by('created_at')), [mapping1, mapping2, mapping4]
)
self.assertEqual(list(mappings), [mapping4, mapping2, mapping1])

mappings = concept2.get_unidirectional_mappings()
self.assertEqual(mappings.count(), 0)

mappings = concept2.get_indirect_mappings()
self.assertEqual(mappings.count(), 1)
self.assertEqual(
list(mappings.order_by('created_at')), [mapping1]
)
self.assertEqual(list(mappings), [mapping1])

mappings = concept3.get_unidirectional_mappings()
self.assertEqual(mappings.count(), 0)

mappings = concept3.get_indirect_mappings()
self.assertEqual(mappings.count(), 1)
self.assertEqual(
list(mappings.order_by('created_at')), [mapping3]
)
self.assertEqual(list(mappings), [mapping3])

mappings = concept4.get_unidirectional_mappings()
self.assertEqual(mappings.count(), 1)
self.assertEqual(
list(mappings.order_by('created_at')), [mapping5]
)
self.assertEqual(list(mappings), [mapping5])

mappings = concept4.get_indirect_mappings()
self.assertEqual(mappings.count(), 0)
Expand Down

0 comments on commit a82e9a9

Please sign in to comment.