Skip to content

Commit d9dbc83

Browse files
authored
fix video etl (#2438)
1 parent b7f7666 commit d9dbc83

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

learning_resources/etl/loaders.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,6 +1113,16 @@ def load_playlist(video_channel: VideoChannel, playlist_data: dict) -> LearningR
11131113

11141114
video_resources = load_videos(videos_data)
11151115
load_topics(playlist_resource, most_common_topics(video_resources))
1116+
unpublished_videos = playlist_resource.resources.filter(
1117+
resource_type=LearningResourceType.video.name,
1118+
published=True,
1119+
).exclude(id__in=[video.id for video in video_resources])
1120+
unpublished_videos.update(published=False)
1121+
bulk_resources_unpublished_actions(
1122+
unpublished_videos.values_list("id", flat=True),
1123+
LearningResourceType.video.name,
1124+
)
1125+
11161126
playlist_resource.resources.clear()
11171127
for idx, video in enumerate(video_resources):
11181128
playlist_resource.resources.add(

learning_resources/etl/loaders_test.py

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1463,7 +1463,8 @@ def test_load_videos():
14631463
assert Video.objects.count() == len(video_resources)
14641464

14651465

1466-
def test_load_playlist(mocker):
1466+
@pytest.mark.parametrize("playlist_exists", [True, False])
1467+
def test_load_playlist(mocker, playlist_exists):
14671468
"""Test load_playlist"""
14681469
expected_topics = [{"name": "Biology"}, {"name": "Physics"}]
14691470
[
@@ -1475,9 +1476,19 @@ def test_load_playlist(mocker):
14751476
return_value=expected_topics,
14761477
)
14771478
channel = VideoChannelFactory.create()
1478-
playlist = VideoPlaylistFactory.build().learning_resource
1479-
assert VideoPlaylist.objects.count() == 0
1480-
assert Video.objects.count() == 0
1479+
if playlist_exists:
1480+
playlist = VideoPlaylistFactory.create(channel=channel).learning_resource
1481+
deleted_video = VideoFactory.create().learning_resource
1482+
playlist.resources.add(
1483+
deleted_video,
1484+
through_defaults={
1485+
"relation_type": LearningResourceRelationTypes.PLAYLIST_VIDEOS,
1486+
"position": 1,
1487+
},
1488+
)
1489+
else:
1490+
playlist = VideoPlaylistFactory.build().learning_resource
1491+
14811492
video_resources = [video.learning_resource for video in VideoFactory.build_batch(5)]
14821493
videos_data = [
14831494
{
@@ -1511,6 +1522,9 @@ def test_load_playlist(mocker):
15111522
assert list(result.topics.values_list("name", flat=True).order_by("name")) == [
15121523
topic["name"] for topic in expected_topics
15131524
]
1525+
if playlist_exists:
1526+
deleted_video.refresh_from_db()
1527+
assert not deleted_video.published
15141528

15151529

15161530
def test_load_playlists_unpublish(mocker):

0 commit comments

Comments
 (0)