From f3062f7379182679fd3a5db5333a811263e7eab7 Mon Sep 17 00:00:00 2001 From: Roman Timashev Date: Mon, 14 Oct 2019 14:52:17 +0300 Subject: [PATCH] [sync] support custom item filter function --- utils/Sync/sync/core/__init__.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/utils/Sync/sync/core/__init__.py b/utils/Sync/sync/core/__init__.py index 8e41e7d6..f579ec75 100644 --- a/utils/Sync/sync/core/__init__.py +++ b/utils/Sync/sync/core/__init__.py @@ -13,7 +13,7 @@ def get_id(item): class Sync: - def __init__(self, provider: Provider, model): + def __init__(self, provider: Provider, model, filter_item_fn=None): super().__init__() self.validate_urls = True @@ -28,6 +28,7 @@ class Sync: self.provider = provider self.model = model + self.filter_item_fn = filter_item_fn if filter_item_fn else lambda x: True async def clean(self): pass @@ -75,6 +76,13 @@ class Sync: items = await self.model.scan(self.provider) self.logger.info('Found {} Item(s)'.format(len(items))) + # Optionally trim list of models by custom filter + items = [ + x + for x in items + if self.filter_item_fn(x) + ] + if self.validate_urls: self.check_urls_uniqueness(items)