From f5c757b855e333b568faf33d7238ccb40fe24859 Mon Sep 17 00:00:00 2001 From: Dominik George <dominik.george@teckids.org> Date: Mon, 4 May 2020 16:02:24 +0200 Subject: [PATCH] Add template filter to add CSS classes to HTML elements --- aleksis/core/templatetags/html_helpers.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 aleksis/core/templatetags/html_helpers.py diff --git a/aleksis/core/templatetags/html_helpers.py b/aleksis/core/templatetags/html_helpers.py new file mode 100644 index 000000000..2601b3aad --- /dev/null +++ b/aleksis/core/templatetags/html_helpers.py @@ -0,0 +1,23 @@ +from typing import Any + +from django import template + +from bs4 import BeautifulSoup + +register = template.Library() + + +@register.filter +def add_class_to_el(value: str, arg: str) -> str: + """Add a CSS class to every occurence of an element type. + + Example: {{ mymodel.myhtmlfield|add_class_to_el:"ul,browser-default" + """ + + el, cls = value.split(",") + soup = BeautifulSoup(value, "html.parser") + + for el in soup.find_all(el): + el["class"] = el.get("class", "") + f" {cls}" + + return str(soup) -- GitLab