def get_current_status(self, path): sql = "select a.*,b.TRANSACTIONSTATUS,b.settime,b.result ,c.DESCRIPT from operateinfo a ,transactionstatus b ,action_type c where a.transactionno = b.transactionno and a.ACTIONID= c.ACTIONID and b.transactionno=%s" % path rs = session.getdata(sql) if len(rs) == 0: #print 'non record' return rs = rs[0] self.hlist.item_configure(path, 0, text=rs['DESCRIPT'].strip()) self.hlist.item_configure(path, 2, text=rs['TRANSACTIONNO']) time = rs['SETTIME'] if time != None: time = time.Format('%Y-%m-%d %H:%M:%S') self.hlist.item_configure(path, 3, text=time) status = rs['TRANSACTIONSTATUS'] try: status = constdef.transfer_status[str(status)] except: status = "" result = rs['RESULT'] if result != None: status += constdef.errors[str(result)] self.hlist.item_configure(path, 4, text=status) for i in session.user.repeaters: if i['ID'] == int(rs['TARGET']): devtitle = session.getdevtitle(i) self.hlist.item_configure(path, 1, text=devtitle) break pass
def get_current_status(self,path): sql="select a.*,b.TRANSACTIONSTATUS,b.settime,b.result ,c.DESCRIPT from operateinfo a ,transactionstatus b ,action_type c where a.transactionno = b.transactionno and a.ACTIONID= c.ACTIONID and b.transactionno=%s"%path rs = session.getdata(sql) if len(rs)==0: #print 'non record' return rs = rs[0] self.hlist.item_configure(path,0,text=rs['DESCRIPT'].strip()) self.hlist.item_configure(path,2,text=rs['TRANSACTIONNO']) time = rs['SETTIME'] if time!=None: time = time.Format('%Y-%m-%d %H:%M:%S') self.hlist.item_configure(path,3,text=time) status = rs['TRANSACTIONSTATUS'] try: status = constdef.transfer_status[str(status)] except: status="" result = rs['RESULT'] if result!=None: status+= constdef.errors[str(result)] self.hlist.item_configure(path,4,text=status) for i in session.user.repeaters: if i['ID']==int(rs['TARGET']): devtitle = session.getdevtitle(i) self.hlist.item_configure(path,1,text=devtitle) break pass
def show(self, devid): self.id = devid sql = "select * from repeaterinfo where id=%s" % devid self.devinfo = session.getdata(sql) title = session.getdevtitle(self.devinfo[0]) self.title.config(text=unicode('设备: ') + title) row = self.devinfo[0] for i in self.widgets: i[1].destroy() del i[1] self.widgets = [] #取得告警参数 sql = "select * from param_config where repeatertype=%s and is_warning=1 " % row[ 'REPEATERTYPE'] param_warning = session.getdata(sql) idx = 0 for i in param_warning: lb = Label(self.fcontext, text=i['DESCRIPT'], anchor='w', relief='groove') lb.grid(column=0, row=idx, padx=4, pady=2, sticky='w') self.widgets.append([i['PARAMNAME'], lb, 'lb']) stm = "self.var%s=IntVar()" % i['PARAMNAME'] exec(stm) stm = "self.ck%s= Checkbutton(self.fcontext,variable=self.var%s )" % ( i['PARAMNAME'], i['PARAMNAME']) exec(stm) stm = "self.ck%s.grid(column = 1,row = idx,padx=4,pady=2)" % i[ 'PARAMNAME'] exec(stm) stm = "self.widgets.append( ['%s',self.ck%s,'ck' ] )" % ( i['PARAMNAME'], i['PARAMNAME']) exec(stm) #将widget添加到数据容器 pos = 0 pos = constdef.alarmflags.index(i['PARAMNAME']) print 'alarm flat ocurpy >> ', pos #显示当前的使能标志状态 if row['ALARMFLAG'] & (1 << pos) != 0: stm = "self.var%s.set(1)" % i['PARAMNAME'] exec(stm) idx += 1
def show(self,devid): self.id = devid sql = "select * from repeaterinfo where id=%s"%devid self.devinfo = session.getdata(sql) title = session.getdevtitle(self.devinfo[0]) self.title.config(text = unicode('设备: ')+title) row = self.devinfo[0] for i in self.widgets: i[1].destroy() del i[1] self.widgets =[] #取得告警参数 sql = "select * from param_config where repeatertype=%s and is_warning=1 "%row['REPEATERTYPE'] param_warning = session.getdata(sql) idx=0 for i in param_warning : lb = Label(self.fcontext,text=i['DESCRIPT'],anchor='w',relief='groove') lb.grid(column = 0,row =idx,padx=4,pady=2,sticky='w') self.widgets.append( [ i['PARAMNAME'],lb,'lb' ] ) stm="self.var%s=IntVar()"%i['PARAMNAME'] exec(stm) stm ="self.ck%s= Checkbutton(self.fcontext,variable=self.var%s )"%(i['PARAMNAME'],i['PARAMNAME']) exec(stm) stm ="self.ck%s.grid(column = 1,row = idx,padx=4,pady=2)"%i['PARAMNAME'] exec(stm) stm = "self.widgets.append( ['%s',self.ck%s,'ck' ] )"%(i['PARAMNAME'],i['PARAMNAME']) exec(stm) #将widget添加到数据容器 pos=0 pos = constdef.alarmflags.index(i['PARAMNAME']) print 'alarm flat ocurpy >> ',pos #显示当前的使能标志状态 if row['ALARMFLAG'] & (1<<pos)!=0: stm = "self.var%s.set(1)"%i['PARAMNAME'] exec(stm) idx+=1
def showdetail(self,sql,opttype): sql = sql.upper() sql =sql.replace("SELECT","SELECT TOP %s"%session.browse_rowsets) rs = session.getdata(sql) if self.context: self.context.destroy() fields={} if opttype.upper()=='LOGIN': # fields['USERNAME']=unicode('登录名') fields['LOGINIP']=unicode('登录IP') fields['LOGINTIME']=unicode('登录时间') cols = len(fields.keys()) self.context = ScrolledHList(self.p2,scrollbar ='auto',options="hlist.columns %s header 1"%cols) self.context.pack(fill='both',expand=1) self.hlist = self.context.hlist self.hlist.config(separator='.', width=25, drawbranch=0) self.hlist.column_width(0, chars=12) self.hlist.column_width(1, chars=25) self.hlist.column_width(2, chars=25) ks = fields.keys() for k in fields.keys(): try: self.hlist.header_create(ks.index(k),itemtype='text',text=fields[k]) except: tkMessageBox.showwarning(unicode('警告!'),unicode('field name map to hlist error!')) return for r in rs: self.hlist.add(r['ID'],itemtype='text',text=r['USERNAME']) time = r['LOGINTIME'] time = time.Format('%Y/%m/%d %H:%M:%S') self.hlist.item_create(r['ID'],1,itemtype='text',text=r['LOGINIP']) self.hlist.item_create(r['ID'],2,itemtype='text',text=time) if opttype.upper()=='STATUS': fields['k1']=unicode('状态') fields['k2']=unicode('设备名称') fields['k3']=unicode('时间') fields['k4']=unicode('放置地点') fields['k5']=unicode('告警项') cols = len(fields.keys()) self.context = ScrolledHList(self.p2,scrollbar ='auto',options="hlist.columns %s header 1"%cols) self.context.pack(fill='both',expand=1,padx=4,pady=4) self.hlist = self.context.hlist self.hlist.configure(command=self.onstatus) self.hlist.config(separator='.', width=25, drawbranch=0) self.hlist.column_width(0, chars=10) self.hlist.column_width(1, chars=25) self.hlist.column_width(2, chars=25) self.hlist.column_width(3, chars=25) #self.hlist.column_width(4, chars=25) ks = fields.keys() self.hlist.header_create(0,itemtype='text',text=fields['k1']) self.hlist.header_create(1,itemtype='text',text=fields['k2']) self.hlist.header_create(2,itemtype='text',text=fields['k4']) self.hlist.header_create(3,itemtype='text',text=fields['k3']) self.hlist.header_create(4,itemtype='text',text=fields['k5']) for r in rs: wl = r['WARNINGLEVEL'] if wl==None: wl=0 wltext = constdef.warninglevel[str(wl)] pi =self.pwl0 if wl==1: pi =self.pwl1 if wl==2: pi =self.pwl2 if wl==3: pi =self.pwl3 self.hlist.add(r['ID'],itemtype='imagetext',image=pi,text=wltext) devtitle ='' site='' for i in session.user.repeaters: if i['ID']==r['REPEATER_ID']: devtitle= session.getdevtitle(i) site = session.getsite(i) self.hlist.item_create(r['ID'],1,itemtype='text',text=devtitle) time = r['OPTTIME'] time = time.Format('%Y/%m/%d %H:%M:%S') self.hlist.item_create(r['ID'],2,itemtype='text',text=site) self.hlist.item_create(r['ID'],3,itemtype='text',text=time) #参数列表 sql = "SELECT c.fieldname,c.descript,c.UPLIMIT,C.DOWNLIMIT FROM repeaterinfo a ,status b,param_config c " sql+= " where a.id=b.repeater_id and a.repeatertype=c.repeatertype and c.is_warning=1 " sql+= " and b.id=%s" sql = sql%r['ID'] ret = session.getdata(sql) param_list=[] for i in ret: if self.is_warning(i,str(r[i['FIELDNAME']]).strip()): param_list.append(i['DESCRIPT']) self.hlist.item_create(r['ID'],4,itemtype='text',text=string.join(param_list,",")) if opttype.upper()=='WARNING': fields['k1']=unicode('告警级别') fields['k2']=unicode('设备名称') fields['k5']=unicode('放置地点') fields['k3']=unicode('时间') fields['k4']=unicode('告警项') cols = len(fields.keys()) self.context = ScrolledHList(self.p2,scrollbar ='auto',options="hlist.columns %s header 1"%cols) self.context.pack(fill='both',expand=1,padx=4,pady=4) self.hlist = self.context.hlist self.hlist.configure(command=self.onwarning) self.hlist.config(separator='.', width=25, drawbranch=0) self.hlist.column_width(0, chars=20) self.hlist.column_width(1, chars=25) self.hlist.column_width(2, chars=25) ks = fields.keys() self.hlist.header_create(0,itemtype='text',text=fields['k1']) self.hlist.header_create(1,itemtype='text',text=fields['k2']) self.hlist.header_create(2,itemtype='text',text=fields['k5']) self.hlist.header_create(3,itemtype='text',text=fields['k3']) self.hlist.header_create(4,itemtype='text',text=fields['k4']) for r in rs: wl = r['WARNINGLEVEL'] wltext = constdef.warninglevel[str(wl)] pi =self.pwl0 if wl==1: pi =self.pwl1 if wl==2: pi =self.pwl2 if wl==3: pi =self.pwl3 self.hlist.add(r['ID'],itemtype='imagetext',image=pi,text=wltext) devtitle ='' site='' for i in session.user.repeaters: if i['ID']==r['REPEATER_ID']: devtitle= session.getdevtitle(i) site = session.getsite(i) self.hlist.item_create(r['ID'],1,itemtype='text',text=devtitle) self.hlist.item_create(r['ID'],2,itemtype='text',text=site) time = r['OPTTIME'] time = time.Format('%Y/%m/%d %H:%M:%S') self.hlist.item_create(r['ID'],3,itemtype='text',text=time) #参数列表 sql = "SELECT c.fieldname,c.descript,c.UPLIMIT,C.DOWNLIMIT FROM repeaterinfo a ,status b,param_config c " sql+= " where a.id=b.repeater_id and a.repeatertype=c.repeatertype and c.is_warning=1 " sql+= " and b.id=%s" sql = sql%r['ID'] ret = session.getdata(sql) param_list=[] for i in ret: if self.is_warning(i,str(r[i['FIELDNAME']]).strip()): param_list.append(i['DESCRIPT']) self.hlist.item_create(r['ID'],4,itemtype='text',text=string.join(param_list,",")) ########################################################################## if opttype.upper()=='CONTROL': fields['k1']=unicode('设备名称') fields['k6']=unicode('放置地点') fields['k2']=unicode('控制时间') #fields['k3']=unicode('响应时间') fields['k4']=unicode('控制结果') fields['k5']=unicode('控制项') cols = len(fields.keys()) self.context = ScrolledHList(self.p2,scrollbar ='auto',options="hlist.columns %s header 1"%cols) self.context.pack(fill='both',expand=1,padx=4,pady=4) self.hlist = self.context.hlist self.hlist.configure(command=self.oncontrol) self.hlist.config(separator='.', width=25, drawbranch=0) self.hlist.column_width(0, chars=20) self.hlist.column_width(1, chars=25) self.hlist.column_width(2, chars=25) self.hlist.column_width(3, chars=25) ks = fields.keys() self.hlist.header_create(0,itemtype='text',text=fields['k1']) self.hlist.header_create(1,itemtype='text',text=fields['k6']) self.hlist.header_create(2,itemtype='text',text=fields['k2']) #self.hlist.header_create(3,itemtype='text',text=fields['k3']) self.hlist.header_create(3,itemtype='text',text=fields['k4']) self.hlist.header_create(4,itemtype='text',text=fields['k5']) for r in rs: devtitle ='' site = '' for i in session.user.repeaters: if i['ID']==r['REPEATER_ID']: devtitle= session.getdevtitle(i) site = session.getsite(i) path = r['ID'] self.hlist.add(path,itemtype='text',text=devtitle) self.hlist.item_create(path,1,itemtype='text',text=site) time = r['OPTTIME'] time = time.Format('%Y/%m/%d %H:%M:%S') self.hlist.item_create(path,2,itemtype='text',text=time) time = r['BACKTIME'] if time: time = time.Format('%Y/%m/%d %H:%M:%S') else: time="" #self.hlist.item_create(path,3,itemtype='text',text=time) result = r['RESULT'] if result==None: result="" else: result=constdef.errors[str(result)] self.hlist.item_create(path,3,itemtype='text',text=result) #参数列表 sql = "SELECT c.control_map_status,c.descript FROM repeaterinfo a ,control b,param_config c " sql+= " where a.id=b.repeater_id and a.repeatertype=c.repeatertype and c.is_control=1 " sql+= " and b.id=%s" sql = sql%r['ID'] ret = session.getdata(sql) param_list=[] for i in ret: if r[i['CONTROL_MAP_STATUS']] != None: param_list.append(i['DESCRIPT']) self.hlist.item_create(r['ID'],4,itemtype='text',text=string.join(param_list,",")) #用户管理操作 if opttype.upper()=='USERMGR': fields['k1']=unicode('类型') fields['k2']=unicode('设备名称') fields['k3']=unicode('管理员') fields['k4']=unicode('时间') fields['k5']=unicode('状态') cols = len(fields.keys()) self.context = ScrolledHList(self.p2,scrollbar ='auto',options="hlist.columns %s header 1"%cols) self.context.pack(fill='both',expand=1,padx=4,pady=4) self.hlist = self.context.hlist #self.hlist.configure(command=self.oncontrol) self.hlist.config(separator='.', width=25, drawbranch=0) self.hlist.column_width(0, chars=20) self.hlist.column_width(1, chars=20) self.hlist.column_width(2, chars=12) self.hlist.column_width(3, chars=20) self.hlist.column_width(4, chars=25) ks = fields.keys() self.hlist.header_create(0,itemtype='text',text=fields['k1']) self.hlist.header_create(1,itemtype='text',text=fields['k2']) self.hlist.header_create(2,itemtype='text',text=fields['k3']) self.hlist.header_create(3,itemtype='text',text=fields['k4']) self.hlist.header_create(4,itemtype='text',text=fields['k5']) devtitle='' for r in rs: path = r['TRANSACTIONNO'] self.hlist.add(path,itemtype='text',text=r['DESCRIPT']) target = r['TARGET'] if target==None or target.strip()=="": target=unicode("系统") else: for i in session.user.repeaters: if i['ID']==int(str(target)): devtitle= session.getdevtitle(i) self.hlist.item_create(path,1,itemtype='text',text=devtitle) self.hlist.item_create(path,2,itemtype='text',text=r['REAL_NAME']) time = r['OPTTIME'] time = time.Format('%Y/%m/%d %H:%M:%S') self.hlist.item_create(path,3,itemtype='text',text=time) result = r['RESULT'] try: result=constdef.errors[str(result)] except: result ="" self.hlist.item_create(path,4,itemtype='text',text=result)
def show(self,control_id): '''创建状态''' ################################################################## for i in self.widgets: i.destroy() del i self.widgets=[] for i in self.control_widget: i[1].destroy() del i[1] #删除存储的wiget对象 self.control_widget =[] self.control_params=[] ################################################################## #获取当前设备工作状态记录 sql = 'select * from control where id=%s'%control_id self.control = session.getdata(sql) cur_status = self.control if len(cur_status) ==0: param_status =[] return else: cur_status =cur_status[0] ################################################################### # 优化速度 sql = "select * from repeaterinfo where id=%s"%cur_status['REPEATER_ID'] devinfo = session.getdata(sql) title = session.getdevtitle(devinfo[0]) self.title.config(text = title) row = devinfo[0] #param_status = sql = "select * from param_config where repeatertype=%s and is_status=1 and is_control=1 and isdisplay=1"%row['REPEATERTYPE'] param_status = session.getdata(sql) idx =0 ################################################################### for i in param_status: row= idx / 2 column= idx % 2 if column == 1: column = 2 #同行的第二个状态参数排布位置 # elif column == 2: # column = 4 time="" try: time = cur_status['OPTTIME'] time = time.Format('%Y/%m/%d %H:%M:%S') except: time="" self.time.config(text=time) lb = Label(self.sw.window,text=i['DESCRIPT'],anchor='e',relief='groove') lb.grid(column = column,row = row,padx=4,pady=2,sticky='e') self.widgets.append(lb) i['PARAMNAME'] =string.strip(i['PARAMNAME'] ) try: text="" try: text=cur_status[i['CONTROL_MAP_STATUS']] except: pass #显示开关字符 if i['UI_TYPE']=='SELECT': text="" try: text =constdef.switch[ str(cur_status[i['CONTROL_MAP_STATUS']]) ] except: pass except: text="" lb = Label(self.sw.window,fg='blue',text=text) lb.grid(column = column+1,row = row,padx=4,pady=2) self.widgets.append(lb) # ################################################################## # idx+=1
def show_status(self,devid): '''创建状态,控制控件''' self.id = devid ################################################################## for i in self.widgets: i.destroy() del i self.widgets=[] self.control_widget =[] self.control_params=[] ################################################################## #获取当前设备工作状态记录 sql = 'select * from status where id=%s'%devid self.status = session.getdata(sql) cur_status = self.status if len(cur_status) ==0: param_status =[] else: cur_status =cur_status[0] ############################################## sql = "select * from repeaterinfo where id=%s"%cur_status['REPEATER_ID'] devinfo = session.getdata(sql) print sql title = session.getdevtitle(devinfo[0]) self.title.config(text = title) row = devinfo[0] #param_status = sql = "select * from param_config where repeatertype=%s and is_status=1 and isdisplay=1"%row['REPEATERTYPE'] param_status = session.getdata(sql) #print "get %s object from param_config"%len(param_status) time="" try: time = cur_status['OPTTIME'] time = time.Format('%Y/%m/%d %H:%M:%S') except: time="" self.time.config(text=time) ############################################## idx =0 for i in param_status: #print i['PARAMNAME'],i['FIELDNAME'] row= idx / 2 column= idx % 2 if column == 1: column = 2 #同行的第二个状态参数排布位置 # elif column == 2: # column = 4 lb = Label(self.sw.window,text=i['DESCRIPT'],anchor='e',relief='groove') lb.grid(column = column,row = row,padx=4,pady=2,sticky='e') self.widgets.append(lb) i['PARAMNAME'] =string.strip(i['PARAMNAME'] ) #不区分告警值,所有的状态值都是有告警的可能 text="" try: text =cur_status[i['FIELDNAME']] except: print 'get value error:SELECT VALUE INVALID!!!! ==> %s'%i['FIELDNAME'] text ="?" #显示开关字符 if i['UI_TYPE']=='SELECT': try: ls1=[] ls1 = re.split(';',i['UI_VALUE_RANGE']) for s in ls1: ls2 =re.split(':',s) if int(ls2[1])==int(cur_status[i['FIELDNAME']]): # text = ls2[0] break else: text ="?" except: print 'SELECT VALUE INVALID!!!! ==> %s'%i['FIELDNAME'] print "default switch value ==>",text lb = Label(self.sw.window,fg='blue',text=text,relief='raise',borderwidth=2) #检测当前值是否告警 if self.is_warning(i,str(cur_status[i['FIELDNAME']])): lb.config(background='red') else: lb.config(background='green') lb.grid(column = column+1,row = row,padx=4,pady=2) self.widgets.append(lb) # ################################################################## # idx+=1
def show(self, devid): '''显示参数信息''' sql = "select * from repeaterinfo where id=%s" % devid self.devinfo = session.getdata(sql)[0] title = session.getdevtitle(self.devinfo) self.title.config(text=title) #------------------------------ self.zdh.setentry(self.devinfo['REPEATER_ID']) v = self.devinfo['QUERY_PHONE'] if v == None: v = "" else: v = v.strip() self.central_phone.setentry(v) v = self.devinfo['ALARM_PHONE'] if v == None: v = "" else: v = v.strip() self.alert_phone.setentry(v) #------------------------------------------------- try: v = self.devinfo['MONI_ALARM_ID1'] v = v | self.devinfo['MONI_ALARM_ID2'] << 8 except: v = 0 print v v = "%s" % v self.moni_alert.setentry(v) #------------------------------------------------- repeatertype = self.devinfo['REPEATERTYPE'] #------------------------------------------------- try: v = self.devinfo['MONI_ALARM_ID1'] & 0x0f except: v = 0 print "repeatertype-->", repeatertype, v self.lb_ad0_alert.config( text=constdef.adc_hash[str(repeatertype)][int(v)]) try: v = self.devinfo['MONI_ALARMFLAG'] & 0x10 except: v = 0 if v: self.ad0_alert.config(value=unicode('不告警')) else: self.ad0_alert.config(value=unicode('告警')) #------------------------------------------------- try: v = (self.devinfo['MONI_ALARM_ID1'] & 0xf0) >> 4 #get adc data 0-13 item except: v = 0 self.lb_ad1_alert.config( text=constdef.adc_hash[str(repeatertype)][int(v)]) try: v = self.devinfo['MONI_ALARMFLAG'] & 0x20 except: v = 0 if v: self.ad1_alert.config(value=unicode('不告警')) else: self.ad1_alert.config(value=unicode('告警')) #------------------------------------------------- try: v = (self.devinfo['MONI_ALARM_ID2'] & 0x0f ) #get adc data 0-13 item except: v = 0 self.lb_ad2_alert.config( text=constdef.adc_hash[str(repeatertype)][int(v)]) try: v = self.devinfo['MONI_ALARMFLAG'] & 0x40 except: v = 0 if v: self.ad2_alert.config(value=unicode('不告警')) else: self.ad2_alert.config(value=unicode('告警')) #------------------------------------------------- try: v = (self.devinfo['MONI_ALARM_ID2'] & 0xf0) >> 4 #get adc data 0-13 item except: v = 0 print "repeatertype:%s,moni_alarm:%s" % (repeatertype, v) self.lb_ad3_alert.config( text=constdef.adc_hash[str(repeatertype)][int(v)]) try: v = self.devinfo['MONI_ALARMFLAG'] & 0x80 except: v = 0 if v: self.ad3_alert.config(value=unicode('不告警')) else: self.ad3_alert.config(value=unicode('告警')) #------------------------------------------------- v = self.devinfo['AD0MIN'] if v == None: v = 0 self.ad0min.setentry(v) #------------------------------------------------- v = self.devinfo['AD0MAX'] if v == None: v = 0 self.ad0max.setentry(v) #------------------------------------------------- v = self.devinfo['AD1MIN'] if v == None: v = 0 self.ad1min.setentry(v) #------------------------------------------------- v = self.devinfo['AD1MAX'] if v == None: v = 0 self.ad1max.setentry(v) #------------------------------------------------- v = self.devinfo['AD2MIN'] if v == None: v = 0 self.ad2min.setentry(v) #------------------------------------------------- v = self.devinfo['AD2MAX'] if v == None: v = 0 self.ad2max.setentry(v) #------------------------------------------------- v = self.devinfo['AD3MIN'] if v == None: v = 0 self.ad3min.setentry(v) #------------------------------------------------- v = self.devinfo['AD3MAX'] if v == None: v = 0 self.ad3max.setentry(v) #------------------------------------------------- try: v = self.devinfo['DIGIT_ALARM1'] | ( self.devinfo['DIGIT_ALARM2'] << 8) except: v = 0 self.digit_alert.setentry("%s" % v) #------------------------------------------------- try: #print self.devinfo['DIGIT_ALARMFLAG1'],self.devinfo['DIGIT_ALARMFLAG1'] v = self.devinfo['DIGIT_ALARMFLAG1'] | ( self.devinfo['DIGIT_ALARMFLAG2'] << 8) except: v = 0 print hex(v), v for i in range(0, 16): stm = "self.lb_d%s.config(text=constdef.dp_hash[str(repeatertype)][int(i)])" % i exec(stm) print 1 << i, v if (1 << i) & v: stm = "self.d%s_alert.config(value=unicode('不告警'))" % i else: stm = "self.d%s_alert.config(value=unicode('告警'))" % i exec(stm)
def show_status(self,devid): '''创建状态,控制控件''' self.id = devid ################################################################## for i in self.widgets: i.destroy() del i self.widgets=[] for i in self.control_widget: i[1].destroy() del i[1] #删除存储的wiget对象 self.control_widget =[] self.control_params=[] ################################################################## # 优化速度 sql = "select * from repeaterinfo where id=%s"%devid devinfo = session.getdata(sql) title = session.getdevtitle(devinfo[0]) self.title.config(text = title) row = devinfo[0] self.cur_dev = row #param_status = sql = "select * from param_config where repeatertype=%s and is_status=1 and isdisplay=1"%row['REPEATERTYPE'] param_status = session.getdata(sql) #print "get %s object from param_config"%len(param_status) #获取当前设备工作状态记录 sql = 'select * from statusview where repeater_id=%s'%devid self.status = session.getdata(sql) cur_status = self.status if len(cur_status) ==0: param_status =[] else: cur_status =cur_status[0] ############################################## time="" try: time = cur_status['OPTTIME'] time = time.Format('%Y/%m/%d %H:%M:%S') except: time="" self.time.config(text=time) ############################################## idx =0 for i in param_status: #print i['PARAMNAME'],i['FIELDNAME'] row= idx / 2 column= idx % 2 if column == 1: column = 2 #同行的第二个状态参数排布位置 # elif column == 2: # column = 4 lb = Label(self.sw.window,text=i['DESCRIPT'],anchor='e',relief='groove') lb.grid(column = column,row = row,padx=4,pady=2,sticky='e') self.widgets.append(lb) i['PARAMNAME'] =string.strip(i['PARAMNAME'] ) #不区分告警值,所有的状态值都是有告警的可能 text="" try: text =cur_status[i['FIELDNAME']] except: print 'get value error:SELECT VALUE INVALID!!!! ==> %s'%i['FIELDNAME'] text ="?" #显示开关字符 if i['UI_TYPE']=='SELECT': try: ls1=[] ls1 = re.split(';',i['UI_VALUE_RANGE']) for s in ls1: ls2 =re.split(':',s) if int(ls2[1])==int(cur_status[i['FIELDNAME']]): # text = ls2[0] break else: text ="?" except: print 'SELECT VALUE INVALID!!!! ==> %s'%i['FIELDNAME'] print "default switch value ==>",text lb = Label(self.sw.window,fg='blue',text=text,relief='raise',borderwidth=2) #检测当前值是否告警 if self.is_warning(i,str(cur_status[i['FIELDNAME']])): lb.config(background='red') else: lb.config(background='green') lb.grid(column = column+1,row = row,padx=4,pady=2) self.widgets.append(lb) # ################################################################## # # 创建控制面板参数 if i['IS_CONTROL']==1: self.control_params.append(i) #将当前参数结构保存 lb = Label(self.swcontrol.window,text=i['DESCRIPT'],anchor='e') lb.grid(column = 0,row = idx,padx=4,pady=2,sticky='e') #self.control_widget.append(lb) self.widgets.append(lb) stm="self.var%s=IntVar()"%i['PARAMNAME'] exec(stm) stm ="self.ck%s= Checkbutton(self.swcontrol.window,variable=self.var%s )"%(i['PARAMNAME'],i['PARAMNAME']) exec(stm) stm ="self.ck%s.grid(column = 2,row = idx,padx=4,pady=2)"%i['PARAMNAME'] exec(stm) stm = "self.widgets.append(self.ck%s)"%i['PARAMNAME'] exec(stm) if i['UI_TYPE']=='TEXT': #在这里,没有进行entry值输入的约束,对输入控制的参数没有进行校验 stm="" if i['PARAM_TYPE']==1: #整型值 stm = "self.en%s = Pmw.EntryField(self.swcontrol.window,labelpos='w',validate = {'validator' : 'integer'} )" elif i['PARAM_TYPE']==3: #浮点型 stm = "self.en%s = Pmw.EntryField(self.swcontrol.window,labelpos='w',validate = {'validator' : 'real'} )" stm = stm%i['PARAMNAME'] exec(stm) stm ="self.en%s.grid(column = 1,row = idx,padx=4,pady=2,sticky='w')" stm = stm%i['PARAMNAME'] exec(stm) #负值 v="" try: v =cur_status[i['FIELDNAME']] except: v="" stm ="self.en%s.setentry(%s)"%(i['PARAMNAME'],v) exec(stm) stm = "self.control_widget.append(['%s',self.en%s,'en'])"%(i['PARAMNAME'],i['PARAMNAME']) exec(stm) if i['UI_TYPE']=='SELECT': stm = "self.cb%s=ComboBox(self.swcontrol.window )"%i['PARAMNAME'] exec(stm) stm ="self.cb%s.grid(column = 1,row = idx,padx=4,pady=2,sticky='w')" stm = stm%i['PARAMNAME'] exec(stm) stm = "self.control_widget.append(['%s',self.cb%s,'cb'])"%(i['PARAMNAME'],i['PARAMNAME']) exec(stm) range = i['UI_VALUE_RANGE'] ls1 = re.split(';',range) for s in ls1: ls2 =re.split(':',s) stm = "self.cb%s.append_history(unicode('%s'))"%(i['PARAMNAME'],ls2[0]) exec(stm) #负值 v=0 try: ls1=[] ls1 = re.split(';',i['UI_VALUE_RANGE']) for s in ls1: ls2 =re.split(':',s) if int(ls2[1])==int(cur_status[i['FIELDNAME']]): # v = ls2[0] break else: v ="?" except: v="" stm = "self.cb%s.config(value=unicode('%s'))"%(i['PARAMNAME'],v) #print stm exec(stm) # idx+=1
def show_status(self, devid): '''创建状态,控制控件''' self.id = devid ################################################################## for i in self.widgets: i.destroy() del i self.widgets = [] for i in self.control_widget: i[1].destroy() del i[1] #删除存储的wiget对象 self.control_widget = [] self.control_params = [] ################################################################## # 优化速度 sql = "select * from repeaterinfo where id=%s" % devid devinfo = session.getdata(sql) title = session.getdevtitle(devinfo[0]) self.title.config(text=title) row = devinfo[0] self.cur_dev = row #param_status = sql = "select * from param_config where repeatertype=%s and is_status=1 and isdisplay=1" % row[ 'REPEATERTYPE'] param_status = session.getdata(sql) #print "get %s object from param_config"%len(param_status) #获取当前设备工作状态记录 sql = 'select * from statusview where repeater_id=%s' % devid self.status = session.getdata(sql) cur_status = self.status if len(cur_status) == 0: param_status = [] else: cur_status = cur_status[0] ############################################## time = "" try: time = cur_status['OPTTIME'] time = time.Format('%Y/%m/%d %H:%M:%S') except: time = "" self.time.config(text=time) ############################################## idx = 0 for i in param_status: #print i['PARAMNAME'],i['FIELDNAME'] row = idx / 2 column = idx % 2 if column == 1: column = 2 #同行的第二个状态参数排布位置 # elif column == 2: # column = 4 lb = Label(self.sw.window, text=i['DESCRIPT'], anchor='e', relief='groove') lb.grid(column=column, row=row, padx=4, pady=2, sticky='e') self.widgets.append(lb) i['PARAMNAME'] = string.strip(i['PARAMNAME']) #不区分告警值,所有的状态值都是有告警的可能 text = "" try: text = cur_status[i['FIELDNAME']] except: print 'get value error:SELECT VALUE INVALID!!!! ==> %s' % i[ 'FIELDNAME'] text = "?" #显示开关字符 if i['UI_TYPE'] == 'SELECT': try: ls1 = [] ls1 = re.split(';', i['UI_VALUE_RANGE']) for s in ls1: ls2 = re.split(':', s) if int(ls2[1]) == int(cur_status[i['FIELDNAME']]): # text = ls2[0] break else: text = "?" except: print 'SELECT VALUE INVALID!!!! ==> %s' % i['FIELDNAME'] print "default switch value ==>", text lb = Label(self.sw.window, fg='blue', text=text, relief='raise', borderwidth=2) #检测当前值是否告警 if self.is_warning(i, str(cur_status[i['FIELDNAME']])): lb.config(background='red') else: lb.config(background='green') lb.grid(column=column + 1, row=row, padx=4, pady=2) self.widgets.append(lb) # ################################################################## # # 创建控制面板参数 if i['IS_CONTROL'] == 1: self.control_params.append(i) #将当前参数结构保存 lb = Label(self.swcontrol.window, text=i['DESCRIPT'], anchor='e') lb.grid(column=0, row=idx, padx=4, pady=2, sticky='e') #self.control_widget.append(lb) self.widgets.append(lb) stm = "self.var%s=IntVar()" % i['PARAMNAME'] exec(stm) stm = "self.ck%s= Checkbutton(self.swcontrol.window,variable=self.var%s )" % ( i['PARAMNAME'], i['PARAMNAME']) exec(stm) stm = "self.ck%s.grid(column = 2,row = idx,padx=4,pady=2)" % i[ 'PARAMNAME'] exec(stm) stm = "self.widgets.append(self.ck%s)" % i['PARAMNAME'] exec(stm) if i['UI_TYPE'] == 'TEXT': #在这里,没有进行entry值输入的约束,对输入控制的参数没有进行校验 stm = "" if i['PARAM_TYPE'] == 1: #整型值 stm = "self.en%s = Pmw.EntryField(self.swcontrol.window,labelpos='w',validate = {'validator' : 'integer'} )" elif i['PARAM_TYPE'] == 3: #浮点型 stm = "self.en%s = Pmw.EntryField(self.swcontrol.window,labelpos='w',validate = {'validator' : 'real'} )" stm = stm % i['PARAMNAME'] exec(stm) stm = "self.en%s.grid(column = 1,row = idx,padx=4,pady=2,sticky='w')" stm = stm % i['PARAMNAME'] exec(stm) #负值 v = "" try: v = cur_status[i['FIELDNAME']] except: v = "" stm = "self.en%s.setentry(%s)" % (i['PARAMNAME'], v) exec(stm) stm = "self.control_widget.append(['%s',self.en%s,'en'])" % ( i['PARAMNAME'], i['PARAMNAME']) exec(stm) if i['UI_TYPE'] == 'SELECT': stm = "self.cb%s=ComboBox(self.swcontrol.window )" % i[ 'PARAMNAME'] exec(stm) stm = "self.cb%s.grid(column = 1,row = idx,padx=4,pady=2,sticky='w')" stm = stm % i['PARAMNAME'] exec(stm) stm = "self.control_widget.append(['%s',self.cb%s,'cb'])" % ( i['PARAMNAME'], i['PARAMNAME']) exec(stm) range = i['UI_VALUE_RANGE'] ls1 = re.split(';', range) for s in ls1: ls2 = re.split(':', s) stm = "self.cb%s.append_history(unicode('%s'))" % ( i['PARAMNAME'], ls2[0]) exec(stm) #负值 v = 0 try: ls1 = [] ls1 = re.split(';', i['UI_VALUE_RANGE']) for s in ls1: ls2 = re.split(':', s) if int(ls2[1]) == int( cur_status[i['FIELDNAME']]): # v = ls2[0] break else: v = "?" except: v = "" stm = "self.cb%s.config(value=unicode('%s'))" % ( i['PARAMNAME'], v) #print stm exec(stm) # idx += 1