def getConfigHTML(self): (errst, ok) = self.checkValid() if not ok: return (errst, False) # start of form text = '<form action="config"><div class="form">\n' # mote text += '<strong>Mote:</strong><br/>\n' text += '<div class="subcontents">\n' text += 'Port: <em>' + self.mote.getPortName() + '</em><br/>\n' text += 'Platform: <em>' + self.activePlatform.name + '</em><br/>\n' text += '</div>\n' # sensors text += '<strong>Sensor reading periods (in milliseconds, "0" means disabled):</strong><br/>\n' text += '<div class="subcontents">\n' for s in self.activePlatform.sensors: text += '<div class="entry">' text += utils.toTitleCase(s.name) + ": " text += '<input type="text" name="' + s.varname + '" value="' + str(s.period) + '"/><br/></div>\n' text += '</div>\n' # outputs text += '<strong>System outputs:</strong><br/>\n' text += '<div class="subcontents">\n' for s in self.activePlatform.outputs: text += '<div class="entry">' text += '<input type="checkbox" name="' + s.varname + '"' if s.isSelected: text += ' checked="checked"' text += '/> Write to ' + utils.toCamelCase(s.name) if s.varname == "file": text += '<br/><label for="filename">Filename: </label>' text += '<input type="input" name="filename" value="' + self.filenameOnMote + '"' text += ' title="The file will be created on mote\'s SD card" />\n' text += '<br/></div>\n' text += '</div>\n' # leds text += '<strong>LED:</strong><br/>\n' text += '<div class="subcontents">\n' for s in self.activePlatform.leds: text += '<div class="entry">' text += '<input type="checkbox" name="' + s.varname + '"' if s.isOn: text += ' checked="checked"' text += '/> ' + s.name + " LED on" text += '<br/></div>\n' text += '</div>\n' # end of form motename = "mote" + os.path.basename(self.mote.getPortName()) text += '<input type="hidden" name="' + motename + '_cfg" value="1"/>\n' text += '<input type="hidden" name="sel_' + motename \ + '" value="' + self.activePlatform.name + '" />\n' text += '<input type="submit" name="get" title="Read the currently active configuration values from the mote" value="Get values"/> \n' text += '<input type="submit" name="set" title="Set the web configuration values as active" value="Set values"/>\n' text += '</div></form>\n' return (text, True)
def getConfigHTML(self): (errst, ok) = self.checkValid() if not ok: return (errst, False) # start of form text = '<form action="config" id="configForm"><div class="form">\n' # mote text += '<strong>Mote:</strong><br/>\n' text += '<div class="subcontents">\n' text += 'Port: <em>' + self.mote.getFullName() + '</em><br/>\n' text += 'Platform: <em>' + self.activePlatform.name + '</em><br/>\n' text += '</div>\n' # sensors text += "<table class='table'><thead><tr style='background-color: #f5f5f5;'><th> </th>" for s in self.activePlatform.sensors: text += "<th>" + utils.toTitleCase(s.name) + "</th>" text += "</thead></tr><tbody>" text += "<tr><th valign='middle'>Period</th>" for s in self.activePlatform.sensors: text += "<td>" text += '<input type="text" title="Sensor reading periods (in milliseconds, \'0\' means disabled)" name="' + s.varname + '" value="' + str( s.period) + '" style="width: 50px"/><br/></div>\n' text += "</td>" text += "</tr>" text += "<tr><th valign='middle'>Actions</th>" for s in self.activePlatform.sensors: text += "<td>" text += "<input type='checkbox' name='graph_" + s.varname + "' %graph_" + s.varname + "%> <a href='javascript:void(0)'>graph</a></input>" #text += "<br/>" #text += "<input type='checkbox' name='store_" + s.varname + "'> <a href='javascript:void(0)'>store</a></input>" text += "</td>" text += "</tr>" text += "</tbody></table>" # outputs text += "<table><tr><td valign='top'>" text += '<strong>System outputs:</strong><br/>\n' text += '<div class="subcontents">\n' for s in self.activePlatform.outputs: text += '<div class="entry">' text += '<input type="checkbox" name="' + s.varname + '"' if s.isSelected: text += ' checked="checked"' text += '/> Write to ' + utils.toCamelCase(s.name) if s.varname == "file": text += '<br/><label for="filename">Filename: </label>' text += '<input type="input" name="filename" value="' + self.filenameOnMote + '"' text += ' title="The file will be created on mote\'s SD card" />\n' text += '<br/></div>\n' text += '</div>\n' text += "</td><td width='40px'></td><td valign='top'>" # leds text += '<strong>LED:</strong><br/>\n' text += '<div class="subcontents">\n' for s in self.activePlatform.leds: text += '<div class="entry">' text += '<input type="checkbox" name="' + s.varname + '"' if s.isOn: text += ' checked="checked"' text += '/> ' + s.name + " LED on" text += '<br/></div>\n' text += '</div>\n' text += "</td></tr></table>" # end of form motename = "mote" + self.mote.getFullBasename() text += '<input type="hidden" name="' + motename + '_cfg" value="1"/>\n' text += '<input type="hidden" name="sel_' + motename \ + '" value="' + self.activePlatform.name + '" />\n' text += '</div></form>\n' return (text, True)
def serveAnyPage(self, name, qs, isGeneric = True, replaceValues = None, urlTo = "", title = None, content = None, infoMsg = None, errorMsg = None, generatedContentOnly = False): f = open(self.htmlDirectory + "/layout.html", "r") contents = f.read() t = Template(contents) self.headerIsServed = True if name == "default": pageTitle = "" elif title != None: pageTitle = title else: pageTitle = " – " + utils.toTitleCase(name) if errorMsg != None: qs["no"] = "no" suffix = "generic" if isGeneric else "mote" menuContent = "" with open(self.htmlDirectory + "/menu-" + suffix + ".html", "r") as f: localMenuContent = f.read() if replaceValues: for v in replaceValues: localMenuContent = localMenuContent.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: localMenuContent = localMenuContent.replace("%SMA%", qs["sma"][0]) menuContent += localMenuContent if isGeneric: if self.getLevel() > 0: with open(self.htmlDirectory + "/menu-1.html", "r") as f: localMenuContent = f.read() if replaceValues: for v in replaceValues: localMenuContent = localMenuContent.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: localMenuContent = localMenuContent.replace("%SMA%", qs["sma"][0]) menuContent += localMenuContent if self.getLevel() > 7: with open(self.htmlDirectory + "/menu-8.html", "r") as f: localMenuContent = f.read() if replaceValues: for v in replaceValues: localMenuContent = localMenuContent.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: localMenuContent = localMenuContent.replace("%SMA%", qs["sma"][0]) menuContent += localMenuContent if self.getLevel() > 8: with open(self.htmlDirectory + "/menu-9.html", "r") as f: localMenuContent = f.read() if replaceValues: for v in replaceValues: localMenuContent = localMenuContent.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: localMenuContent = localMenuContent.replace("%SMA%", qs["sma"][0]) menuContent += localMenuContent sma = "" if "sma" in qs: sma = qs["sma"][0] log = "Logout" if self.getLevel() > 0 else "Login" if name == "error": bodyContent = errorMsg contents = t.substitute( pageTitle = pageTitle, pageHead = "", sessionHead = "", sma = sma, menuContent = menuContent, bodyContent = bodyContent, log = log) self.writeChunk(contents) elif name == "error:critical": bodyContent = "\n<h4 class='err'>Error: " + errorMsg + "</h4>\n" contents = t.substitute( pageTitle = pageTitle, pageHead = "", sessionHead = "", sma = sma, menuContent = menuContent, bodyContent = bodyContent, log = log) self.writeChunk(contents) else: pageHead = "" try: with open(self.htmlDirectory + "/" + name + ".header.html", "r") as f: pageHead = f.read() if replaceValues: for v in replaceValues: pageHead = pageHead.replace("%" + v + "%", replaceValues[v]) except: pass hasError = False try: if not "no" in qs: sessionHead = self.serveSession(qs, urlTo) except Exception as e: bodyContent = "Error: Session not served - " + str(e) hasError = True if not hasError: if content != None: bodyContent = content else: bodyContent = self.serveBody(name, qs, replaceValues) sma = "" if "sma" in qs: sma = qs["sma"][0] log = "Logout" if self.getLevel() > 0 else "Login" if infoMsg != None: bodyContent = infoMsg + bodyContent contents = t.substitute( pageTitle = pageTitle, pageHead = pageHead, sessionHead = sessionHead, sma = sma, menuContent = menuContent, bodyContent = bodyContent, log = log) contents = contents.replace(",", ",") if generatedContentOnly == False: self.writeChunk(contents) else: return contents
def serveHeaderOld(self, name, qs, isGeneric = True, replaceValues = None, urlTo = ""): self.headerIsServed = True if name == "default": pagetitle = "" else: pagetitle = " – " + utils.toTitleCase(name) with open(self.htmlDirectory + "/header.html", "r") as f: contents = f.read() contents = contents.replace("%PAGETITLE%", pagetitle) self.writeChunk(contents) try: with open(self.htmlDirectory + "/" + name + ".header.html", "r") as f: contents = f.read() if replaceValues: for v in replaceValues: contents = contents.replace("%" + v + "%", replaceValues[v]) self.writeChunk(contents) except: pass try: if not "no" in qs: text = self.serveSession(qs, urlTo) self.writeChunk(text) except Exception as e: print("Error: Session not served!") print(e) self.writeChunk('</head>\n<body>') with open(self.htmlDirectory + "/top-start.html", "r") as f: contents = f.read() if replaceValues: for v in replaceValues: contents = contents.replace("%" + v + "%", replaceValues[v]) # page title contents = contents.replace("%PAGETITLE%", pagetitle) # this page (for form) contents = contents.replace("%THISPAGE%", name) self.writeChunk(contents) suffix = "generic" if isGeneric else "mote" with open(self.htmlDirectory + "/menu-" + suffix + ".html", "r") as f: contents = f.read() if replaceValues: for v in replaceValues: contents = contents.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: contents = contents.replace("%SMA%", qs["sma"][0]) self.writeChunk(contents) if isGeneric: if self.getLevel() > 0: with open(self.htmlDirectory + "/menu-1.html", "r") as f: contents = f.read() if replaceValues: for v in replaceValues: contents = contents.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: contents = contents.replace("%SMA%", qs["sma"][0]) self.writeChunk(contents) if self.getLevel() > 7: with open(self.htmlDirectory + "/menu-8.html", "r") as f: contents = f.read() if replaceValues: for v in replaceValues: contents = contents.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: contents = contents.replace("%SMA%", qs["sma"][0]) self.writeChunk(contents) if self.getLevel() > 8: with open(self.htmlDirectory + "/menu-9.html", "r") as f: contents = f.read() if replaceValues: for v in replaceValues: contents = contents.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: contents = contents.replace("%SMA%", qs["sma"][0]) self.writeChunk(contents) with open(self.htmlDirectory + "/top-end.html", "r") as f: contents = f.read() if replaceValues: for v in replaceValues: contents = contents.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: contents = contents.replace("%SMA%", qs["sma"][0]) # login/logout log = "Logout" if self.getLevel() > 0 else "Login" contents = contents.replace("%LOG%", log) self.writeChunk(contents)
def serveAnyPage(self, name, qs, isGeneric = True, replaceValues = None, urlTo = "", title = None, content = None, infoMsg = None, errorMsg = None, generatedContentOnly = False): f = open(self.htmlDirectory + "/layout.html", "r") contents = f.read() t = string.Template(contents) self.headerIsServed = True if name == "default": pageTitle = "" elif title != None: pageTitle = title else: pageTitle = " – " + utils.toTitleCase(name) if errorMsg != None: qs["no"] = "no" suffix = "generic" if isGeneric else "mote" menuContent = "" with open(self.htmlDirectory + "/menu-" + suffix + ".html", "r") as f: localMenuContent = f.read() if replaceValues: for v in replaceValues: localMenuContent = localMenuContent.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: localMenuContent = localMenuContent.replace("%SMA%", qs["sma"][0]) menuContent += localMenuContent if isGeneric: if self.getLevel() > 0: with open(self.htmlDirectory + "/menu-1.html", "r") as f: localMenuContent = f.read() if replaceValues: for v in replaceValues: localMenuContent = localMenuContent.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: localMenuContent = localMenuContent.replace("%SMA%", qs["sma"][0]) menuContent += localMenuContent if self.getLevel() > 7: with open(self.htmlDirectory + "/menu-8.html", "r") as f: localMenuContent = f.read() if replaceValues: for v in replaceValues: localMenuContent = localMenuContent.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: localMenuContent = localMenuContent.replace("%SMA%", qs["sma"][0]) menuContent += localMenuContent if self.getLevel() > 8: with open(self.htmlDirectory + "/menu-9.html", "r") as f: localMenuContent = f.read() if replaceValues: for v in replaceValues: localMenuContent = localMenuContent.replace("%" + v + "%", replaceValues[v]) if "sma" in qs: localMenuContent = localMenuContent.replace("%SMA%", qs["sma"][0]) menuContent += localMenuContent sma = "" if "sma" in qs: sma = qs["sma"][0] log = "Logout" if self.getLevel() > 0 else "Login" if name == "error": bodyContent = errorMsg contents = t.substitute( pageTitle = pageTitle, pageHead = "", sessionHead = "", sma = sma, menuContent = menuContent, bodyContent = bodyContent, log = log) self.writeChunk(contents) elif name == "error:critical": bodyContent = "\n<h4 class='err'>Error: " + errorMsg + "</h4>\n" contents = t.substitute( pageTitle = pageTitle, pageHead = "", sessionHead = "", sma = sma, menuContent = menuContent, bodyContent = bodyContent, log = log) self.writeChunk(contents) else: pageHead = "" try: with open(self.htmlDirectory + "/" + name + ".header.html", "r") as f: pageHead = f.read() if replaceValues: for v in replaceValues: pageHead = pageHead.replace("%" + v + "%", replaceValues[v]) except: pass hasError = False sessionHead = "" try: if not "no" in qs: sessionHead = self.serveSession(qs, urlTo) except Exception as e: bodyContent = "Error: Session not served - " + str(e) hasError = True if not hasError: if content != None: bodyContent = content else: bodyContent = self.serveBody(name, qs, replaceValues) sma = "" if "sma" in qs: sma = qs["sma"][0] log = "Logout" if self.getLevel() > 0 else "Login" if infoMsg != None: bodyContent = infoMsg + bodyContent if replaceValues: for v in replaceValues: bodyContent = bodyContent.replace("%" + v + "%", replaceValues[v]) contents = t.substitute( pageTitle = pageTitle, pageHead = pageHead, sessionHead = sessionHead, sma = sma, menuContent = menuContent, bodyContent = bodyContent, log = log) contents = contents.replace(",", ",") if generatedContentOnly == False: self.writeChunk(contents) else: return bodyContent
def getConfigHTML(self): (errst, ok) = self.checkValid() if not ok: return (errst, False) # start of form text = '<form action="config" id="configForm"><div class="form">\n' # mote text += '<strong>Mote:</strong><br/>\n' text += '<div class="subcontents">\n' text += 'Port: <em>' + self.mote.getFullName() + '</em><br/>\n' text += 'Platform: <em>' + self.activePlatform.name + '</em><br/>\n' text += '</div>\n' # sensors text += "<table class='table'><thead><tr style='background-color: #f5f5f5;'><th> </th>" for s in self.activePlatform.sensors: text += "<th>" + utils.toTitleCase(s.name) + "</th>" text += "</thead></tr><tbody>" text += "<tr><th valign='middle'>Period</th>" for s in self.activePlatform.sensors: text += "<td>" text += '<input type="text" title="Sensor reading periods (in milliseconds, \'0\' means disabled)" name="' + s.varname + '" value="' + str(s.period) + '" style="width: 50px"/><br/></div>\n' text += "</td>" text += "</tr>" text += "<tr><th valign='middle'>Actions</th>" for s in self.activePlatform.sensors: text += "<td>" text += "<input type='checkbox' name='graph_" + s.varname + "' %graph_" + s.varname + "%> <a href='javascript:void(0)'>graph</a></input>" #text += "<br/>" #text += "<input type='checkbox' name='store_" + s.varname + "'> <a href='javascript:void(0)'>store</a></input>" text += "</td>" text += "</tr>" text += "</tbody></table>" # outputs text += "<table><tr><td valign='top'>" text += '<strong>System outputs:</strong><br/>\n' text += '<div class="subcontents">\n' for s in self.activePlatform.outputs: text += '<div class="entry">' text += '<input type="checkbox" name="' + s.varname + '"' if s.isSelected: text += ' checked="checked"' text += '/> Write to ' + utils.toCamelCase(s.name) if s.varname == "file": text += '<br/><label for="filename">Filename: </label>' text += '<input type="input" name="filename" value="' + self.filenameOnMote + '"' text += ' title="The file will be created on mote\'s SD card" />\n' text += '<br/></div>\n' text += '</div>\n' text += "</td><td width='40px'></td><td valign='top'>" # leds text += '<strong>LED:</strong><br/>\n' text += '<div class="subcontents">\n' for s in self.activePlatform.leds: text += '<div class="entry">' text += '<input type="checkbox" name="' + s.varname + '"' if s.isOn: text += ' checked="checked"' text += '/> ' + s.name + " LED on" text += '<br/></div>\n' text += '</div>\n' text += "</td></tr></table>" # end of form motename = "mote" + self.mote.getFullBasename() text += '<input type="hidden" name="' + motename + '_cfg" value="1"/>\n' text += '<input type="hidden" name="sel_' + motename \ + '" value="' + self.activePlatform.name + '" />\n' text += '</div></form>\n' return (text, True)