mirror of
https://github.com/home-assistant/core.git
synced 2025-07-04 11:57:05 +00:00
Cleaned up API statemachine
This commit is contained in:
parent
7443a5f963
commit
42c7f33567
@ -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. """
|
||||||
|
@ -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>")
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user