Cleaning up code

This commit is contained in:
Paulus Schoutsen 2013-09-20 10:00:31 -07:00
parent 90c343d16b
commit 7636092c7d
10 changed files with 403 additions and 423 deletions

View file

@ -5,85 +5,85 @@ import requests
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
SERVER_HOST= '127.0.0.1'
SERVER_HOST = '127.0.0.1'
SERVER_PORT = 8080
class RequestHandler(BaseHTTPRequestHandler):
#Handler for the GET requests
def do_GET(self):
if self.path == "/":
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
write = self.wfile.write
# Describe state machine:
categories = []
#Handler for the GET requests
def do_GET(self):
if self.path == "/":
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
write("<table>")
write("<tr><th>Name</th><th>State</th><th>Last Changed</th></tr>")
write = self.wfile.write
for category, state, last_changed in self.server.statemachine.get_states():
categories.append(category)
# Describe state machine:
categories = []
write("<tr><td>{}</td><td>{}</td><td>{}</td></tr>".format(category, state, last_changed.strftime("%H:%M:%S %d-%m-%Y")))
write("<table>")
write("<tr><th>Name</th><th>State</th><th>Last Changed</th></tr>")
write("</table>")
for category, state, last_changed in self.server.statemachine.get_states():
categories.append(category)
# Small form to change the state
write("<br />Change state:<br />")
write("<form action='change_state' method='POST'>")
write("<select name='category'>")
write("<tr><td>{}</td><td>{}</td><td>{}</td></tr>".format(category, state, last_changed.strftime("%H:%M:%S %d-%m-%Y")))
for category in categories:
write("<option>{}</option>".format(category))
write("</table>")
write("</select>")
# Small form to change the state
write("<br />Change state:<br />")
write("<form action='change_state' method='POST'>")
write("<select name='category'>")
write("<input name='new_state' />")
write("<input type='submit' value='set state' />")
write("</form>")
for category in categories:
write("<option>{}</option>".format(category))
else:
self.send_response(404)
write("</select>")
write("<input name='new_state' />")
write("<input type='submit' value='set state' />")
write("</form>")
else:
self.send_response(404)
def do_POST(self):
length = int(self.headers['Content-Length'])
post_data = urlparse.parse_qs(self.rfile.read(length))
def do_POST(self):
length = int(self.headers['Content-Length'])
post_data = urlparse.parse_qs(self.rfile.read(length))
if self.path == "/change_state":
self.server.statemachine.set_state(post_data['category'][0], post_data['new_state'][0])
if self.path == "/change_state":
self.server.statemachine.set_state(post_data['category'][0], post_data['new_state'][0])
self.send_response(301)
self.send_header("Location", "/")
self.end_headers()
self.send_response(301)
self.send_header("Location", "/")
self.end_headers()
else:
self.send_response(404)
else:
self.send_response(404)
class HttpInterface(threading.Thread):
def __init__(self, eventbus, statemachine):
threading.Thread.__init__(self)
def __init__(self, eventbus, statemachine):
threading.Thread.__init__(self)
self.server = HTTPServer((SERVER_HOST, SERVER_PORT), RequestHandler)
self.server = HTTPServer((SERVER_HOST, SERVER_PORT), RequestHandler)
self.server.eventbus = eventbus
self.server.statemachine = statemachine
self.server.eventbus = eventbus
self.server.statemachine = statemachine
self._stop = threading.Event()
self._stop = threading.Event()
def run(self):
while not self._stop.is_set():
self.server.handle_request()
def run(self):
while not self._stop.is_set():
self.server.handle_request()
def stop(self):
self._stop.set()
def stop(self):
self._stop.set()
# Trigger a fake request to get the server to quit
requests.get("http://{}:{}".format(SERVER_HOST, SERVER_PORT))
# Trigger a fake request to get the server to quit
requests.get("http://{}:{}".format(SERVER_HOST, SERVER_PORT))