inventory/inventory/routes/hooks.py

29 lines
1.1 KiB
Python

from bs4 import BeautifulSoup
from flask import current_app as app
import re
from . import main
@main.after_request
def prettify_or_minify_html_response(response):
if response.content_type.startswith("text/html"):
try:
html = response.get_data(as_text=True)
soup = BeautifulSoup(html, 'html5lib')
if app.debug:
pretty_html = soup.prettify()
response.set_data(pretty_html.encode("utf-8")) # type: ignore
#else:
# # Minify by stripping extra whitespace between tags and inside text
# minified_html = re.sub(r">\s+<", "><", str(soup)) # collapse whitespace between tags
# minified_html = re.sub(r"\s{2,}", " ", minified_html) # collapse multi-spaces to one
# minified_html = re.sub(r"\n+", "", minified_html) # remove newlines
# response.set_data(minified_html.encode("utf-8")) # type: ignore
response.headers['Content-Type'] = 'text/html; charset=utf-8'
except Exception as e:
print(f"⚠️ Prettifying/Minifying failed: {e}")
return response