Skip to content

Commit c2dec46

Browse files
committed
Move logic to mark live submission to submission model
1 parent 550fe78 commit c2dec46

3 files changed

Lines changed: 52 additions & 11 deletions

File tree

contentcuration/contentcuration/models.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2605,6 +2605,21 @@ def save(self, *args, **kwargs):
26052605

26062606
super().save(*args, **kwargs)
26072607

2608+
def mark_live(self):
2609+
"""
2610+
Marks this submission as the live submission for the channel,
2611+
and marks any previously live submissions as approved but not live.
2612+
"""
2613+
CommunityLibrarySubmission.objects.filter(
2614+
channel=self.channel,
2615+
status=community_library_submission.STATUS_LIVE,
2616+
).update(
2617+
status=community_library_submission.STATUS_APPROVED,
2618+
)
2619+
2620+
self.status = community_library_submission.STATUS_LIVE
2621+
self.save()
2622+
26082623
@classmethod
26092624
def filter_view_queryset(cls, queryset, user):
26102625
if user.is_anonymous:

contentcuration/contentcuration/tests/test_models.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,42 @@ def test_filter_edit_queryset__admin(self):
689689
)
690690
self.assertQuerysetContains(queryset, pk=submission_a.id)
691691

692+
def test_mark_live(self):
693+
submission_a = testdata.community_library_submission()
694+
submission_b = testdata.community_library_submission()
695+
696+
channel = submission_a.channel
697+
channel.version = 2
698+
submission_b.channel = channel
699+
700+
submission_a.channel_version = 1
701+
submission_a.status = community_library_submission.STATUS_LIVE
702+
submission_a.save()
703+
704+
submission_b.channel_version = 2
705+
submission_b.author = submission_a.author
706+
submission_b.status = community_library_submission.STATUS_APPROVED
707+
submission_b.save()
708+
709+
submission_other_channel = testdata.community_library_submission()
710+
submission_other_channel.status = community_library_submission.STATUS_LIVE
711+
submission_other_channel.save()
712+
713+
submission_b.mark_live()
714+
715+
submission_a.refresh_from_db()
716+
submission_b.refresh_from_db()
717+
submission_other_channel.refresh_from_db()
718+
719+
self.assertEqual(
720+
submission_a.status, community_library_submission.STATUS_APPROVED
721+
)
722+
self.assertEqual(submission_b.status, community_library_submission.STATUS_LIVE)
723+
self.assertEqual(
724+
submission_other_channel.status,
725+
community_library_submission.STATUS_LIVE,
726+
)
727+
692728

693729
class AssessmentItemTestCase(PermissionQuerysetTestCase):
694730
@property

contentcuration/contentcuration/viewsets/channel.py

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -828,22 +828,12 @@ def add_to_community_library(
828828
countries=countries,
829829
)
830830

831-
# Mark the submission corresponding to the channel version
832-
# as the only live submission for the channel
833-
CommunityLibrarySubmission.objects.filter(
834-
channel_id=channel_id,
835-
status=community_library_submission_constants.STATUS_LIVE,
836-
).update(
837-
status=community_library_submission_constants.STATUS_APPROVED,
838-
)
839-
840831
new_live_submission = CommunityLibrarySubmission.objects.get(
841832
channel_id=channel_id,
842833
channel_version=channel_version,
843834
status=community_library_submission_constants.STATUS_APPROVED,
844835
)
845-
new_live_submission.status = community_library_submission_constants.STATUS_LIVE
846-
new_live_submission.save()
836+
new_live_submission.mark_live()
847837

848838
@action(
849839
detail=True,

0 commit comments

Comments
 (0)