import json
import datetime
import jinja2
-from plomlib import PlomDB, PlomException, run_server, run_server, PlomServer
+from plomlib import PlomDB, PlomException, run_server, PlomHandler
db_path = '/home/plom/org/calories_db.json'
input[type="number"] { text-align: right; }
</style>
<body>
-<form action="/" method="POST">
+<form action="{{homepage}}" method="POST">
<td><input name="update" type="submit" value="update" /></td>
<table>
<tr><th>eatable</th><th>unit count</th><th>unit weight (g)</th><th>calories</th><th>sugar (g)</th></tr>
self.write_text_to_db(json.dumps(self.to_dict()))
-class CaloriesServer(PlomServer):
+class ConsumptionsHandler(PlomHandler):
+
+ def app_init(self, handler):
+ default_path = '/consumptions'
+ handler.add_route('GET', default_path, self.show_db)
+ handler.add_route('POST', default_path, self.write_db)
+ return 'consumptions', default_path
def do_POST(self):
+ self.write_db()
+
+ def write_db(self):
from uuid import uuid4
from urllib.parse import parse_qs
length = int(self.headers['content-length'])
break
try:
db.write()
- self.redirect()
+ homepage = self.apps['consumptions'] if hasattr(self, 'apps') else self.homepage
+ self.redirect(homepage)
except PlomException as e:
self.fail_400(e)
def do_GET(self):
+ self.show_db()
+
+ def show_db(self):
db = CaloriesDB()
- # eatables = ""
eatable_rows = []
for k,v in db.eatables.items():
eatable_rows += [{
'cals': f'{day.calories:.1f}',
'sugar': f'{day.sugar_g:.1f}',
}]
+ homepage = self.apps['consumptions'] if hasattr(self, 'apps') else self.homepage
page = jinja2.Template(tmpl).render(
+ homepage = homepage,
db=db,
days=day_rows,
consumptions=consumption_rows,
if __name__ == "__main__":
- run_server(server_port, CaloriesServer)
+ run_server(server_port, ConsumptionsHandler)