From 14954c2b717a83cecf2680388b6225ba3ccc002a Mon Sep 17 00:00:00 2001 From: Roman Timashev Date: Sun, 15 Oct 2017 22:27:48 +0300 Subject: [PATCH] [www] Initial Fake Parsing Documents from Markdown. Added documents to Article --- utils/Sync/kazimir/__init__.py | 6 ++++-- utils/Sync/sync/__init__.py | 2 +- utils/Sync/sync/models/Article.py | 26 +++++++++++++++++--------- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/utils/Sync/kazimir/__init__.py b/utils/Sync/kazimir/__init__.py index 9f0794e0..4423f720 100644 --- a/utils/Sync/kazimir/__init__.py +++ b/utils/Sync/kazimir/__init__.py @@ -19,12 +19,14 @@ def markdown_to_html(text): ]) -def get_images_src(text: str) -> [str]: +def extract_files(text: str) -> [str]: html = markdown(text) post_html = lxml.html.fromstring(html) images = post_html.cssselect('img') - return [img.get('src') for img in images] + images = [img.get('src') for img in images] + + return images, [] def create_tree(text: str) -> str: diff --git a/utils/Sync/sync/__init__.py b/utils/Sync/sync/__init__.py index 16f1c402..698500a8 100644 --- a/utils/Sync/sync/__init__.py +++ b/utils/Sync/sync/__init__.py @@ -101,7 +101,7 @@ async def create_post(provider: Provider, folder: str, md: str, sizes): post = kazimir.html_from_tree(html) post = await kazimir.typo(post) - return post, images + return post, images, [] def images_from_html(md): diff --git a/utils/Sync/sync/models/Article.py b/utils/Sync/sync/models/Article.py index 51b98af0..6a0a84ab 100644 --- a/utils/Sync/sync/models/Article.py +++ b/utils/Sync/sync/models/Article.py @@ -70,15 +70,18 @@ class Article(Model): self.post = None self.preview = None self.images = None + self.documents = None super().__init__(provider, store, file, params=params) def init(self): if self.has_param('content'): - images = kazimir.get_images_src(self.get_param('content')) + images, documents = kazimir.extract_files(self.get_param('content')) else: images = list_images(self.provider, self.file) images = [os.path.relpath(i, self.file) for i in images] + documents = [] self.params['images'] = images + self.params['documents'] = documents self.__set_id() self.__set_hash() @@ -99,9 +102,10 @@ class Article(Model): else: markdown_post = create_post_from_image_list(self.get_param('images')) - post, images = await create_post(self.provider, self.get_param('folder'), markdown_post, sizes) + post, images, documents = await create_post(self.provider, self.get_param('folder'), markdown_post, sizes) self.post = post self.images = images + self.documents = documents if self.has_param('preview'): preview = self.get_param('preview') @@ -112,7 +116,8 @@ class Article(Model): def bake(self): return { **self.params, - 'images': [i.ref for i in self.images], + 'images': [x.ref for x in self.images], + 'documents': [x.ref for x in self.documents], 'post': self.post, 'id': self.id, 'hash': self.hash, @@ -129,15 +134,18 @@ class Article(Model): self.id = url_encode_text(self.params['title']) def __set_hash(self): - f = self.params['folder'] - images = sorted(self.params['images']) + files = [] + files += sorted(self.get_param('images')) + files += sorted(self.get_param('documents')) if self.has_param('preview'): - images.append(self.get_param('preview')) - images = [os.path.join(f, i) for i in images] - images = [self.provider.hash(i) for i in images] + files.append(self.get_param('preview')) + + folder = self.get_param('folder') + files = [os.path.join(folder, x) for x in files] + files = [self.provider.hash(x) for x in files] self.hash = hash_str( - combine([self.hash_salt] + [hash_str(self.params)] + images) + combine([self.hash_salt] + [hash_str(self.params)] + files) ) def __str__(self):