Пример #1
0
class TroubleManagerWidget(BaseManagerWidget):
    def __init__(self, app, parent, *args):
        BaseManagerWidget.__init__(self, app, parent, TroubleView, 'TroubleManager')
        self.setCaption('TroubleManager')
        self.manager = TroubleManager(self.app)
        self.refreshlistView()
        self.dialogs = {}
        print 'trouble app', app, self.app
        self.resize(400, 600)
        
    def initActions(self):
        collection = self.actionCollection()
        self.newAction = KStdAction.openNew(self.slotNew, collection)
        self.quitAction = KStdAction.quit(self.close, collection)
        
    def initMenus(self):
        menu = KPopupMenu(self)
        self.newAction.plug(menu)
        self.quitAction.plug(menu)
        self.menuBar().insertItem('&Main', menu)
        self.menuBar().insertItem('&Help', self.helpMenu(''))

    def initlistView(self):
        self.listView.setRootIsDecorated(True)
        self.listView.addColumn('trouble group')


    def initToolbar(self):
        toolbar = self.toolBar()
        actions = [self.newAction, self.quitAction]
        for action in actions:
            action.plug(toolbar)
            
    def refreshlistView(self):
        self.listView.clear()
        all = KListViewItem(self.listView, 'all')
        status = KListViewItem(self.listView, 'status')
        rows = self.db.select(table='trouble_status')
        for row in rows:
            s = KListViewItem(status, row.status)
            s.status = row.status
        client = KListViewItem(self.listView, 'client')
        sel = self.db.stmt.select(fields=['clientid'], table='troubles',
                             clause=Neq('status', 'done'))
        clause = In('clientid', sel)
        rows = self.db.select(fields=['clientid', 'client'], table='clients',
                              clause=clause)
        for row in rows:
            c = KListViewItem(client, row.client)
            c.clientid = row.clientid
        magnet = KListViewItem(self.listView, 'magnet')
        for m in self.manager.getUsedMagnets():
            item = KListViewItem(magnet, m)
            item.magnet = m
        untouched = KListViewItem(self.listView, 'untouched')
        statreport = KListViewItem(self.listView, 'status report')
        
    def slotNew(self, title='', data=''):
        dlg = TroubleDialog(self)
        dlg.titleEdit.setText(title)
        dlg.dataEdit.setText(data)
        self.connect(dlg, SIGNAL('okClicked()'), self.create_ticket)
        self.dialogs['new-trouble'] = dlg

    def create_trouble(self):
        dlg = self.dialogs['new-trouble']
        title = str(dlg.titleEdit.text())
        data = str(dlg.dataEdit.text())
        if data and title:
            self.manager.create_ticket(title, data)
            self.refreshlistView()
        elif title:
            KMessageBox.error(self, "just a title won't do.")
            self.slotNew(title=title)
        elif data:
            KMessageBox.error(self, "You also need a title.")
            self.slotNew(data=data)
        else:
            KMessageBox.information(self, 'Nothing Done.')
        
            
    def selectionChanged(self):
        current = self.listView.currentItem()
        print current
        if hasattr(current, 'troubleid'):
            self.view.setID(current.troubleid)
        elif hasattr(current, 'clientid'):
            clientid = current.clientid
            self.view.setID(clause=Eq('clientid', clientid))
        elif hasattr(current, 'status'):
            self.view.setID(clause=Eq('status', current.status))
        elif hasattr(current, 'magnet'):
            troubleid = self.manager.getTroubleIdByMagnet(current.magnet)
            self.view.setID(clause=Eq('troubleid', troubleid))
        elif str(current.text(0)) == 'all':
            self.view.setID(None)
        elif str(current.text(0)) == 'untouched':
            print 'hey hey hey, untouched'
            self.view.setID(clause=Eq('status', 'untouched'))
        elif str(current.text(0)) == 'status report':
            self.view.showStatusReport()