Ensure we call the superclass implementation where applicable
authorRalf Jung <post@ralfj.de>
Thu, 10 Oct 2013 13:54:14 +0000 (15:54 +0200)
committerRalf Jung <post@ralfj.de>
Thu, 10 Oct 2013 13:54:14 +0000 (15:54 +0200)
statemachine.odg
statemachine.py

index 4af232092f4b0147e540dabc7711badf538d7466..a26f172981038c82c3d50b010000de977e4ac51c 100644 (file)
Binary files a/statemachine.odg and b/statemachine.odg differ
index 81b6b87ef3f8c5c250e1b771750fa5cf50e0e94c..dc00ca537f59d42f5e7f55f199e7663eaf32e691 100644 (file)
@@ -74,6 +74,7 @@ class StateMachine():
        
        class StateStart(State):
                def handle_pins_event(self):
+                       super().handle_pins_event()
                        thepins = self.pins()
                        for pin in thepins:
                                if pin is None:
@@ -85,10 +86,12 @@ class StateMachine():
 
        class StateZu(State):
                def handle_pins_event(self):
+                       super().handle_pins_event()
                        pins = self.pins()
                        if not pins.door_locked:
                                return StateAboutToOpen(self.state_machine)
                def handle_open_event(self,callback):
+                       # intentionally not calling super() implementation
                        return StateOpening(callback,self.state_machine)
        
        class StateOpening(State):
@@ -104,14 +107,17 @@ class StateMachine():
                                if cb is not None:
                                        cb(s)
                def handle_pins_event(self):
+                       super().handle_pins_event()
                        pins = self.pins()
                        if not pins.door_locked:
                                self.notify(True)
                                return StateAboutToOpen(self.state_machine)
                def handle_open_event(self,callback):
+                       # intentionally not calling super() implementation
                        # FIXME: 202 notification also here if possible
                        self.callbacks.append(callback)
                def handle_wakeup_event(self):
+                       super().handle_wakeup_event()
                        over = time.time() - self.time_entered
                        nexttry = (self.tries+1) * OPEN_REPEAT_TIMEOUT
                        if over > nexttry:
@@ -125,6 +131,7 @@ class StateMachine():
        
        class AbstractStateWhereOpeningIsRedundant(State):
                def handle_open_event(self, callback):
+                       # intentionally not calling super() implementation
                        # FIXME contradicting original plan where open would be ignored in StateAboutToOpen?
                        callback("299 redundant: Space seems to be already open. Still processing your request tough.")
                        logger.warning("Received OPEN command in StateAboutToOpen. This should not be necessary.")
@@ -132,12 +139,14 @@ class StateMachine():
        
        class StateAboutToOpen(AbstractStateWhereOpeningIsRedundant):
                def handle_pins_event(self):
+                       super().handle_pins_event()
                        pins = self.pins()
                        if pins.door_locked:
                                return StateZu(self.state_machine)
                        elif pins.space_active:
                                return StateAuf(self.state_machine)
                def handle_wakeup_event(self):
+                       super().handle_wakeup_event()
                        now = time.time()
                        lasttime = self.last_wakeup - self.time_entered
                        thistime = now - self.time_entered
@@ -151,6 +160,7 @@ class StateMachine():
                        super().__init__(sm)
                        self.last_buzzed = None
                def handle_pins_event(self):
+                       super().handle_pins_event()
                        pins = self.pins()
                        if pins.bell_ringing:
                                now = time.time()