From e3c57ef674ecdf3bd39df4fe341e516ba0edab92 Mon Sep 17 00:00:00 2001 From: Roland Date: Thu, 30 Dec 2021 18:31:35 -0700 Subject: [PATCH] Adding __json__ to Downloader for sending them to the FE. Hiding ChannelDownloader because it will be handled specifically. --- modules/videos/downloader.py | 1 + modules/videos/test/test_downloader.py | 8 ++++++++ wrolpi/downloader.py | 12 +++++------- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/modules/videos/downloader.py b/modules/videos/downloader.py index 7d2002cc..9d37c15c 100755 --- a/modules/videos/downloader.py +++ b/modules/videos/downloader.py @@ -50,6 +50,7 @@ class ChannelDownloader(Downloader, ABC): """ name = 'video_channel' pretty_name = 'Video Channel' + listable = False def __repr__(self): return f'' diff --git a/modules/videos/test/test_downloader.py b/modules/videos/test/test_downloader.py index 68d6d1db..d5b81fb2 100644 --- a/modules/videos/test/test_downloader.py +++ b/modules/videos/test/test_downloader.py @@ -426,3 +426,11 @@ def test_selected_downloader(test_session, video_download_manager): mock_do_download.assert_called_once() check_attempts(3) + + +def test_channel_downloader_hidden(video_download_manager): + """ + ChannelDownloader should not be presented to the User. + """ + downloaders = video_download_manager.list_downloaders() + assert downloaders == [(dict(name='video', pretty_name='Videos')), ] diff --git a/wrolpi/downloader.py b/wrolpi/downloader.py index 3d717ce0..50bc8efb 100644 --- a/wrolpi/downloader.py +++ b/wrolpi/downloader.py @@ -106,6 +106,7 @@ class Download(ModelHelper, Base): class Downloader: name = None pretty_name = None + listable = True def __init__(self, priority: int = 50, name: str = None): """ @@ -126,6 +127,9 @@ class Downloader: download_manager.register_downloader(self) + def __json__(self): + return dict(name=self.name, pretty_name=self.pretty_name) + @classmethod def valid_url(cls, url) -> Tuple[bool, Optional[dict]]: raise NotImplementedError() @@ -530,13 +534,7 @@ class DownloadManager: """ Return a list of the Downloaders available on this Download Manager. """ - downloaders = [] - for i in self.instances: - downloaders.append(dict( - name=i.name, - pretty_name=i.pretty_name, - )) - return downloaders + return list(filter(lambda i: i.listable, self.instances)) # The global DownloadManager. This should be used everywhere!