""" 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_ENV = os.environ.get("APP_ENV", "dev") 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("index.html", listings_json=json.dumps(listings, ensure_ascii=False)) if __name__ == "__main__": if APP_ENV == "dev": app.run(debug=True, host="0.0.0.0", port=5005) else: from waitress import serve serve(app, host="0.0.0.0", port=5005)