runtime/NevowServer.py
changeset 2719 745b64e7c695
parent 2701 f4dac054cfa3
child 3440 3770ded5db5c
--- a/runtime/NevowServer.py	Fri Dec 25 17:12:02 2020 +0000
+++ b/runtime/NevowServer.py	Mon Jan 18 10:59:28 2021 +0100
@@ -39,6 +39,7 @@
 
 import util.paths as paths
 from runtime.loglevels import LogLevels, LogLevelsDict
+from runtime import MainWorker, GetPLCObjectSingleton
 
 PAGE_TITLE = 'Beremiz Runtime Web Interface'
 
@@ -217,6 +218,18 @@
                                                "Send a message to the log"),
                                            action=_("Send"))
 
+    # pylint: disable=no-self-argument
+    def restartOrRepairPLC(
+            ctx=annotate.Context(),
+            action=annotate.Choice(["Restart", "Repair"],
+                                  required=True,
+                                  label=_("Action"))):
+        pass
+
+    restartOrRepairPLC = annotate.autocallable(restartOrRepairPLC,
+                                           label=_(
+                                               "Restart or Repair"),
+                                           action=_("Do"))
 
 customSettingsURLs = {
 }
@@ -284,9 +297,16 @@
 
     def sendLogMessage(self, level, message, **kwargs):
         level = LogLevelsDict[level]
-        if _PySrv.plcobj is not None:
-            _PySrv.plcobj.LogMessage(
-                level, "Web form log message: " + message)
+        GetPLCObjectSingleton().LogMessage(
+            level, "Web form log message: " + message)
+
+    def restartOrRepairPLC(self, action, **kwargs):
+        if(action == "Repair"):
+            GetPLCObjectSingleton().RepairPLC()
+        else:
+            MainWorker.quit()
+            
+        
 
     def locateChild(self, ctx, segments):
         if segments[0] in customSettingsURLs: