mirror of
https://github.com/RYGhub/royalnet.git
synced 2024-11-23 19:44:20 +00:00
Allow different page formats
This commit is contained in:
parent
95a665c265
commit
9782cc973b
2 changed files with 22 additions and 5 deletions
|
@ -23,3 +23,7 @@ class WikiPage:
|
||||||
@declared_attr
|
@declared_attr
|
||||||
def content(self):
|
def content(self):
|
||||||
return Column(Text)
|
return Column(Text)
|
||||||
|
|
||||||
|
@declared_attr
|
||||||
|
def format(self):
|
||||||
|
return Column(String, nullable=False, default="markdown")
|
||||||
|
|
|
@ -12,7 +12,7 @@ bp = Royalprint("wikiview", __name__, url_prefix="/wikiview", template_folder=tm
|
||||||
required_tables={Royal, WikiPage, WikiRevision})
|
required_tables={Royal, WikiPage, WikiRevision})
|
||||||
|
|
||||||
|
|
||||||
def prepare_page(page):
|
def prepare_page_markdown(page):
|
||||||
converted_md = markdown2.markdown(page.content.replace("<", "<"),
|
converted_md = markdown2.markdown(page.content.replace("<", "<"),
|
||||||
extras=["spoiler", "tables", "smarty-pants", "fenced-code-blocks"])
|
extras=["spoiler", "tables", "smarty-pants", "fenced-code-blocks"])
|
||||||
converted_md = re.sub(r"{https?://(?:www\.)?(?:youtube\.com/watch\?.*?&?v=|youtu.be/)([0-9A-Za-z-]+).*?}",
|
converted_md = re.sub(r"{https?://(?:www\.)?(?:youtube\.com/watch\?.*?&?v=|youtu.be/)([0-9A-Za-z-]+).*?}",
|
||||||
|
@ -30,7 +30,20 @@ def prepare_page(page):
|
||||||
r' <iframe width="100%" height="160" src="https://clyp.it/\1/widget" frameborder="0">'
|
r' <iframe width="100%" height="160" src="https://clyp.it/\1/widget" frameborder="0">'
|
||||||
r' </iframe>'
|
r' </iframe>'
|
||||||
r'</div>', converted_md)
|
r'</div>', converted_md)
|
||||||
return converted_md
|
return f.Markup(converted_md)
|
||||||
|
|
||||||
|
|
||||||
|
def prepare_page_html(page):
|
||||||
|
return f.Markup(page.content)
|
||||||
|
|
||||||
|
|
||||||
|
def prepare_page(page):
|
||||||
|
if page.format == "markdown":
|
||||||
|
return prepare_page_markdown(page)
|
||||||
|
elif page.format == "html":
|
||||||
|
return prepare_page_html(page)
|
||||||
|
else:
|
||||||
|
return "Format not available", 500
|
||||||
|
|
||||||
|
|
||||||
@bp.route("/")
|
@bp.route("/")
|
||||||
|
@ -47,7 +60,7 @@ def wikiview_by_id(page_id: str):
|
||||||
page = alchemy_session.query(alchemy.WikiPage).filter(alchemy.WikiPage.page_id == page_uuid).one_or_none()
|
page = alchemy_session.query(alchemy.WikiPage).filter(alchemy.WikiPage.page_id == page_uuid).one_or_none()
|
||||||
if page is None:
|
if page is None:
|
||||||
return "No such page", 404
|
return "No such page", 404
|
||||||
parsed_content = prepare_page(page)
|
parsed_content = prepare_page_markdown(page)
|
||||||
return f.render_template("wikiview_page.html", page=page, parsed_content=f.Markup(parsed_content))
|
return f.render_template("wikiview_page.html", page=page, parsed_content=f.Markup(parsed_content))
|
||||||
|
|
||||||
|
|
||||||
|
@ -57,5 +70,5 @@ def wikiview_by_title(title: str):
|
||||||
page = alchemy_session.query(alchemy.WikiPage).filter(alchemy.WikiPage.title == title).one_or_none()
|
page = alchemy_session.query(alchemy.WikiPage).filter(alchemy.WikiPage.title == title).one_or_none()
|
||||||
if page is None:
|
if page is None:
|
||||||
return "No such page", 404
|
return "No such page", 404
|
||||||
parsed_content = prepare_page(page)
|
parsed_content = prepare_page_markdown(page)
|
||||||
return f.render_template("wikiview_page.html", page=page, parsed_content=f.Markup(parsed_content))
|
return f.render_template("wikiview_page.html", page=page, parsed_content=parsed_content)
|
||||||
|
|
Loading…
Reference in a new issue