コード例 #1
0
ファイル: management.py プロジェクト: pombredanne/paella-svn
 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)
コード例 #2
0
ファイル: environ.py プロジェクト: pombredanne/paella-svn
 def env_command(self, menuitem, command):
     if command == 'update':
         dialogs.Message('updating %s' % self.current_trait)
         self.update_environment()
     elif command == 'create':
         self.ask_new_entry()
     else:
         dialogs.Message('ack')
コード例 #3
0
ファイル: template.py プロジェクト: pombredanne/paella-svn
 def _extract_packages(self):
     dialogs.Message('deprecated(for now)')
     if False:
         if self.extracted is None:
             packages = [p.package for p in self.traitpackage.packages()]
             path = self.trait_temp_path()
             self.set_extracted(True)
             packs = ',\n'.join(packages)
             message = 'extracted packages:\n %s into:\n%s' % (packs, path)
             dialogs.Message(message)
         else:
             dialogs.Message('already extracted')
コード例 #4
0
ファイル: template.py プロジェクト: pombredanne/paella-svn
 def export_trait(self, trait, path=None):
     if path is None:
         path = self.tarball_path
     tt = TraitTemplate(self.conn, self.suite)
     tt.set_trait(trait)
     backup_trait(self.conn, self.suite, trait, path)
     dialogs.Message('%s exported to %s' % (trait, path))
コード例 #5
0
ファイル: template.py プロジェクト: pombredanne/paella-svn
 def template_command(self, menuitem, command):
     if self.browser.extracted is None and command in [
             'new', 'diff', 'load'
     ]:
         dialogs.Message('packages not yet extracted')
     else:
         self.browser.template_command(command)
コード例 #6
0
ファイル: debconf.py プロジェクト: pombredanne/paella-svn
 def delete_row(self, button, data):
     rows = self.dcbox.get_selected_data()
     if len(rows) != 1:
         dialogs.Message('need to select something')
     else:
         r = rows[0]
         self.dc.delete(r.name, r.trait)
コード例 #7
0
ファイル: template.py プロジェクト: pombredanne/paella-svn
 def template_command(self, meuitem, command):
     if command in ['new']:
         path = self.trait_temp_path(filesel=True)
         select_a_file('new', path, self.fileselect_ok)
     elif command == 'diff':
         path = self.suite_template_path(filesel=True)
         select_a_file('load', path, self.fileselect_ok)
     elif command == 'save':
         self.save_template()
     elif command == 'load':
         path = self.suite_template_path(filesel=True)
         select_a_file('load', path, self.fileselect_ok)
     elif command == 'done':
         try:
             template = self.get_selected_data()[0].template
             self.remove_page(template)
         except IndexError:
             pass
     elif command == 'drop':
         print 'need to drop template'
         rows = self.get_selected_data()
         if len(rows):
             row = rows[0]
             self.traittemplate.drop_template(row.package, row.template)
             self.remove_page(row.template)
             self.reset_rows()
         else:
             dialogs.Message('a template must be selected')
     elif command == 'root':
         if self.dialogs['rootsel'] is None:
             path = self.tarball_path + '/'
             select_a_file('root', path, self.tarball_selected)
     elif command == 'edit':
         self.edit_template()
コード例 #8
0
ファイル: environ.py プロジェクト: pombredanne/paella-svn
 def remove_item(self, *args):
     d = self.dialogs['remove']
     name = d.get_selected_data()[0].name
     environ = TraitEnvironment(self.conn, self.suite, self.current_trait)
     del environ[name]
     dialogs.Message('%s deleted' % name)
     self.destroy_dialog(d)
コード例 #9
0
ファイル: management.py プロジェクト: pombredanne/paella-svn
 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)
コード例 #10
0
 def new_script(self, name):
     if self.script.get(name) is not None:
         dialogs.Message('script exists')
         raise Error, 'script exists'
     tmp = strfile()
     self.script.insert_script(name, tmp)
     self.append_script(name)
     tmp.close()
     self.edit_script(None, name, None)
