Enable debug mode in config, enhance HTML response handling with minification, and clean up worklog template by removing commented button

This commit is contained in:
Yaro Kasear 2025-07-21 13:43:01 -05:00
parent fa37497e3a
commit f17051224d
5 changed files with 35 additions and 29 deletions

View file

@ -9,7 +9,7 @@ def quote(value: str) -> str:
class Config:
SQLALCHEMY_TRACK_MODIFICATIONS = False
DEBUG = False
DEBUG = True
TESTING = False
DB_BACKEND = os.getenv('DB_BACKEND', 'sqlite').lower()

View file

@ -1,18 +1,30 @@
from bs4 import BeautifulSoup
from flask import current_app as app
import re
from . import main
@main.after_request
def prettify_html_response(response):
if app.debug and response.content_type.startswith("text/html"):
def prettify_or_minify_html_response(response):
print(app.debug, response.content_type)
if response.content_type.startswith("text/html"):
try:
soup = BeautifulSoup(response.get_data(as_text=True), 'html5lib')
pretty_html = soup.prettify()
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.set_data(pretty_html.encode("utf-8")) # type: ignore
response.headers['Content-Type'] = 'text/html; charset=utf-8'
except Exception as e:
print(f"⚠️ Prettifying failed: {e}")
print(f"⚠️ Prettifying/Minifying failed: {e}")
return response

View file

@ -263,37 +263,35 @@
) }}
</div>
{% if worklog %}
<div class="col" id="worklog" style="max-height: 300px">
<div class="col" id="worklog">
<div class="row">
<div class="col form-label">
Work Log Entries
{% set id_list = worklog_rows | map(attribute='id') | list %}
{{ links.export_link(
id = (item.identifier | replace('Name: ', '')
| replace('ID:', '')
| replace('Serial: ', '')
| replace('Barcode: ', '')
| lower) + '_worklog',
| replace('ID:', '')
| replace('Serial: ', '')
| replace('Barcode: ', '')
| lower) + '_worklog',
endpoint = 'worklog',
ids = {'ids': id_list}
) }}
</div>
</div>
<div class="row border overflow-auto">
<div class="col">
<div class="row border">
<div class="col overflow-auto" style="max-height: 300px;">
{% for note in notes %}
{% set title %}
{{ note.timestamp.strftime('%Y-%m-%d %H:%M:%S') }}{{ links.entry_link('worklog_entry', note.work_log_id) }}
{% endset %}
<div class="row">
{{ editor.render_editor(
id = 'updates' + (note.id | string),
title = title,
content = note.content,
mode = 'view',
enabled = false
) }}
</div>
{{ editor.render_editor(
id = 'updates' + (note.id | string),
title = title,
content = note.content,
mode = 'view',
enabled = false
) }}
{% endfor %}
</div>
{% endif %}

View file

@ -219,11 +219,6 @@
<label class="form-label">Updates</label>
</div>
<div class="col">
{#
<button class="btn btn-primary mb-3" id="addUpdateButton"{% if log.complete %} disabled{% endif %}>
{{ icons.render_icon('plus-lg', 16) }}
</button>
#}
{% set addUpdateLogic %}
function formatDate(date) {
const pad = (n) => String(n).padStart(2, '0');

View file

@ -11,6 +11,7 @@ dependencies = [
"pandas",
"pyodbc",
"python-dotenv",
"waitress",
"Werkzeug"
]