add dev override and web layer

This commit is contained in:
2026-04-04 14:47:01 +02:00
parent f1748214ce
commit 423a429f56
6 changed files with 711 additions and 3 deletions

60
src/web.py Normal file
View File

@@ -0,0 +1,60 @@
"""
web.py — huizenbot web interface
Single route: query SQLite, SSR listings into index.html template.
"""
import json
import sqlite3
import os
from flask import Flask, render_template, g
DB_PATH = os.environ.get("DB_PATH", "/data/huizenbot.db")
app = Flask(__name__)
def get_db():
if "db" not in g:
conn = sqlite3.connect(DB_PATH)
conn.row_factory = sqlite3.Row
g.db = conn
return g.db
@app.teardown_appcontext
def close_db(e=None):
db = g.pop("db", None)
if db is not None:
db.close()
@app.route("/")
def index():
conn = get_db()
rows = conn.execute("""
SELECT
id, url, source_makelaar, first_seen, last_seen, datum_aanmelding,
status, adres, postcode, stad,
prijs, woningtype, woonoppervlak, perceeloppervlak,
kamers, slaapkamers, bouwjaar, energielabel,
hero_image_url,
fiets_mark, fiets_michelle, ov_mark, ov_michelle,
extra
FROM woningen
WHERE status = 'beschikbaar'
ORDER BY first_seen DESC
""").fetchall()
listings = []
for row in rows:
d = dict(row)
try:
d["extra"] = json.loads(d["extra"]) if d["extra"] else {}
except Exception:
d["extra"] = {}
listings.append(d)
return render_template("src/views/index.html", listings_json=json.dumps(listings, ensure_ascii=False))
if __name__ == "__main__":
app.run(debug=True, host="0.0.0.0", port=5000)