X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=calories.py;h=9951ce5c98896ef91319282143b2925b657ec280;hb=40021a447d9a6444205c82b2bdcd924e0586a07f;hp=88165b8da1e0be4a9447a9562f81041335cbee1f;hpb=436e0f40b45319ef4452ce6ced1a3c3df813119b;p=misc diff --git a/calories.py b/calories.py index 88165b8..9951ce5 100644 --- a/calories.py +++ b/calories.py @@ -2,7 +2,7 @@ import os 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' @@ -16,7 +16,7 @@ td.number { text-align: right; } input[type="number"] { text-align: right; } -
+ @@ -224,9 +224,18 @@ class CaloriesDB(PlomDB): 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.try_do(self.write_db) + + def write_db(self): from uuid import uuid4 from urllib.parse import parse_qs length = int(self.headers['content-length']) @@ -242,8 +251,7 @@ class CaloriesServer(PlomServer): to_delete += [target] i = 0 if 'eatable_uuid' in postvars.keys(): - for uuid_encoded in postvars['eatable_uuid']: - uuid = uuid_encoded + for uuid in postvars['eatable_uuid']: if uuid not in to_delete: e = Eatable(decode("title", i, False), decode("cals", i), decode("sugar_g", i), decode("standard_g", i), decode("comments", i, False)) db.add_eatable(uuid, e) @@ -281,15 +289,15 @@ class CaloriesServer(PlomServer): default_slots -= 1 if (default_slots <= 0): break - try: - db.write() - self.redirect() - except PlomException as e: - self.fail_400(e) + db.write() + homepage = self.apps['consumptions'] if hasattr(self, 'apps') else self.homepage + self.redirect(homepage) def do_GET(self): + self.try_do(self.show_db) + + def show_db(self): db = CaloriesDB() - # eatables = "" eatable_rows = [] for k,v in db.eatables.items(): eatable_rows += [{ @@ -320,7 +328,9 @@ class CaloriesServer(PlomServer): '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, @@ -330,4 +340,4 @@ class CaloriesServer(PlomServer): if __name__ == "__main__": - run_server(server_port, CaloriesServer) + run_server(server_port, ConsumptionsHandler)
eatableunit countunit weight (g)caloriessugar (g)