From 213d7ca34465806b68ee03422cb00c50f5f7f421 Mon Sep 17 00:00:00 2001 From: Roman Timashev Date: Thu, 12 Oct 2017 17:31:55 +0300 Subject: [PATCH] [Sync] Page uses common provider --- utils/Sync/settings.py | 2 +- utils/Sync/sync.py | 2 +- utils/Sync/sync/models/Page.py | 31 ++++++++++++++++++++++--------- 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/utils/Sync/settings.py b/utils/Sync/settings.py index 80260705..9a15b1c2 100644 --- a/utils/Sync/settings.py +++ b/utils/Sync/settings.py @@ -141,7 +141,7 @@ dir_schedules = f('Schedules') dir_articles = f('Articles') dir_collective = f('Collective') dir_albums = f('Gallery') -dir_pages = f('Pages') +dir_pages = './Pages' page_url_base = 'https://static.shlisselburg.org/art/images/page-{page}-{id}-{size}{ext}' diff --git a/utils/Sync/sync.py b/utils/Sync/sync.py index d8713573..5885a190 100644 --- a/utils/Sync/sync.py +++ b/utils/Sync/sync.py @@ -51,7 +51,7 @@ async def run(run_interval=0): ) pages = Sync( - provider=io(settings.dir_pages), + provider=io(settings.provider_root), model=Page, ) diff --git a/utils/Sync/sync/models/Page.py b/utils/Sync/sync/models/Page.py index 30ac57dc..de5a3766 100644 --- a/utils/Sync/sync/models/Page.py +++ b/utils/Sync/sync/models/Page.py @@ -40,9 +40,9 @@ class Page(Model): @staticmethod async def scan(provider): - documents = [i for i in provider.scan('.') if provider.is_dir(i)] - documents = [provider.type_filter(i, '.md') for i in documents] - documents = [i[0] for i in documents if len(i)] + scan_path = settings.dir_pages + documents = [i for i in provider.scan(scan_path) if provider.is_dir(i)] + documents = [Page.read(provider, i) for i in documents] documents = [i for i in documents if i] @@ -50,25 +50,38 @@ class Page(Model): @staticmethod def read(provider, path): + """ + :param provider: + :param path: path to page manifest file. For example: /Pages//.md + :return: + """ + dir_name = os.path.basename(path) + + manifest_file = lambda ext: os.path.join(path, dir_name + ext) + manifest_path = manifest_file('.md') + + if not provider.exists(manifest_path): + return None + params = { - 'file': os.path.basename(path), - 'folder': os.path.dirname(path), - 'title': os.path.basename(path), + 'file': os.path.basename(manifest_path), + 'folder': os.path.dirname(manifest_path), + 'title': os.path.basename(manifest_path), } - manifest = get_manifest(provider, path) + manifest = get_manifest(provider, manifest_path) params = { **params, **manifest, } if 'url' not in params: - logger.warning('URL not specified for Page {}'.format(path)) + logger.warning('URL not specified for Page {}'.format(manifest_path)) return None return Page( provider, - path, + manifest_path, params=params, )