--- a/Beremiz_service.py Fri Jun 22 14:08:34 2018 +0200
+++ b/Beremiz_service.py Wed Jul 04 14:10:03 2018 +0200
@@ -616,6 +616,7 @@
website = NS.RegisterWebsite(webport)
pyruntimevars["website"] = website
+ NS.SetServer(pyroserver) statuschange.append(NS.website_statuslistener_factory(website))
LogMessageAndException(_("Nevow Web service failed. "))
--- a/runtime/NevowServer.py Fri Jun 22 14:08:34 2018 +0200
+++ b/runtime/NevowServer.py Wed Jul 04 14:10:03 2018 +0200
@@ -32,9 +32,10 @@
from formless import annotate
from formless import webform
from formless import configurable
+from twisted.internet import reactor -from twisted.internet import reactor
import util.paths as paths
+from runtime.loglevels import LogLevels, LogLevelsDict PAGE_TITLE = 'Beremiz Runtime Web Interface'
@@ -44,6 +45,7 @@
class PLCHMI(athena.LiveElement):
@@ -125,22 +127,6 @@
for child in self.liveFragmentChildren[:]:
- 'gateway': '192.168.1.1',
- 'mask': '255.255.255.0',
-def defaultVal(category):
- def _defaultVal(ctx,argument):
- return lastKnownConfig[category].get(argument.name, None)
class ConfigurableBindings(configurable.Configurable):
@@ -150,8 +136,7 @@
def getBindingNames(self, ctx):
return self.bindingsNames
- def addExtension(self, name, desc, fields, callback):
- print(name, fields, callback)
+ def addExtension(self, name, desc, fields, btnlabel, callback): return annotate.MethodBinding(
@@ -159,33 +144,26 @@
annotate.Argument(name, fieldtype)
for fieldname,fieldtype in fields],
setattr(self, 'bind_'+name, _bind)
- setattr(self, 'action_'+name, _action)
+ setattr(self, 'action_'+name, callback) self.bindingsNames.append(name)
ConfigurableSettings = ConfigurableBindings()
class ISettings(annotate.TypedInterface):
ctx = annotate.Context(),
- mode = annotate.Choice(["DHCP", "Static"],
- label=_("Configuration type"),
- default=defaultVal('net')),
- IP = annotate.String(label=_("IP address"),default=defaultVal('net')),
- gateway = annotate.String(label=_("Gateway address"),
- default=defaultVal('net')),
- mask = annotate.String(label=_("Network mask"),default=defaultVal('net')),
- DNS = annotate.String(label=_("DNS address"),default=defaultVal('net'))):
+ level = annotate.Choice(LogLevels, + label=_("Log message level")), + message = annotate.String(label=_("Message text"))):
- networkConfig = annotate.autocallable(networkConfig, label=_("Network settings"), action=_("Set"))
+ sendLogMessage = annotate.autocallable(sendLogMessage, + label=_("Send a message to the log"), class SettingsPage(rend.Page):
@@ -220,16 +198,11 @@
def configurable_dynamicSettings(self, ctx):
return ConfigurableSettings
- def networkConfig(self, *args, **kwargs):
- lastKnownConfig['net'] = kwargs
- ConfigurableSettings.addExtension(
- [("Host",annotate.String(label=_("IP address")))],
+ def sendLogMessage(self, level, message, **kwargs): + level = LogLevelsDict[level] + if _PySrv.plcobj is not None: + _PySrv.plcobj.LogMessage(level, "Web form log message: " + message ) class WebInterface(athena.LivePage):
@@ -313,6 +286,7 @@
print(_('HTTP interface port :'), port)
class statuslistener(object):
def __init__(self, site):
@@ -331,5 +305,7 @@
return statuslistener(site).listen