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() self.sid = None self.changed = True @property def data(self): self.changed = False return self.dfh.df @data.setter def data(self, df): self.dfh.df = df 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() 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)