From 7bf49680cfa968364b69be060357702fbcebec76 Mon Sep 17 00:00:00 2001 From: Roman Timashev Date: Mon, 9 Mar 2020 23:37:32 +0300 Subject: [PATCH] Sync refactoring: split model to model + controller --- modules/sync/sync.py | 9 +++++---- modules/sync/sync/core/__init__.py | 16 +++------------- modules/sync/sync/models/Page.py | 26 +++++++++++++++----------- 3 files changed, 23 insertions(+), 28 deletions(-) diff --git a/modules/sync/sync.py b/modules/sync/sync.py index 0e14cdde..d9c230fb 100644 --- a/modules/sync/sync.py +++ b/modules/sync/sync.py @@ -6,7 +6,7 @@ from sync.data.yandexdisk import YDProvider import asyncio import logging -from sync.models.Page import Page +from sync.models.Page import Page, PageController def init_logger(name: str, file: str): @@ -37,11 +37,12 @@ async def run_sync(sync: Sync, **kwargs): async def run(run_interval=0): - io = lambda root: get_provider(settings.provider_name, root) + provider = get_provider(settings.provider_name, settings.provider_root) + controller = PageController(provider) sync_pages = Sync( - provider=io(settings.provider_root), - model=Page, + ctrl=controller, + name='Page' ) sync_pages.set_options(True, True, True) diff --git a/modules/sync/sync/core/__init__.py b/modules/sync/sync/core/__init__.py index 03be9576..1db0c029 100644 --- a/modules/sync/sync/core/__init__.py +++ b/modules/sync/sync/core/__init__.py @@ -1,12 +1,10 @@ import logging - import settings from sync import untouched -from sync.data import Provider class Sync: - def __init__(self, provider: Provider, model): + def __init__(self, ctrl, name: str): super().__init__() self.validate_urls = True @@ -16,11 +14,9 @@ class Sync: } self.__delete_query = lambda item: {'_id': item['_id']} - name = model.__name__ self.logger = logging.getLogger('%s.%s' % (settings.name, name)) - self.provider = provider - self.model = model + self.ctrl = ctrl self.filter_item_fn = lambda x: True self.skip_unchanged = True @@ -37,9 +33,6 @@ class Sync: self.filter_item_fn = fn return self - async def clean(self): - pass - async def build(self, item): args = self._get_build_args() await item.build(**args) @@ -83,7 +76,7 @@ class Sync: """ self.logger.info('Checking for update') - items = await self.model.scan(self.provider) + items = await self.ctrl.get_items() self.logger.info('Found {} Item(s)'.format(len(items))) all_items = items @@ -132,6 +125,3 @@ class Sync: if len(urls) != len(unique_urls): self.logger.error('URLs is not unique') raise Exception('URLs is not unique') - - async def upload(self): - pass diff --git a/modules/sync/sync/models/Page.py b/modules/sync/sync/models/Page.py index 4b72439c..953b3927 100644 --- a/modules/sync/sync/models/Page.py +++ b/modules/sync/sync/models/Page.py @@ -30,27 +30,31 @@ def find(store, item_id: str): return None -class Page(Model): - @staticmethod - async def find(query): +class PageController: + def __init__(self, provider): + self.provider = provider + + async def find(self, query): return store.find(query) - @staticmethod - async def delete(query): + async def delete_item(self, query): return store.find_one_and_delete(query) - @staticmethod - async def scan(provider): + async def get_items(self): scan_path = settings.dir_pages items = [ - Page.read(provider, path) - for path in provider.scan(scan_path) - if provider.is_dir(path) + Page.read(self.provider, path) + for path in self.provider.scan(scan_path) + if self.provider.is_dir(path) ] items = [i for i in items if i] - return items + # async def read(self, path: str): + # return Page.read(self.provider, path) + + +class Page(Model): @staticmethod def read(provider, path): """