Esempio n. 1
0
 def loadWorkspace(self,workspace):
     workspace = workspace
     data = {
         'desc' : "",
         'user' : "",
         'server': "",
         'password' : "",
         'http_user' : "",
         'http_password' : "",
         'extra_args' : ""
     }
     data.update(self.config[workspace])
     self.current_workspace = GLPIServer(
         workspace,
         data['desc'],
         data['user'],
         data['password'],
         data['server'],
         data['http_user'],
         data['http_password'],
         data['extra_args']
     )
     self.loginWorkspace()
Esempio n. 2
0
class MainWindow(QtGui.QMainWindow):

    def __init__(self,config,parent=None):
        QtGui.QMainWindow.__init__(self,parent)
        loadUi('lib/ui/mainwindow.ui', self)

        self.config = config
        self.packages = []
        self.server_dialog = ServerDialog(parent=self)
        self.packageListWidget = PackageListWidget(parent=self)
        self.packageListWidget.hide()

        self.server_view = PackageViewWidget(parent=self)
        self.server_view.hide()
        self.packageDelegate = PackageDelegate()

        self.servers = []
        self.current_workspace = None
        self.loadWorkspaceMenu()

        self.packagesModel = PackageModel(items = self.packages, server = self.current_workspace)
        self.packagesModel.setCheckable(False)
        self.packageListWidget.packagesView.setModel(self.packagesModel)
        self.setCentralWidget(self.packageListWidget)

        self.packageListWidget.packagesViewServer.setItemDelegate(self.packageDelegate)
        self.packageListWidget.show()
        self.show()


    def loadWorkspaceMenu(self):
        if (len(self.config) > 0):
            #self.servers = [ ServerItem(dict(self.config.items(s))) for s in self.config.sections()]
            self.servers = [ s for s in self.config]
            #self.servers = [ s for s in self.config]
            pprint(self.servers)
        else:
            return

        self.menuLoad.setEnabled(True)
        self.menuLoad.clear()
        self.signalMapper = QtCore.QSignalMapper(self)
        for s in self.servers:
            self.packageListWidget.serverBox.addItem(s)
            action = self.menuLoad.addAction(s,self.signalMapper, QtCore.SLOT('map()'))
            self.signalMapper.setMapping(action,s)
        self.signalMapper.connect(QtCore.SIGNAL('mapped(QString)'), self, QtCore.SLOT('loadWorkspace(QString)'))


    @Slot(bool)
    def on_actionAdd_new_server_triggered(self,checked):
        self.server_dialog.clear()
        connect = self.server_dialog.exec_()
        if connect:
            self.current_workspace = self.server_dialog.workspace
            self.saveConfig()


    @Slot(bool)
    def on_actionSingle_triggered(self, checked):
        self.actionBatch.setChecked(False)
        self.actionSingle.setChecked(True)

        self.actionSelect_All.setEnabled(False)
        self.action_Deselect_All.setEnabled(False)
        self.action_Revert_selection.setEnabled(False)

        if self.packagesModel is not None:
            self.packagesModel.setCheckable(False)


    @Slot(bool)
    def on_actionBatch_triggered(self, checked):
        self.actionBatch.setChecked(True)
        self.actionSingle.setChecked(False)
        self.actionSelect_All.setEnabled(True)
        self.action_Deselect_All.setEnabled(True)
        self.action_Revert_selection.setEnabled(True)
        if self.packagesModel is not None:
            self.packagesModel.setCheckable(True)


    @Slot(bool)
    def on_action_Quit_triggered(self, checked):
        self.close()


    @Slot(bool)
    def on_actionSelect_All_triggered(self, checked):
        selection = self.packageListWidget.packagesView.selectionModel()


    @Slot(bool)
    def on_action_Deselect_All_triggered(self,checked):
        selection = self.packageListWidget.packagesViewServer.selectionModel()
        selection.clearSelection()


    def loadWorkspace(self,workspace):
        workspace = workspace
        data = {
            'desc' : "",
            'user' : "",
            'server': "",
            'password' : "",
            'http_user' : "",
            'http_password' : "",
            'extra_args' : ""
        }
        data.update(self.config[workspace])
        self.current_workspace = GLPIServer(
            workspace,
            data['desc'],
            data['user'],
            data['password'],
            data['server'],
            data['http_user'],
            data['http_password'],
            data['extra_args']
        )
        self.loginWorkspace()


    def loginWorkspace(self):
        if self.current_workspace is not None:
            print("Prepare server_dialog for login")
            self.server_dialog.setupWorkspace(self.current_workspace)
            if not self.server_dialog.tryConnection():
                print("Login Failed")
                connect = self.server_dialog.exec_()
                if connect :
                    self.current_workspace = self.server_dialog.workspace
                    self.saveConfig(update=True)
                else:
                    return
        self.refresh_packages()


    def saveConfig(self,update=False):
        config = self.current_workspace.getConfig()
        if not update:
                self.config[config[0]] = {}

        for k,v in config[1].items():
            pprint( (type(k), type(v)) )
            self.config[config[0]][k]=v

        self.config.write()

        self.loadWorkspaceMenu()


    def refresh_packages(self):
        packages = [ PackageItem(p) for _,p in self.current_workspace.get_package_list().items() ]
        self.packagesModel = PackageModel(packages)
        self.packageListWidget.packagesViewServer.setModel(self.packagesModel)
        self.packageListWidget.packagesViewServer.resizeRowsToContents()