From c489b5e09f419865ca7afcd94a084c0144246351 Mon Sep 17 00:00:00 2001 From: Andrea Cecchi Date: Wed, 5 Feb 2025 16:42:32 +0100 Subject: [PATCH] improve block conversion --- CHANGES.rst | 6 ++++-- src/rer/newsletter/blocks_converter/__init__.py | 6 ++++-- .../newsletter/blocks_converter/slate2html.py | 17 +++++++++++------ .../browser/message/messagepreview.py | 3 +++ 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 3078f4de..2ebc62ba 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -5,8 +5,10 @@ Changelog 3.1.3 (unreleased) ------------------ -- Nothing changed yet. - +- Handle text-larger class in slate2html. + [cekk] +- Do not pretty slate2html output to avoid not needed spaces between tags. + [cekk] 3.1.2 (2024-12-05) ------------------ diff --git a/src/rer/newsletter/blocks_converter/__init__.py b/src/rer/newsletter/blocks_converter/__init__.py index 9454bb91..d03643dd 100644 --- a/src/rer/newsletter/blocks_converter/__init__.py +++ b/src/rer/newsletter/blocks_converter/__init__.py @@ -30,8 +30,10 @@ def __call__(self, context, blocks, blocks_layout): if value: html.append(value) root = "".join(html) - soup = bs(root, "html.parser") # make BeautifulSoup - return soup.prettify() # prettify the html + + # soup = bs(root, "html.parser") # make BeautifulSoup + # return soup.prettify() # prettify the html + return root def get_blocks(self, context, blocks, blocks_layout): """ diff --git a/src/rer/newsletter/blocks_converter/slate2html.py b/src/rer/newsletter/blocks_converter/slate2html.py index 4eaae66f..7056d19a 100644 --- a/src/rer/newsletter/blocks_converter/slate2html.py +++ b/src/rer/newsletter/blocks_converter/slate2html.py @@ -34,15 +34,21 @@ def serialize(self, element): :param element: """ if "text" in element: - if "\n" not in element["text"]: - return [element["text"]] - - return join(E.BR, element["text"].split("\n")) + text_elements = element["text"].split("\n") + if element.get("style-text-larger", False): + text_elements = [ + E.SPAN( + x, + **{"class": "text-larger"}, + ) + for x in text_elements + ] + + return join(E.BR, text_elements) if element["type"] == "paragraph": element["type"] = "p" tagname = element["type"] - if element.get("data") and tagname not in SLATE_ACCEPTED_TAGS: handler = self.handle_slate_data_element else: @@ -73,7 +79,6 @@ def handle_tag_link(self, element): children = [] for child in element["children"]: children += self.serialize(child) - return el(*children, **attributes) def handle_slate_data_element(self, element): diff --git a/src/rer/newsletter/browser/message/messagepreview.py b/src/rer/newsletter/browser/message/messagepreview.py index f4bf9409..628b18fe 100644 --- a/src/rer/newsletter/browser/message/messagepreview.py +++ b/src/rer/newsletter/browser/message/messagepreview.py @@ -22,6 +22,9 @@ #footer { clear: both; } +.text-larger { + font-size: 1.75em; +} """