예제 #1
0
    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)
예제 #2
0
    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>&nbsp;</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 + "%>&nbsp;<a href='javascript:void(0)'>graph</a></input>"
            #text += "<br/>"
            #text += "<input type='checkbox' name='store_" + s.varname + "'>&nbsp;<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)
예제 #3
0
    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 = " &#8211; " + 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("&#44;", ",")
            if generatedContentOnly == False:
                self.writeChunk(contents)
            else:
                return contents
예제 #4
0
    def serveHeaderOld(self, name, qs, isGeneric = True, replaceValues = None, urlTo = ""):
        self.headerIsServed = True
        if name == "default":
            pagetitle = ""
        else:
            pagetitle = " &#8211; " + 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)
예제 #5
0
    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 = " &#8211; " + 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("&#44;", ",")
            if generatedContentOnly == False:
                self.writeChunk(contents)
            else:
                return bodyContent
예제 #6
0
    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>&nbsp;</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 + "%>&nbsp;<a href='javascript:void(0)'>graph</a></input>"
            #text += "<br/>"
            #text += "<input type='checkbox' name='store_" + s.varname + "'>&nbsp;<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)