def createScreen(self): self.group = RecordGroup(self.model, context=self.context) self.group.setDomainForEmptyGroup() screen = Screen() screen.setRecordGroup(self.group) screen.setEmbedded(True) if 'form' in self.viewTypes: queue = ViewQueue() queue.setup(self.viewTypes, self.viewIds) type = '' while type != 'form': id, type = next(queue) screen.setupViews(['form'], [id]) else: screen.setupViews(['form'], [False])
def batchButton(self): viewTypes = self.viewTypes viewIds = self.viewIds group = RecordGroup(self.model, context=self.context) group.setDomainForEmptyGroup() group.load(self.screen.selectedIds()) screen = Screen(self) screen.setRecordGroup(self.group) screen.setEmbedded(True) if 'form' in viewTypes: queue = ViewQueue() queue.setup(viewTypes, viewIds) type = '' while type != 'form': ident, type = next(queue) screen.setupViews(['form'], [ident]) else: screen.setupViews(['form'], [False]) from Koo.Fields.Button import ButtonFieldWidget from Koo.Common import Common buttons = {} for key, widget in screen.currentView().widgets.items(): if isinstance(widget, ButtonFieldWidget): buttons[str(widget.button.text())] = widget.name selectionDialog = Common.SelectionDialog( _('Choose action to apply to selected records'), buttons, self) if selectionDialog.exec_() == QDialog.Rejected: return buttonString = selectionDialog.result[0] buttonName = selectionDialog.result[1] if QMessageBox.question( self, _("Batch Update"), _("Do you really want to push button '%s' of all selected records?") % buttonString, QMessageBox.Yes|QMessageBox.No ) == 1: return for ident in self.screen.selectedIds(): screen.display(ident) screen.currentView().widgets[buttonName].executeButton(screen, ident) self.reload()