コード例 #11
0
ファイル: base.py プロジェクト: pombredanne/paella-svn
 def pkey_command(self, menuitem, command):
     if command == 'insert':
         if self.dialogs['insert'] is None:
             dialog = dialogs.Entry('insert a %s' % self.pkey,
                                    name='insert')
             dialog.set_ok(self.pkey_insert_ok)
             dialog.set_cancel(self.destroy_dialog)
             self.dialogs['insert'] = dialog
     elif command == 'update':
         dialogs.Message('need to set update to cascade in db')
     elif command == 'done':
         value = None
         try:
             value = self.listbox.get_selected_data()[0][0]
         except IndexError:
             dialogs.Message('need to select %s first' % self.pkey)
         if value is not None:
             dialogs.Message('ok, i am done.')
コード例 #12
0
ファイル: debconf.py プロジェクト: pombredanne/paella-svn
 def _get_debconf(self, data=True):
     rows = self.get_selected_data()
     if not len(rows):
         raise dialogs.Message('need to select something')
     name = rows[0].name
     if data:
         return self._get_debconf_data(name)
     else:
         return name
コード例 #13
0
 def create_family(self, button):
     name = button.get_name()
     if name == 'create':
         family = self.dialogs[name].get()
         try:
             self.browser.family.create_family(family)
         except ExistsError:
             dialogs.Message('family %s already exists' % family)
         self.destroy_dialog(self.dialogs['create'])
         self.browser.reset_rows()
コード例 #14
0
 def menu_command(self, menuitem, name):
     client = self.client_view.get_selected_data()[0][0]
     if name == 'export':
         self.export_client(client)
     elif name == 'import':
         self.import_client(client)
     elif name == 'remove':
         self.remove_client(client)
     else:
         dialogs.Message('%s %s' % (name, client))
コード例 #15
0
ファイル: template.py プロジェクト: pombredanne/paella-svn
 def load_template(self, path):
     template, package = get_file_path(path, self.suite_template_path())
     if template[-9:] == '.template':
         template = template[:-9]
         if template not in self.templates:
             try:
                 orig = self.find_original(template)
                 self.insert_new_template(package, template, path)
             except NoExistError:
                 dialogs.Message('%s not in extracted packages' % template)
コード例 #16
0
 def modify_trait(self, menuitem, action):
     if action == 'hello':
         dialogs.Message('hello')
     elif action in ['import', 'update']:
         filesel = select_a_file(action, self.tarball_path + '/', self.select_trait_tarball)
     elif action in ['updatedir', 'exportdir', 'importdir']:
         filesel = select_a_file(action, self.tarball_path + '/', self.select_traitdir)
     elif action == 'export':
         try:
             trait = self.listbox.get_selected_data()[0].trait
             #self.pages[trait].extract_packages()
             self.select_export_path(trait)
         except IndexError:
             dialogs.Message('no trait selected')
         
     elif action == 'extract':
         try:
             trait = self.listbox.get_selected_data()[0].trait
             self.pages[trait].extract_packages()
         except IndexError:
             dialogs.Message('no trait selected')
コード例 #17
0
ファイル: base.py プロジェクト: pombredanne/paella-svn
 def pkey_insert_ok(self, *args):
     dialog = self.dialogs['insert']
     value = dialog.get()
     print value
     try:
         self.main.insert(data={self.pkey: value})
         inserted = True
     except OperationalError:
         dialogs.Message('bad query\n%s is not allowed' % value)
     if inserted:
         self.destroy_dialog(dialog)
         self.reset_rows()
コード例 #18
0
 def create_trait(self, button):
     name = button.get_name()
     debug(name)
     if name == 'create':
         trait = self.dialogs[name].get()
         try:
             self.browser.trait.create_trait(trait)
         except ExistsError:
             dialogs.Message('trait %s already exists' % trait)
             self.browser.traits.insert(data=insert_data)
         self.destroy_dialog(self.dialogs['create'])
         self.browser.reset_rows()
コード例 #19
0
ファイル: template.py プロジェクト: pombredanne/paella-svn
 def insert_new_template(self, package, template, path):
     newfile = readfile(path)
     filename = self.template_filename(package, template)
     makepaths(dirname(filename))
     writefile(filename, newfile)
     try:
         self.traittemplate.insert_template(
             dict(package=package, template=template), file(path))
     except OperationalError:
         dialogs.Message('template already exists')
     self.set_template(package, template)
     self.reset_rows()
コード例 #20
0
ファイル: debconf.py プロジェクト: pombredanne/paella-svn
 def modify_trait(self, menuitem, action):
     try:
         trait = self.listbox.get_selected_data()[0].trait
     except IndexError:
         dialogs.Message('no trait selected')
         raise IndexError
     if action == 'getconfig':
         self.select_configdat(action='getconfig')
     elif action == 'getfromtar':
         self.select_configdat(action='getfromtar')
     elif action == 'update':
         print 'update'
     elif action == 'delete':
         print 'delete'
