def __init__(self, views=None):

        if views is None:
            print('load views from database ...')
            views = ft.get_class_devices('PanicViewDS')
            views.append(ft.get_tango_host())

        print('ViewChooser(%s)' % views)
        self.view = ''
        self.views = fd.dicts.SortedDict()
        for v in views:
            if ':' in v:
                self.views[v] = v
            else:
                desc = ft.get_device(v).Description.split('\n')[0]
                self.views[desc] = v

        Qt.QDialog.__init__(self, None)
        #self.setModal(True)
        self.setWindowTitle('PANIC View Chooser')
        self.setLayout(Qt.QVBoxLayout())
        self.layout().addWidget(Qt.QLabel('Choose an AlarmView'))
        self.chooser = Qt.QComboBox()
        self.chooser.addItems(self.views.keys())
        self.layout().addWidget(self.chooser)
        self.button = Qt.QPushButton('Done')
        self.layout().addWidget(self.button)
        self.button.connect(self.button, Qt.SIGNAL('pressed()'), self.done)
        self.button.connect(self.button, Qt.SIGNAL('pressed()'), self.close)
Exemplo n.º 2
0
    def get_model(self, alarm):
        alarm = getattr(alarm, 'tag', str(alarm))
        try:
            if '/' not in alarm:
                alarm = self.get_alarm(alarm).get_model()
            if ':' not in alarm:
                alarm = ft.get_tango_host() + '/' + alarm

        except Exception, e:
            self.warning('get_model(%s): %s' % (alarm, e))
Exemplo n.º 3
0
 def load_from_servers_list(self,servers_list,check=True):
     """ Initializes the dictionary using a list of server_names like ['Exec/Instance'] """
     t0 = time.time()
     if type(servers_list) is str: servers_list = servers_list.split(',')
     if check: self.check_servers_names(servers_list)
     for s in servers_list:
         try:           
             self.log.debug('loading from %s/%s server'%(get_tango_host(self.db),s))
             ss=TServer(name=s,parent=self)
             ss.init_from_db(self.db)
             self[s] = ss
         except Exception,e:
             self.log.warning('exception loading %s server: %s' % (s,str(e)[:100]+'...'))
             print traceback.format_exc()
Exemplo n.º 4
0
 def load_from_servers_list(self, servers_list, check=True):
     """ Initializes the dictionary using a list of server_names like ['Exec/Instance'] """
     t0 = time.time()
     if type(servers_list) is str: servers_list = servers_list.split(',')
     if check: self.check_servers_names(servers_list)
     for s in servers_list:
         try:
             self.log.debug('loading from %s/%s server' %
                            (get_tango_host(self.db), s))
             ss = TServer(name=s, parent=self)
             ss.init_from_db(self.db)
             self[s] = ss
         except Exception, e:
             self.log.warning('exception loading %s server: %s' %
                              (s, str(e)[:100] + '...'))
             print traceback.format_exc()
Exemplo n.º 5
0
 def get_host_starter(self, host):
     return self.proxies[get_tango_host(self.db) + '/tango/admin/' + host]
Exemplo n.º 6
0
 def get_tango_host(self):
     return get_tango_host(self._db)
Exemplo n.º 7
0
            full_servers_list.append((s_level, s_host, s_name))
            self.log.info('Server added to list: %s' %
                          [s_level, s_host, s_name])

        for level, host, s_name in sorted(full_servers_list):
            if not host:
                self.log.error(
                    'Host has not been defined; server  %s cannot be started' %
                    s_name)
                continue

            t0 = time.time()
            target = self[
                s_name].name  #Using the True name as returned by DbGetDeviceInfo()
            dserver = ('dserver/' if 'dserver' not in s_name else '') + s_name
            dserver = (get_tango_host(self.db) +
                       '/' if ':' not in dserver else '') + dserver
            self.log.info('StartingServer ' + target + ' at ' + host + ' ...')
            try:
                done = False
                self.get_host_starter(host).command_inout('DevStart', target)
                ct = int(wait / 10.)
                dp = self.proxies.get(dserver)

                while ct > 0:
                    event.wait(10.)
                    try:
                        dp.state()
                        ct = 0
                        done = True
                    except:
Exemplo n.º 8
0
 def get_host_starter(self,host):
     return self.proxies[get_tango_host(self.db)+'/tango/admin/'+host]
Exemplo n.º 9
0
 def get_tango_host(self):
     return get_tango_host(self._db)
Exemplo n.º 10
0
                    self.log.warning('start/stop_servers(%s): Unable to retrieve host/level information: %s'%(s_name,e))
            s_host = host or self[s_name].host or socket.gethostname()
            s_host = s_host.split('.')[0].strip() 
            s_level = s_name in self and self[s_name].level or 0
            full_servers_list.append((s_level,s_host,s_name))
            self.log.info('Server added to list: %s'%[s_level,s_host,s_name])
            
        for level,host,s_name in sorted(full_servers_list):
            if not host:
                self.log.error('Host has not been defined; server  %s cannot be started'%s_name)
                continue
              
            t0 = time.time()
            target = self[s_name].name #Using the True name as returned by DbGetDeviceInfo()
            dserver = ('dserver/' if 'dserver' not in s_name else '')+s_name
            dserver = (get_tango_host(self.db)+'/' if ':' not in dserver else '')+dserver
            self.log.info( 'StartingServer '+target+' at '+host+' ...')
            try:
                done = False
                self.get_host_starter(host).command_inout('DevStart',target)
                ct = int(wait/10.)
                dp = self.proxies.get(dserver)

                while ct>0:
                    event.wait(10.)
                    try: 
                        dp.state()
                        ct=0
                        done=True
                    except: pass
                    ct-=1
Exemplo n.º 11
0
## You should have received a copy of the GNU General Public License
## along with this program; if not, see <http://www.gnu.org/licenses/>.
###########################################################################

__doc__ = """
=================================
PyAlarm Device Default Properties
=================================
"""

import fandango as fd
from fandango.functional import join, djoin, time2str, str2time
from fandango.tango import PyTango, get_tango_host

try:
    tango_host = get_tango_host().split(':')[0]
except:
    tango_host = 'PyAlarm'

#@TODO: ERROR as a positive value causes problems to Eval
#(but it must be positive to appear first on lists?)
#The higher the value, the higher it will appear on View lists
AlarmStates = fd.Struct({
    'NORM': 0,  #Normal state
    'RTNUN': 1,  #Active but returned to normal  
    'ACKED': 2,  #Acknowledged by operator
    'ACTIVE': 3,  #UNACK alias
    'UNACK': 4,  #Active and unacknowledged  
    'ERROR': -1,  #PyAlarm not working properly, exception on formula     
    'SHLVD': -2,  #Silenced, hidden, ignored, (DEBUG), temporary state
    'DSUPR':