Cleaned up API statemachine
This commit is contained in:
parent
7443a5f963
commit
42c7f33567
2 changed files with 15 additions and 16 deletions
|
@ -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. """
|
||||
|
|
|
@ -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>")
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue