From f6412abc4706ae71070411febf9b9fc773a2d529 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Thu, 9 Apr 2020 17:13:13 +0530 Subject: [PATCH 1/4] feat: handle frontmatter via internal API chore: drop frontmatter dependency Co-authored-by: Jonathan Beebe --- frappe/website/router.py | 41 ++++++++++++++++++++++++++++++---------- requirements.txt | 1 - 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/frappe/website/router.py b/frappe/website/router.py index bce40c7713..14fdc4bd6e 100644 --- a/frappe/website/router.py +++ b/frappe/website/router.py @@ -2,13 +2,18 @@ # MIT License. See license.txt from __future__ import unicode_literals -import frappe, os -from frappe.website.utils import (can_cache, delete_page_cache, extract_title, - extract_comment_tag) -from frappe.model.document import get_controller -from six import text_type import io +import os +import re + +import yaml +from six import text_type + +import frappe +from frappe.model.document import get_controller +from frappe.website.utils import can_cache, delete_page_cache, extract_comment_tag, extract_title + def resolve_route(path): """Returns the page route object based on searching in pages and generators. @@ -229,10 +234,26 @@ def get_page_info(path, app, start, basepath=None, app_path=None, fname=None): return page_info +def get_frontmatter(string): + """ + Reference: https://github.com/jonbeebe/frontmatter + """ + + fmatter = "" + body = "" + result = re.compile(r'^\s*(?:---|\+\+\+)(.*?)(?:---|\+\+\+)\s*(.+)$', re.S | re.M).search(string) + + if result: + fmatter = result.group(1) + body = result.group(2) + + return { + "attributes": yaml.load(fmatter), + "body": body, + } + def setup_source(page_info): '''Get the HTML source of the template''' - from frontmatter import Frontmatter - jenv = frappe.get_jenv() source = jenv.loader.get_source(jenv, page_info.template)[0] html = '' @@ -241,11 +262,11 @@ def setup_source(page_info): # extract frontmatter block if exists try: # values will be used to update page_info - res = Frontmatter.read(source) + res = get_frontmatter(source) if res['attributes']: page_info.update(res['attributes']) source = res['body'] - except Exception as e: + except Exception: pass if page_info.template.endswith('.md'): @@ -367,4 +388,4 @@ def get_doctypes_with_web_view(): return frappe.cache().get_value('doctypes_with_web_view', _get) def get_start_folders(): - return frappe.local.flags.web_pages_folders or ('www', 'templates/pages') \ No newline at end of file + return frappe.local.flags.web_pages_folders or ('www', 'templates/pages') diff --git a/requirements.txt b/requirements.txt index 55a4910056..b1611ffb02 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,7 +12,6 @@ cryptography==2.8 dropbox==9.1.0 email-reply-parser==0.5.9 Faker==2.0.4 -frontmatter==3.0.6 future==0.18.2 GitPython==2.1.15 gitdb2==2.0.6;python_version<'3.4' From b483c5c3c29230f3c343807628569b70efebe57a Mon Sep 17 00:00:00 2001 From: gavin Date: Fri, 10 Apr 2020 11:15:34 +0530 Subject: [PATCH 2/4] chore: update deprecated yaml API Ref: https://github.com/yaml/pyyaml/wiki/PyYAML-yaml.load(input)-Deprecation Co-Authored-By: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com> --- frappe/website/router.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frappe/website/router.py b/frappe/website/router.py index 14fdc4bd6e..bc273a3e6a 100644 --- a/frappe/website/router.py +++ b/frappe/website/router.py @@ -248,7 +248,7 @@ def get_frontmatter(string): body = result.group(2) return { - "attributes": yaml.load(fmatter), + "attributes": yaml.safe_load(fmatter), "body": body, } From 608243b16503ab6e52fd2caad342a89df9f76de9 Mon Sep 17 00:00:00 2001 From: Gavin D'souza Date: Fri, 10 Apr 2020 11:16:34 +0530 Subject: [PATCH 3/4] chore(deps): bump PyYAML to 5.3.1 --- requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/requirements.txt b/requirements.txt index b1611ffb02..e9d3777213 100644 --- a/requirements.txt +++ b/requirements.txt @@ -48,7 +48,7 @@ pypng==0.0.20 PyQRCode==1.2.1 python-dateutil==2.8.1 pytz==2019.3 -PyYAML==5.1 +PyYAML==5.3.1 rauth==0.7.3 redis>=3.0 requests-oauthlib==1.3.0 From d93f8d8f3fe214193952eb6e1f53b8a8c2ea8dcf Mon Sep 17 00:00:00 2001 From: Suraj Shetty <13928957+surajshetty3416@users.noreply.github.com> Date: Fri, 10 Apr 2020 22:07:03 +0530 Subject: [PATCH 4/4] style: Remove unused import --- frappe/website/router.py | 1 - 1 file changed, 1 deletion(-) diff --git a/frappe/website/router.py b/frappe/website/router.py index bc273a3e6a..4a9db0868f 100644 --- a/frappe/website/router.py +++ b/frappe/website/router.py @@ -8,7 +8,6 @@ import os import re import yaml -from six import text_type import frappe from frappe.model.document import get_controller