Example #1
0
    def show_adminpage(self,**kw):
        self.setup(formkeys=('pv',), helpsection='main', **kw)
        wr = self.write

        pvname = self.kw['pv']
        astat = "<br>&nbsp;&nbsp;&nbsp; ".join(self.master.arch_report())
        cstat = "<br>&nbsp;&nbsp;&nbsp; ".join(self.master.cache_report(brief=True))
        wr("""Archive Status:<br>&nbsp;&nbsp;&nbsp;  %s<br>
           <p>Cache Status:<br>&nbsp;&nbsp;&nbsp;  %s<br><hr>""" % (astat,cstat))
            
        submit = self.kw['submit'].strip()
        if submit.startswith('Add') and len(pvname)>1:
            pvn = clean_input(pvname)
            wr("<p>Added %s to archive!!<p><hr>" % (pvn))
            self.master.add_pv(pvn)
            #             self.endhtml()
            #             return self.get_buffer()
        
        self.startform(action=adminpage)

        # alertlink = self.link(link="%s/list_alerts" % (adminpage), text='Show All Alerts')
        # wr("<p><b>%s</b></p>" % alertlink)
        wr("""<p>Search for PV:&nbsp;&nbsp;&nbsp;
        %s &nbsp; (use \'*\' for wildcard searches) %s
        """ % (self.textinput(name='form_pv',value=pvname,size=40),
               self.button(text='Search Archive')))
        
        if pvname != '':
            sx = clean_input(pvname.replace('*','%'))
            results = self.master.cache.select(where="pvname like '%s' order by pvname" % sx)
           
            wr("<p>Search results for '%s' (%i matches): </p>" % (pvname,len(results)))
            self.starttable(ncol = 4)

            o = [self.link(link="%s?pv=%s" % (pvinfopage,r['pvname']),text=r['pvname']) for r in results]

            nrows,nextra = divmod(len(results),4)
            for i in range(4): o.append('')
            if nextra>0:  nrows = nrows + 1

            for i in range(nrows):
                self.addrow("&nbsp;%s&nbsp;" % o[0+i*4], "&nbsp;%s&nbsp;" % o[1+i*4],
                            "&nbsp;%s&nbsp;" % o[2+i*4], "&nbsp;%s&nbsp;" % o[3+i*4])
                
            self.endtable()
            if len(results)== 0 and sx.find('%')==-1:
                wr("%s <p>" % self.button(text="Add %s to Archive" % pvname))

        self.endform()
        self.endhtml()
        return self.get_buffer()
