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
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):
self.states = dict()
self.eventbus = eventbus
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):
""" 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()
# Add category is it does not exist
# Add category if it does not exist
if category not in self.states:
self.states[category] = State(new_state, datetime.now())
@ -192,15 +197,6 @@ class StateMachine(object):
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):
""" Helper function to throw an exception
when the category does not exist. """

View file

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