示例#1
0
 def __init__(self, cfg=None):
     if cfg is None:
         cfg = PaellaConfig()
     dsn = cfg.get_dsn()
     dsn['dbusername'] = '******'
     PaellaConnection.__init__(self, dsn)
     print 'installer connection made'
示例#2
0
 def __init__(self, cfg=None):
     if cfg is None:
         cfg = PaellaConfig()
     dsn = cfg.get_dsn()
     dsn["dbusername"] = "******"
     PaellaConnection.__init__(self, dsn)
     print "installer connection made"
示例#3
0
 def __init__(self, cfg=None):
     if cfg is None:
         cfg = PaellaConfig('database')
     if type(cfg) is not dict:
         dsn = cfg.get_dsn()
     else:
         dsn = cfg
     if os.environ.has_key('PAELLA_DBHOST'):
         dsn['dbhost'] = os.environ['PAELLA_DBHOST']
     if os.environ.has_key('PAELLA_DBNAME'):
         dsn['dbname'] = os.environ['PAELLA_DBNAME']
     if os.environ.has_key('PAELLA_DBPORT'):
         dsn['dbport'] = int(os.environ['PAELLA_DBPORT'])
         if dsn['dbport'] not in range(1, 65536):
             raise ValueError, 'bad database port %s' % dsn['dbport']
     user = dsn['dbusername']
     host = dsn['dbhost']
     dbname = dsn['dbname']
     passwd = dsn['dbpassword']
     autocommit = 0
     if dsn['autocommit'] == 'true':
         autocommit = 1
     if 'dbport' in dsn:
         port = dsn['dbport']
     else:
         port = 5432
     BasicConnection.__init__(self, user=user, host=host,
                             dbname=dbname, passwd=passwd, port=port)
     self.autocommit = autocommit
示例#4
0
 def __init__(self, cfg=None):
     if cfg is None:
         cfg = PaellaConfig('database')
     if type(cfg) is not dict:
         dsn = cfg.get_dsn()
     else:
         dsn = cfg
     if os.environ.has_key('PAELLA_DBHOST'):
         dsn['dbhost'] = os.environ['PAELLA_DBHOST']
     if os.environ.has_key('PAELLA_DBNAME'):
         dsn['dbname'] = os.environ['PAELLA_DBNAME']
     if os.environ.has_key('PAELLA_DBPORT'):
         dsn['dbport'] = int(os.environ['PAELLA_DBPORT'])
         if dsn['dbport'] not in range(1, 65536):
             raise ValueError, 'bad database port %s' % dsn['dbport']
     user = dsn['dbusername']
     host = dsn['dbhost']
     dbname = dsn['dbname']
     passwd = dsn['dbpassword']
     autocommit = 0
     if dsn['autocommit'] == 'true':
         autocommit = 1
     if 'dbport' in dsn:
         port = dsn['dbport']
     else:
         port = 5432
     BasicConnection.__init__(self,
                              user=user,
                              host=host,
                              dbname=dbname,
                              passwd=passwd,
                              port=port)
     self.autocommit = autocommit
示例#5
0
 def __init__(self, cfg=None):
     if cfg is None:
         cfg = PaellaConfig()
     dsn = cfg.get_dsn()
     # enforce user to be paella
     dsn['dbusername'] = '******'
     PaellaConnection.__init__(self, dsn)
     print 'installer connection made'
示例#6
0
 def __init__(self, cfg=None):
     if cfg is None:
         cfg = PaellaConfig('database')
     if type(cfg) is not dict:
         dsn = cfg.get_dsn()
     else:
         dsn = cfg
     if os.environ.has_key('PAELLA_DBHOST'):
         dsn['dbhost'] = os.environ['PAELLA_DBHOST']
     if os.environ.has_key('PAELLA_DBNAME'):
         dsn['dbname'] = os.environ['PAELLA_DBNAME']
     QuickConn.__init__(self, dsn)
示例#7
0
 def __init__(self, cfg=None):
     if cfg is None:
         cfg = PaellaConfig('database')
     if type(cfg) is not dict:
         dsn = cfg.get_dsn()
     else:
         dsn = cfg
     if os.environ.has_key('PAELLA_DBHOST'):
         dsn['dbhost'] = os.environ['PAELLA_DBHOST']
     if os.environ.has_key('PAELLA_DBNAME'):
         dsn['dbname'] = os.environ['PAELLA_DBNAME']
     QuickConn.__init__(self, dsn)
