Cleaned up API statemachine

This commit is contained in:
Paulus Schoutsen 2013-10-24 00:08:28 +01:00
parent 7443a5f963
commit 42c7f33567
2 changed files with 15 additions and 16 deletions

View File

@ -149,19 +149,24 @@ class EventBus(object):
pass pass
class StateMachine(object): class StateMachine(object):
""" Helper class that tracks the state of different objects. """ """ Helper class that tracks the state of different categories. """
def __init__(self, eventbus): def __init__(self, eventbus):
self.states = dict() self.states = dict()
self.eventbus = eventbus self.eventbus = eventbus
self.lock = threading.Lock() self.lock = threading.Lock()
@property
def categories(self):
""" List of categories which states are being tracked. """
return self.states.keys()
def set_state(self, category, new_state): def set_state(self, category, new_state):
""" Set the state of a category, add category is it does not exist. """ """ Set the state of a category, add category if it does not exist. """
self.lock.acquire() self.lock.acquire()
# Add category is it does not exist # Add category if it does not exist
if category not in self.states: if category not in self.states:
self.states[category] = State(new_state, datetime.now()) self.states[category] = State(new_state, datetime.now())
@ -192,15 +197,6 @@ class StateMachine(object):
return self.states[category] return self.states[category]
def get_states(self):
""" Returns a list of tuples (category, state, last_changed)
sorted by category case-insensitive. """
return [(category,
self.states[category].state,
self.states[category].last_changed)
for category in
sorted(self.states.keys(), key=lambda key: key.lower())]
def _validate_category(self, category): def _validate_category(self, category):
""" Helper function to throw an exception """ Helper function to throw an exception
when the category does not exist. """ when the category does not exist. """

View File

@ -111,14 +111,17 @@ class RequestHandler(BaseHTTPRequestHandler):
"<th>Name</th><th>State</th>" "<th>Name</th><th>State</th>"
"<th>Last Changed</th></tr>")) "<th>Last Changed</th></tr>"))
for category, state, last_changed in \ for category in \
self.server.statemachine.get_states(): sorted(self.server.statemachine.categories,
key=lambda key: key.lower()):
categories.append(category) categories.append(category)
state = self.server.statemachine.get_state(category)
write("<tr><td>{}</td><td>{}</td><td>{}</td></tr>". write("<tr><td>{}</td><td>{}</td><td>{}</td></tr>".
format(category, state, format(category, state.state,
util.datetime_to_str(last_changed))) util.datetime_to_str(state.last_changed)))
write("</table>") write("</table>")