From 08453382f8a371c74d517d4994c4615eca3b541d Mon Sep 17 00:00:00 2001 From: ahmedasar00 Date: Wed, 17 Dec 2025 22:13:09 +0200 Subject: [PATCH 1/5] Add Markdown table support in blog entry --- blog/models.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/blog/models.py b/blog/models.py index f27cffd6c..790a3d2d1 100644 --- a/blog/models.py +++ b/blog/models.py @@ -15,6 +15,9 @@ from markdown import markdown from markdown.extensions.toc import TocExtension, slugify as _md_title_slugify +from markdown.extensions.tables import TableExtension + + BLOG_DOCUTILS_SETTINGS = { "doctitle_xform": False, "initial_header_level": 3, @@ -66,6 +69,8 @@ def to_html(cls, fmt, source): extensions=[ # baselevel matches `initial_header_level` from BLOG_DOCUTILS_SETTINGS TocExtension(baselevel=3, slugify=_md_slugify), + "markdown.extensions.tables", + TableExtension(), ], ) raise ValueError(f"Unsupported format {fmt}") From 547f3ac165ab2f559cde8f320c3aec545ad083e9 Mon Sep 17 00:00:00 2001 From: ahmedasar00 Date: Wed, 17 Dec 2025 23:45:21 +0200 Subject: [PATCH 2/5] Add Markdown table support in Entry model and corresponding test case --- blog/tests.py | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/blog/tests.py b/blog/tests.py index f67bc7ea1..c4891e1da 100644 --- a/blog/tests.py +++ b/blog/tests.py @@ -159,6 +159,28 @@ def test_pub_date_localized(self): with translation.override("nn"): self.assertEqual(entry.pub_date_localized, "21. juli 2005") + def test_markdown_table_conversion(self): + body = ( + "| Framework | Language |\n" + "|-----------|----------|\n" + "| Django | Python |\n" + "| Flask | Python |" + ) + + entry = Entry.objects.create( + pub_date=self.now, + slug="markdown-table", + body=body, + content_format=ContentFormat.MARKDOWN, + ) + expected_html = ( + "\n" + "\n\n\n\n\n\n" + "\n\n\n\n\n" + "\n\n\n\n\n
FrameworkLanguage
DjangoPython
FlaskPython
" + ) + self.assertInHTML(expected_html, entry.body_html) + class EventTestCase(DateTimeMixin, TestCase): def test_manager_past_future(self): From e4f5c446a9609b01392b110b945b508a78a91414 Mon Sep 17 00:00:00 2001 From: ahmedasar00 Date: Thu, 18 Dec 2025 23:06:29 +0200 Subject: [PATCH 3/5] Simplify Markdown tables extension usage --- blog/models.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/blog/models.py b/blog/models.py index 790a3d2d1..58e8fe598 100644 --- a/blog/models.py +++ b/blog/models.py @@ -69,8 +69,7 @@ def to_html(cls, fmt, source): extensions=[ # baselevel matches `initial_header_level` from BLOG_DOCUTILS_SETTINGS TocExtension(baselevel=3, slugify=_md_slugify), - "markdown.extensions.tables", - TableExtension(), + "tables", ], ) raise ValueError(f"Unsupported format {fmt}") From acfc6c94460c3d16caad67638622326bc068d0c2 Mon Sep 17 00:00:00 2001 From: ahmedasar00 Date: Fri, 19 Dec 2025 00:21:49 +0200 Subject: [PATCH 4/5] Remove TableExtention import adn use 'tables' shorthand --- blog/models.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/blog/models.py b/blog/models.py index 58e8fe598..3bf4885ea 100644 --- a/blog/models.py +++ b/blog/models.py @@ -15,8 +15,6 @@ from markdown import markdown from markdown.extensions.toc import TocExtension, slugify as _md_title_slugify -from markdown.extensions.tables import TableExtension - BLOG_DOCUTILS_SETTINGS = { "doctitle_xform": False, From 0a0fb55e1667e896a8c4a81f2bf07cef4f79a157 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 18 Dec 2025 22:22:20 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- blog/models.py | 1 - 1 file changed, 1 deletion(-) diff --git a/blog/models.py b/blog/models.py index 3bf4885ea..10e065a0d 100644 --- a/blog/models.py +++ b/blog/models.py @@ -15,7 +15,6 @@ from markdown import markdown from markdown.extensions.toc import TocExtension, slugify as _md_title_slugify - BLOG_DOCUTILS_SETTINGS = { "doctitle_xform": False, "initial_header_level": 3,