Example #2
0
    def show_pvinfo(self,**kw):
        self.setup(formkeys=('pv',), helpsection='main', **kw)

        wr = self.write
        pvname = self.kw['pv']
        submit = self.kw['submit'].strip()

        if submit.startswith('Update') and len(pvname)>1:
            self.master.use_current_archive()
            where = "name='%s'" % pvname
            settings = []
            for key in ('description', 'graph_hi', 'graph_lo', 'deadtime',
                        'deadband', 'active', 'graph_type'):
                if self.kw.has_key(key):
                    val = clean_input(self.kw[key].strip())
                    if key in ('active','graph_type','description'):
                        if val != '':
                            settings.append("%s='%s'" % (key,val))
                    else:
                        try:
                            settings.append("%s=%f" % (key,float(val)))
                        except:
                            pass

            for s in settings:
                self.master.db.execute("update pv set %s where %s" % (s,where))
                
            wr("<p>%s&nbsp;&nbsp;</p>" % self.link(link="%s?pv=%s" % (plotpage,pvname),
                                                   text=pvname))
            self.master.use_master()
            self.endhtml()
            return self.get_buffer()

        if pvname in (None,''):
            wr("No PV given???  Click %s for Main Admin Page" % self.link(link=adminpage,
                                                                          text='here'))
            self.endhtml()
            return self.get_buffer()            

        
        self.master.use_current_archive()
        self.master.db.execute("select * from pv where name='%s'" % pvname)
        ret = self.master.db.fetchall()
        self.master.use_master()

        if len(ret)== 0:
            wr("PV not in archive??")
            self.endhtml()
            return self.get_buffer()            

        d = ret[0]
        wr("""<p> <h3> %s &nbsp;&nbsp;&nbsp;&nbsp; %s </h3></p>
        """ % (pvname, self.link(link="%s?pv=%s" % (plotpage,pvname),text='Show Plot')))

        self.startform(action=pvinfopage,hiddenkeys=('pv',))
        self.starttable(ncol=2)
        self.addrow('<hr>',spans=(2,0))
        self.addrow("Data Type",d['type'])

        radios =[]
        for i in ('Yes','No'):
            checked = i.lower() == d['active'].lower()
            radios.append( self.radio(checked=checked, name='active',value=i) )
            
        self.addrow("Actively Archived:",  " ".join(radios))
        self.addrow("Description",         self.textinput(name='description',value=d['description']))
        self.addrow("Deadtime (seconds)",  self.textinput(name='deadtime',value=d['deadtime']))
        self.addrow("Deadband (fraction)", self.textinput(name='deadband',value=d['deadband']))
        self.addrow("Graph Upper Limit",   self.textinput(name='graph_hi',value=d['graph_hi']))
        self.addrow("Graph Lower Limit",   self.textinput(name='graph_lo',value=d['graph_lo']))

        radios = []
        for i in ('normal','log','discrete'):
            checked =  i.lower() == d['graph_type'].lower()
            radios.append(self.radio(checked=checked, name='graph_type',value=i))

        self.addrow("Graph Type",          " ".join(radios))
        self.addrow(self.button(text='Update PV Settings'), "")
        self.addrow('<hr>',spans=(2,0))        
        self.endtable()
                
        self.master.use_master()
        #  Related PVs
        related_pvs = self.master.get_related_pvs(pvname)

        if len(related_pvs)==0:
            wr("<hr><h3>No Related PVs: (%s)" % self.link(link="%s?pv=%s" % (relpv_page,pvname),
                                                        text='View/Change'))
        else:
            wr("<hr><h3>Related PVs: (%s)" % self.link(link="%s?pv=%s" % (relpv_page,pvname),
                                                     text='View/Change'))
            self.starttable(ncol=4)

            o = [self.link(link="%s?pv=%s" % (pvinfopage,p),text=p) for p in related_pvs]

            nrows,nextra = divmod(len(related_pvs),4)
            if nextra>0:  nrows = nrows + 1
            for i in range(4): o.append('')
            for i in range(nrows):
                self.addrow("&nbsp;%s&nbsp;" % o[0+i*4], "&nbsp;%s&nbsp;" % o[1+i*4],
                            "&nbsp;%s&nbsp;" % o[2+i*4], "&nbsp;%s&nbsp;" % o[3+i*4])
                
            self.endtable()

        #  Instruments PVs
        insts  = self.master.get_instruments_with_pv(pvname)
        if len(insts)==0:
            wr("<hr><h3>No Instruments contain %s</h3>" % pvname)
        else:
            wr("<hr><h3>Instruments containing %s:</h3>" % pvname)
            self.starttable(ncol=4)

            o = []
            for inst_id,inst,station in insts:
                o.append( self.link(link="%s?station=%s&instrument=%s" % (instpage,station,inst),text=inst) )

            nrows,nextra = divmod(len(insts),4)
            if nextra>0:  nrows = nrows + 1
            for i in range(4): o.append('')
            for i in range(nrows):
                self.addrow("&nbsp;%s&nbsp;" % o[0+i*4], "&nbsp;%s&nbsp;" % o[1+i*4],
                            "&nbsp;%s&nbsp;" % o[2+i*4], "&nbsp;%s&nbsp;" % o[3+i*4])
                
            self.endtable()

        # Alerts:
        alerts = self.master.get_alerts(pvname=pvname)
        addlink = self.link(link="%s?pv=%s&new=1" % (alerts_page,pvname),
                            text='Add an Alert')

        if len(alerts)==0:
            wr("<hr><h3>No Alerts set for %s: &nbsp; %s " % (pvname,addlink))
        else:
            wr("<hr><h3>Alerts for %s: %s" % (pvname,addlink))
            self.make_alerttable(pvname,alerts)

        wr("<hr>")
        self.endform()
        self.endhtml()
        return self.get_buffer()