import json from bottle import Bottle, route from button import loadAll, Button from dispatcher import Dispatcher from lib import uuid # Tweak: consider using serpy for serializing objects for JSON. @app.route('/') class ButtonDispatcher(Dispatcher): @cherrypy.tools.json_out() def GET(self, id=None): # GET /button - return all buttons if id is None: return loadAll() # GET /button/{id} - return single button self.validate_uuid(id) button = Button() return button.loadById(id).toDict() @cherrypy.tools.json_out() def POST(self, id=None): button = Button() # PUT /button - creates button if id is None: button.id = uuid.gen() return button.save().toDict() # PUT /button/{id} - presses button else: button.loadById(id) button.press() button.save() return button.toDict() @cherrypy.tools.json_out() def PUT(self, id): # POST /button/{id}?status={} - updates button status self.validate_uuid(id) button = Button() button.loadById(id) cherrypy.log("Updating status to " + str(status)) # TODO validate status button.status = int(status) button.save() return button.toDict() @cherrypy.tools.json_out() def DELETE(self, id, status, *path, **args): # DELETE /button/{id} - deletes button self.validate_uuid(id) button = Button() button.loadById(id) button.delete() return True