Files
huizenbot/src/web.py
2026-04-04 15:51:01 +02:00

66 lines
1.6 KiB
Python

"""
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)