示例#8
0
class Manager(CommandBoxWindow):
    def __init__(self, name='Manager'):
        CommandBoxWindow.__init__(self)
        self.cfg = PaellaConfig('database')
        self.dialogs = {}.fromkeys(['dbname', 'suitemanager'])
        apps = ['profiles', 'families', 'suitemanager', 'traitmanager', 'machines',
                'traits', 'tdiff', 'sdiff', 'fdiff', 'default_environment', 'clients',
                'browser']
        self.workspace = {}.fromkeys(apps)
        self.add_menu(dbcommands, 'database', self.database_command)
        self.add_menu(self.workspace.keys(), 'edit', self.edit_command)
        self.set_size_request(150,200)
        self.conn = None
        self.dbname = None
        self.dblist = ScrollCList()
        self.vbox.add(self.dblist)
        conn = PaellaConnection(self.cfg)
        cursor = StatementCursor(conn, 'quicky')
        self.dblist.set_rows(cursor.select(table='pg_database'))
        cursor.close()
        conn.close()
        self.tbar.add_button('profiles', 'profile manager', self.run_tbar)
        self.tbar.add_button('families', 'family manager', self.run_tbar)
        self.tbar.add_button('machines', 'machine manager', self.run_tbar)
        self.tbar.add_button('traits', 'trait manager', self.run_tbar)
        self.tbar.add_button('tdiff', 'template differ', self.run_tbar)
        self.tbar.add_button('sdiff', 'script differ', self.run_tbar)
        self.tbar.add_button('fdiff', 'family differ', self.run_tbar)
        
    def edit_command(self, menuitem, name):
        if self.conn is None:
            dialogs.Message('Not Connected')
        else:
            if name == 'profiles':
                self.workspace['profiles'] = ProfileGenWin(self.conn, self.dbname)
            elif name in ['suitemanager']:
                if not self.dialogs[name]:
                    msg = 'select a suite'
                    self.dialogs[name] = dialogs.CList(msg, name=name)
                    lbox = self.dialogs[name]
                    lbox.set_rows(self.main.select(table='suites'))
                    lbox.set_ok(self.suite_selected)
                    lbox.set_cancel(self.destroy_dialog)
            else: self.run_tbar(None, name)
            

    def run_tbar(self, button=None, data=None):
        if data == 'profiles':
            self.workspace[data] = ProfileGenWin(self.conn, self.dbname)
        elif data == 'machines':
            self.workspace[data] = MainMachineWin(self.conn)
        elif data == 'traits':
            self.workspace[data] = TraitManagerWin(self.conn)
        elif data == 'families':
            self.workspace[data] = FamilyWin(self.conn)
        elif data == 'tdiff':
            self.workspace[data] = DifferWin(self.conn, 'template')
        elif data == 'sdiff':
            self.workspace[data] = DifferWin(self.conn, 'script')
        elif data == 'fdiff':
            self.workspace[data] = DifferWin(self.conn, 'family')
        elif data == 'default_environment':
            self.workspace[data] = DefEnvEditor(self.conn)
        elif data == 'clients':
            self.workspace[data] = ClientManager(self.conn)
        elif data == 'browser':
            self.workspace[data] = 'working'
            print data
            os.spawnlpe(os.P_NOWAIT, 'paella-kde-management',
                        '--display :0', os.environ)
            print data, 'running'
        else:
            dialogs.Message('bad command %s' % data)
        
    def database_command(self, menuitem, name):
        if name == 'connect':
            if self.conn is None and not self.dialogs['dbname']:
                msg = 'connect to which database?'
                dbname = self.dblist.get_selected_data()[0].datname
                self.dialogs['dbname']  = dialogs.Entry(msg, name='dbname')
                entry = self.dialogs['dbname']
                entry.set_ok(self.ok_dialog)
                entry.set_cancel(self.destroy_dialog)
                entry.set(dbname)
            else:
                dialogs.Message('no multiple connections yet')
        elif name == 'disconnect':
            if self.conn is not None:
                self.main.close()
                self.conn.close()
                self.conn = None
                self.dbname = None
            else:
                dialogs.Message('no connection to leave')
        elif name in ['backup', 'restore']:
            filesel = FileSelection(title='%s database' %name)
            filesel.cancel_button.connect('clicked',
                                          lambda x: filesel.destroy())
            filesel.show()
            bkup_path = self.cfg['import_path']
            filesel.set_filename(self._filepath_(bkup_path))
            filesel.ok_button.connect('clicked', self.ok_file, filesel)
            filesel.set_data('action', name)
        else:
            dialogs.Message('%s unimplemented'%name)

    def ok_file(self, button, filesel):
        path = filesel.get_filename()
        mdpath = join(dirname(path), 'machine_database.xml')
        action = filesel.get_data('action')
        filesel.destroy()
        dir = dirname(path)
        dbm = DatabaseManager(self.conn)
        if action == 'backup':
            dbm.backup(dir)
        elif action == 'restore':
            dbm.restore(dir)
            
    def suite_selected(self, button):
        name = button.get_name()
        row = self.dialogs[name].get_selected_data()[0]
        debug(row.suite)
        self.destroy_dialog(self.dialogs[name])
        SuiteManager(self.conn, row.suite)
        
        
    def _filepath_(self, path):
        return join(path, self.dbname + '.xml')
    
    def ok_dialog(self, button):
        name = button.get_name()
        if name == 'dbname':
            dbname = self.dialogs[name].get()
            self.dbconnect(dbname)
        self.destroy_dialog(self.dialogs[name])
        
    def dbconnect(self, dbname):
        self.cfg.change('database')
        dsn = self.cfg.get_dsn()
        dsn['dbname'] = dbname
        self.conn = PaellaConnection(dsn)
        self.main = StatementCursor(self.conn, 'mainManager')
        self.dbname = dbname
        dialogs.Message('connected to database %s' %dbname)

        
    def destroy_dialog(self, dying):
        name = dying.get_name()
        self.dialogs[name] = None
        dying.destroy()