Files
web_interface_demo/main.py
2024-11-19 11:33:05 -05:00

63 lines
1.6 KiB
Python

#Just some generic imports
from fastapi import FastAPI
from starlette.responses import FileResponse
from pysondb import db
from pydantic import BaseModel
from datetime import datetime
app = FastAPI()
# Get handles to database
care_db_file_name = "care_status.json"
care_transactions_file_name = "care_transactions.json"
status_db = db.getDb(care_db_file_name)
transactions_db = db.getDb(care_transactions_file_name)
# Return a html located within the pages folder
@app.get("/")
def root():
return FileResponse('pages/checkboxes_demo.html')
# Return data by just dumping the database content
@app.get('/data.json')
def get_data():
all_rows = status_db.getAll()
print("hello!")
for x in all_rows:
del x['id']
return {'result': all_rows}
# This is the "schema" of web request made back and forth between the frontend and backend
class UpdateRecordFeedSheet(BaseModel):
animal_name: str
column_name: str
value_set: bool
# This updates a record
@app.post('/update')
def update_data(item: UpdateRecordFeedSheet):
# Extract the needed values
animal_name = item.animal_name
column_name = item.column_name
value_set = item.value_set
#Find the row to update, and update the new value
row_to_update = status_db.reSearch('name',animal_name)[0] #Pick the first row of results. This isn't a proper database
status_db.updateById(row_to_update['id'], {column_name:value_set})
# Add what was done to the transactions database
transactions_db.add( {'name': animal_name, 'column_updated': column_name, 'value_set': value_set, 'timestamp':datetime.now().isoformat()})