summaryrefslogtreecommitdiff
path: root/server/button.py
diff options
context:
space:
mode:
Diffstat (limited to 'server/button.py')
-rw-r--r--server/button.py90
1 files changed, 66 insertions, 24 deletions
diff --git a/server/button.py b/server/button.py
index 8530768..a5b52b8 100644
--- a/server/button.py
+++ b/server/button.py
@@ -4,38 +4,80 @@ import json
from lib import uuid
from lib import database
-@cherrypy.expose
-class Button(object):
- STATUS_INVENTORY = 0
- STATUS_ACTIVE = 1
- STATUS_INACTIVE = 2
- STATUS_SUSPENDED = 3
- STATUS_DEAD = 4
+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 = 0
+ self.status = STATUS_INVENTORY
+
+ def toDict(self):
+ return {
+ 'id': self.id,
+ 'status': self.status
+ }
- def GET(self, id):
- if not uuid.validate(id):
- return cherrypy.HTTPError(404)
+ 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 db.fetchone()
-# return json.dumps({
-# 'id': self.id,
-# 'status': self.status
-# })
- def POST(self):
- return 'POST BIUTTON'
+ 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?")
- def PUT(self, id):
- if uuid.validate(id):
- return self.GET(id)
+ # 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),)
+ )
- raise cherrypy.HTTPError(400, 'Invalid UUID')
+ # upsert: insert
+ else:
+ cherrypy.log('INSERT {} -> {} (persisted: {})'.format(
+ self.id, self.status, self.persisted
+ ))
+ db.execute("INSERT INTO buttons VALUES (?, ?)", (self.id, self.status))
- def DELETE(self):
- return 'DELETE BUTTON'
+ db.connection.commit()
+ return self