コード例 #21
0
ファイル: template.py プロジェクト: pombredanne/paella-svn
 def fileselect_ok(self, button, filesel):
     path = filesel.get_filename()
     action = filesel.get_data('action')
     filesel.destroy()
     if action == 'new':
         template, package = get_file_path(path, self.trait_temp_path())
         if template not in self.templates:
             self.insert_new_template(package, template, path)
         else:
             dialogs.Message('template already exists')
     elif action == 'diff':
         pass
     elif action == 'load':
         self.load_template(path)
コード例 #22
0
ファイル: base.py プロジェクト: pombredanne/paella-svn
 def _connect(self, dbname):
     if self.connections.has_key(dbname):
         dialogs.Message('connection already exists for %s' % dbname)
     else:
         conn = BaseConnection(user=self._dbuser,
                               host=self._dbhost,
                               dbname=dbname,
                               passwd=self._dbpasswd)
         self.connections[dbname] = conn
         cursor = StatementCursor(self.connections[dbname])
         rows = cursor.tables()
         tables = ScrollCList(rcmenu=self.table_edit_menu)
         tables.set_rows(rows, columns=['table'])
         self.append_page(tables, dbname)
         self.set_current_page(dbname)
コード例 #23
0
 def toolbar_button_pressed(self, button, data):
     if data == 'machines':
         MachinesWin(self.conn)
     elif data == 'filesystems':
         FsWin(self.conn)
     elif data == 'machine types':
         #dialogs.Message('not ready yet')
         MachineTypesWin(self.conn)
     elif data == 'disks':
         DiskWin(self.conn)
     elif data == 'mounts':
         MountsWin(self.conn)
     elif data == 'kernels':
         KernelsWin(self.conn)
     else:
         dialogs.Message('unhandled command %s' % data)
コード例 #24
0
 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)
コード例 #25
0
 def modify_trait(self, menuitem, action):
     parent = menuitem.get_parent()
     command = parent.get_name()
     rows = self.get_selected_data()
     if len(rows):
         trait = rows[0].trait
         print action, trait
         if command == 'edit':
             if action not in self.pages[trait].pages:
                 self.pages[trait].new_script(action)
             else:
                 self.pages[trait].edit_script(None, action, None)
         elif command == 'diff':
             print 'diff', action
             AllScriptsDialog('which script?', self.conn, self.suite)
         
     else:
         dialogs.Message('select a trait first')
コード例 #26
0
 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)
     else:
         dialogs.Message('bad command %s' % data)
コード例 #27
0
ファイル: base.py プロジェクト: pombredanne/paella-svn
    def relmenu_command_selected(self, button, *data):
        command = button.get_name()
        dialog = self.dialogs[command]
        items = dialog.items()
        if command == 'insert':
            self.rel.insert(data=dict(items))
        elif command == 'delete':
            print 'delete delete delete delete'
            clause = SimpleClause(items, '=', 'and')
            dialogs.Message(self.rel.stmt.delete(clause=clause))

        if False:
            dialog = self.dialogs['insert']
            print dialog
            items = dialog.items()
            print items
            self.rel.insert(data=dict(items))
            self.destroy_dialog(dialog)
            self.reset_rows()
コード例 #28
0
ファイル: management.py プロジェクト: pombredanne/paella-svn
    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)
            elif name == 'traitmanager':
                self.workspace['traitmanager'] = TraitManagerWin(self.conn)
            elif name == 'machines':
                self.workspace['machines'] = MainMachineWin(self.conn)

            else:
                raise Error, 'bad edit_command'
コード例 #29
0
ファイル: template.py プロジェクト: pombredanne/paella-svn
 def save_template(self):
     template_path = 'in database'
     package, template = self.package, self.template
     data = strfile(self.workspace.get_text())
     self.traittemplate.save_template(package, template, data)
     dialogs.Message('saved %s in\n%s' % (template, template_path))
コード例 #30
0
ファイル: template.py プロジェクト: pombredanne/paella-svn
 def edit_template(self):
     try:
         template = self.get_selected_data()[0].template
         self.pages[template].edit_template()
     except IndexError:
         dialogs.Message('a template must be selected')