def show_adminpage(self,**kw): self.setup(formkeys=('pv',), helpsection='main', **kw) wr = self.write pvname = self.kw['pv'] astat = "<br> ".join(self.master.arch_report()) cstat = "<br> ".join(self.master.cache_report(brief=True)) wr("""Archive Status:<br> %s<br> <p>Cache Status:<br> %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: %s (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(" %s " % o[0+i*4], " %s " % o[1+i*4], " %s " % o[2+i*4], " %s " % 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()
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 </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 %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(" %s " % o[0+i*4], " %s " % o[1+i*4], " %s " % o[2+i*4], " %s " % 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(" %s " % o[0+i*4], " %s " % o[1+i*4], " %s " % o[2+i*4], " %s " % 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: %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()