Enhance app configuration and prettify HTML responses; update requirements and fix button identifiers in settings template

This commit is contained in:
Yaro Kasear 2025-07-07 12:02:06 -05:00
parent 7c15754cab
commit 4c36621eba
4 changed files with 28 additions and 8 deletions

View file

@ -17,6 +17,8 @@ def create_app():
app = Flask(__name__)
app.secret_key = os.getenv('SECRET_KEY', 'dev-secret-key-unsafe') # You know what to do for prod
app.config.from_object(Config)
app.jinja_env.trim_blocks = True
app.jinja_env.lstrip_blocks = True
db.init_app(app)

View file

@ -3,3 +3,4 @@ flask
flask_sqlalchemy
pandas
pyodbc
beautifulsoup4

View file

@ -9,6 +9,7 @@ import pandas as pd
import traceback
import json
import datetime
from bs4 import BeautifulSoup
main = Blueprint('main', __name__)
@ -78,6 +79,22 @@ worklog_form_fields = {
"notes": lambda log: {"label": "Notes", "type": "textarea", "value": log.notes or "", "rows": 15}
}
@main.after_request
def prettify_html_response(response):
if app.debug and response.content_type.startswith("text/html"):
try:
from bs4 import BeautifulSoup
soup = BeautifulSoup(response.get_data(as_text=True), 'html5lib')
pretty_html = soup.prettify()
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}")
return response
@main.route("/")
def index():
worklog_query = eager_load_worklog_relationships(

View file

@ -6,7 +6,7 @@
<form id="settingsForm">
{{ breadcrumbs.breadcrumb_header(
title=title,
submit_button=True
save_button=True
) }}
<div class="container">
@ -131,7 +131,7 @@
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-bs-dismiss="modal"
id="roomEditorCancelButton">Cancel</button>
<button type="button" class="btn btn-primary" id="roomEditorSaveButton">Save</button>
<button type="button" class="btn btn-primary" id="editorSaveButton">Save</button>
</div>
</div>
</div>
@ -196,9 +196,9 @@
};
}
document.addEventListener('DOMContentLoaded', () => {
const modal = document.getElementById('roomEditor');
const saveButton = document.getElementById('roomEditorSaveButton');
const saveButton = document.getElementById('saveButton')
const editorSaveButton = document.getElementById('editorSaveButton');
const cancelButton = document.getElementById('roomEditorCancelButton');
const form = document.getElementById('settingsForm');
@ -234,8 +234,9 @@
});
});
form.addEventListener('submit', async (event) => {
saveButton.addEventListener('click', async (event) => {
event.preventDefault();
console.log("Test")
const state = buildFormState();
if (!isSerializable(state)) {
@ -273,7 +274,7 @@
}
});
saveButton.addEventListener('click', () => {
editorSaveButton.addEventListener('click', () => {
const name = document.getElementById('roomName').value.trim();
const sectionVal = document.getElementById('roomSection').value;
const funcVal = document.getElementById('roomFunction').value;
@ -309,5 +310,4 @@
cancelButton.addEventListener('click', () => {
bootstrap.Modal.getInstance(modal).hide();
});
});
{% endblock %}