From faf00bf35e9737ed3e3a1a127548167fe918c292 Mon Sep 17 00:00:00 2001 From: Simon Date: Sat, 12 Jul 2025 23:33:22 +0700 Subject: [PATCH] fix channel_tabs sync to videos, #build --- .../config/management/commands/ta_startup.py | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/backend/config/management/commands/ta_startup.py b/backend/config/management/commands/ta_startup.py index 12004bfb..7108c8b6 100644 --- a/backend/config/management/commands/ta_startup.py +++ b/backend/config/management/commands/ta_startup.py @@ -55,6 +55,7 @@ class Command(BaseCommand): self._mig_fix_download_channel_indexed() self._mig_add_default_playlist_sort() self._mig_set_channel_tabs() + self._mig_set_video_channel_tabs() def _make_folders(self): """make expected cache folders""" @@ -359,3 +360,39 @@ class Command(BaseCommand): self.stdout.write(response) sleep(60) raise CommandError(message) + + def _mig_set_video_channel_tabs(self) -> None: + """migrate from 0.5.4 to 0.5.5 set initial video channel tabs""" + self.stdout.write("[MIGRATION] set default channel_tabs for videos") + + path = "ta_video/_update_by_query" + tabs = VideoTypeEnum.values_known() + data = { + "query": { + "bool": { + "must_not": [{"exists": {"field": "channel.channel_tabs"}}] + } + }, + "script": { + "source": f"ctx._source.channel.channel_tabs = {tabs}", + "lang": "painless", + }, + } + response, status_code = ElasticWrap(path).post(data) + if status_code in [200, 201]: + updated = response.get("updated") + if updated: + self.stdout.write( + self.style.SUCCESS(f" ✓ updated {updated} videos") + ) + else: + self.stdout.write( + self.style.SUCCESS(" no videos need updating") + ) + return + + message = " 🗙 failed to set default channel_tabs" + self.stdout.write(self.style.ERROR(message)) + self.stdout.write(response) + sleep(60) + raise CommandError(message)