52 lines
1.0 KiB
Python
52 lines
1.0 KiB
Python
import cherrypy as cp
|
|
|
|
from utils.df_utils import DateFrameHolder
|
|
from utils.st_utils import rerun
|
|
|
|
|
|
@cp.expose
|
|
class TableAPI:
|
|
|
|
def __init__(self):
|
|
self.dfh = DateFrameHolder("output.h5")
|
|
self.sid = None
|
|
self.changed = True
|
|
|
|
@property
|
|
def data(self):
|
|
self.changed = False
|
|
return self.dfh.df
|
|
|
|
@data.setter
|
|
def data(self, df):
|
|
if self.dfh.df.equals(df):
|
|
print("<<< skipping dump because dataframe did not change")
|
|
return
|
|
self.dfh.df = df
|
|
self.dfh.dump()
|
|
|
|
|
|
def GET(self):
|
|
return str(self.dfh.df)
|
|
|
|
@cp.tools.json_in()
|
|
def PATCH(self, **kwargs):
|
|
kwargs = kwargs or cp.request.json
|
|
self.dfh.append(kwargs)
|
|
self._trigger_changed()
|
|
self.dfh.dump()
|
|
return str(self.dfh.df)
|
|
|
|
def DELETE(self):
|
|
self.dfh.clear()
|
|
self._trigger_changed()
|
|
return "cleared"
|
|
|
|
|
|
def _trigger_changed(self):
|
|
self.changed = True
|
|
rerun(self.sid)
|
|
|
|
|
|
|