add dev override and web layer
This commit is contained in:
60
src/web.py
Normal file
60
src/web.py
Normal 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)
|
||||
Reference in New Issue
Block a user