Skip to content

Commit 5d07b2c

Browse files
committed
Add community_library_live and has_community_library_submission filters
1 parent 5ba56f4 commit 5d07b2c

2 files changed

Lines changed: 68 additions & 0 deletions

File tree

contentcuration/contentcuration/tests/viewsets/test_channel.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -780,6 +780,60 @@ def test_admin_channel_filter__latest_community_library_submission_status__multi
780780
],
781781
)
782782

783+
def test_admin_channel_filter__community_library_live(self):
784+
self.client.force_authenticate(user=self.admin_user)
785+
786+
submission1 = testdata.community_library_submission()
787+
submission1.channel.version = 2
788+
submission1.channel.save()
789+
submission1.status = community_library_submission.STATUS_LIVE
790+
submission1.channel_version = 1
791+
submission1.save()
792+
793+
CommunityLibrarySubmission.objects.create(
794+
channel=submission1.channel,
795+
channel_version=2,
796+
author=submission1.author,
797+
status=community_library_submission.STATUS_PENDING,
798+
)
799+
800+
other_channel_submission = testdata.community_library_submission()
801+
other_channel_submission.status = community_library_submission.STATUS_PENDING
802+
other_channel_submission.save()
803+
804+
response = self.client.get(
805+
reverse_with_query(
806+
"admin-channels-list",
807+
query={"community_library_live": True},
808+
),
809+
format="json",
810+
)
811+
self.assertEqual(response.status_code, 200, response.content)
812+
self.assertCountEqual(
813+
[ch["id"] for ch in response.data],
814+
[submission1.channel.id],
815+
)
816+
817+
def test_admin_channel_filter__has_community_library_submission(self):
818+
self.client.force_authenticate(user=self.admin_user)
819+
820+
submission = testdata.community_library_submission()
821+
822+
testdata.channel() # Another channel without submission
823+
824+
response = self.client.get(
825+
reverse_with_query(
826+
"admin-channels-list",
827+
query={"has_community_library_submission": True},
828+
),
829+
format="json",
830+
)
831+
self.assertEqual(response.status_code, 200, response.content)
832+
self.assertCountEqual(
833+
[ch["id"] for ch in response.data],
834+
[submission.channel.id],
835+
)
836+
783837
def test_create_channel(self):
784838
user = testdata.user()
785839
self.client.force_authenticate(user=user)

contentcuration/contentcuration/viewsets/channel.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,6 +1057,12 @@ class AdminChannelFilter(BaseChannelFilter):
10571057
latest_community_library_submission_status = CharFilter(
10581058
method="filter_latest_community_library_submission_status"
10591059
)
1060+
community_library_live = BooleanFilter(
1061+
method="filter_community_library_live",
1062+
)
1063+
has_community_library_submission = BooleanFilter(
1064+
method="filter_has_community_library_submission",
1065+
)
10601066

10611067
def filter_keywords(self, queryset, name, value):
10621068
keywords = value.split(" ")
@@ -1083,6 +1089,14 @@ def filter_latest_community_library_submission_status(self, queryset, name, valu
10831089
)
10841090
return queryset
10851091

1092+
def filter_community_library_live(self, queryset, name, value):
1093+
return queryset.filter(
1094+
community_library_submissions__status=community_library_submission_constants.STATUS_LIVE
1095+
).distinct()
1096+
1097+
def filter_has_community_library_submission(self, queryset, name, value):
1098+
return queryset.filter(latest_community_library_submission__isnull=False)
1099+
10861100

10871101
class AdminChannelSerializer(ChannelSerializer):
10881102
"""

0 commit comments

Comments
 (0)