From a514dda1ffa8f691cc32e3f2b7c66c4cba9a5c6d Mon Sep 17 00:00:00 2001 From: Simon Date: Wed, 23 Aug 2023 23:54:36 +0700 Subject: [PATCH] [API] implement delete playlist endpoint --- tubearchivist/api/views.py | 12 ++++++++++++ tubearchivist/home/src/frontend/api_calls.py | 15 --------------- .../home/templates/home/playlist_id.html | 4 ++-- tubearchivist/static/script.js | 12 +++++------- 4 files changed, 19 insertions(+), 24 deletions(-) diff --git a/tubearchivist/api/views.py b/tubearchivist/api/views.py index 66998d2..6ae35f4 100644 --- a/tubearchivist/api/views.py +++ b/tubearchivist/api/views.py @@ -13,6 +13,7 @@ from home.src.frontend.searching import SearchForm from home.src.frontend.watched import WatchState from home.src.index.channel import YoutubeChannel from home.src.index.generic import Pagination +from home.src.index.playlist import YoutubePlaylist from home.src.index.reindex import ReindexProgress from home.src.index.video import SponsorBlock, YoutubeVideo from home.src.ta.config import AppConfig, ReleaseVersion @@ -438,6 +439,17 @@ class PlaylistApiView(ApiBaseView): self.get_document(playlist_id) return Response(self.response, status=self.status_code) + def delete(self, request, playlist_id): + """delete playlist""" + print(f"{playlist_id}: delete playlist") + delete_videos = request.GET.get("delete-videos", False) + if delete_videos: + YoutubePlaylist(playlist_id).delete_videos_playlist() + else: + YoutubePlaylist(playlist_id).delete_metadata() + + return Response({"success": True}) + class PlaylistApiVideoView(ApiBaseView): """resolves to /api/playlist//video diff --git a/tubearchivist/home/src/frontend/api_calls.py b/tubearchivist/home/src/frontend/api_calls.py index f191e33..60764ea 100644 --- a/tubearchivist/home/src/frontend/api_calls.py +++ b/tubearchivist/home/src/frontend/api_calls.py @@ -4,7 +4,6 @@ Functionality: - called via user input """ -from home.src.index.playlist import YoutubePlaylist from home.src.ta.ta_redis import RedisArchivist from home.tasks import run_restore_backup @@ -36,7 +35,6 @@ class PostData: "show_subed_only": self._show_subed_only, "show_ignored_only": self._show_ignored_only, "db-restore": self._db_restore, - "delete-playlist": self._delete_playlist, } return exec_map[self.to_exec] @@ -104,16 +102,3 @@ class PostData: filename = self.exec_val run_restore_backup.delay(filename) return {"success": True} - - def _delete_playlist(self): - """delete playlist, only metadata or incl all videos""" - playlist_dict = self.exec_val - playlist_id = playlist_dict["playlist-id"] - playlist_action = playlist_dict["playlist-action"] - print(f"{playlist_id}: delete playlist {playlist_action}") - if playlist_action == "metadata": - YoutubePlaylist(playlist_id).delete_metadata() - elif playlist_action == "all": - YoutubePlaylist(playlist_id).delete_videos_playlist() - - return {"success": True} diff --git a/tubearchivist/home/templates/home/playlist_id.html b/tubearchivist/home/templates/home/playlist_id.html index b814fec..d5d20dd 100644 --- a/tubearchivist/home/templates/home/playlist_id.html +++ b/tubearchivist/home/templates/home/playlist_id.html @@ -40,8 +40,8 @@
Delete {{ playlist_info.playlist_name }}? - -
+ +
diff --git a/tubearchivist/static/script.js b/tubearchivist/static/script.js index ec16569..7d2d3cf 100644 --- a/tubearchivist/static/script.js +++ b/tubearchivist/static/script.js @@ -381,13 +381,11 @@ function deleteChannel(button) { function deletePlaylist(button) { let playlist_id = button.getAttribute('data-id'); let playlist_action = button.getAttribute('data-action'); - let payload = JSON.stringify({ - 'delete-playlist': { - 'playlist-id': playlist_id, - 'playlist-action': playlist_action, - }, - }); - sendPost(payload); + let apiEndpoint = `/api/playlist/${playlist_id}/`; + if (playlist_action === 'delete-videos') { + apiEndpoint += '?delete-videos=true'; + } + apiRequest(apiEndpoint, 'DELETE'); setTimeout(function () { window.location.replace('/playlist/'); }, 1000);