import cherrypy import sqlite3 import json from lib import uuid from lib import database STATUS_INVENTORY = 0 STATUS_ACTIVE = 1 STATUS_INACTIVE = 2 STATUS_SUSPENDED = 3 STATUS_DEAD = 4 def loadAll(): db = database.connect() db.execute("SELECT id,status FROM buttons") results = [] while True: try: button = Button() button.loadFromDb(db.fetchone()) results.append(button.toDict()) except: break return results class Button(object): def __init__(self): self.persisted = False self.id = None self.status = STATUS_INVENTORY def toDict(self): return { 'id': self.id, 'status': self.status } def toJSON(self): return json.dumps(self.toDict()) def loadById(self, id): db = database.connect() db.execute("SELECT id,status FROM buttons WHERE id = ?" , (str(id),)) return self.loadFromDb(db.fetchone()) def loadFromDb(self, dbrs): if dbrs is None: raise cherrypy.HTTPError(404, 'Button not found') self.persisted = True self.id, self.status = dbrs return self def save(self): cherrypy.log('SAVE {} -> {} (persisted: {})'.format( self.id, self.status, self.persisted )) db = database.connect() # validate if self.id is None: raise cherrypy.HTTPError(500, "What u doin?") # upsert: update elif self.persisted: cherrypy.log("setting other status to " + str(self.status)) db.execute("UPDATE buttons SET status = ? WHERE id = ?", (int(self.status), str(self.id),) ) # upsert: insert else: cherrypy.log('INSERT {} -> {} (persisted: {})'.format( self.id, self.status, self.persisted )) db.execute("INSERT INTO buttons VALUES (?, ?)", (self.id, self.status)) db.connection.commit() return self