def __init__(self, parent=None, model=None, collection_getter=None): from camelot.view.controls.editors import NoteEditor super(DataPreviewPage, self).__init__(parent) assert model assert collection_getter self.setTitle(_('Data Preview')) self.setSubTitle(_('Please review the data below.')) self._complete = False self.model = model validator = self.model.get_validator() validator.validity_changed_signal.connect(self.update_complete) model.layoutChanged.connect(self.validate_all_rows) post(validator.validate_all_rows) self.collection_getter = collection_getter icon = 'tango/32x32/mimetypes/x-office-spreadsheet.png' self.setPixmap(QtGui.QWizard.LogoPixmap, Pixmap(icon).getQPixmap()) self.previewtable = One2ManyEditor( admin=model.get_admin(), parent=self, create_inline=True, vertical_header_clickable=False, ) self._note = NoteEditor() self._note.set_value(None) ly = QtGui.QVBoxLayout() ly.addWidget(self.previewtable) ly.addWidget(self._note) self.setLayout(ly) self.setCommitPage(True) self.setButtonText(QtGui.QWizard.CommitButton, _('Import')) self.update_complete()
def __init__(self, parent=None, model=None, collection_getter=None): from camelot.view.controls.editors import NoteEditor super(DataPreviewPage, self).__init__(parent) assert model assert collection_getter self.setTitle(_('Data Preview')) self.setSubTitle(_('Please review the data below.')) self._complete = False self.model = model validator = self.model.get_validator() validator.validity_changed_signal.connect(self.update_complete) model.layoutChanged.connect(self.validate_all_rows) post(validator.validate_all_rows) self.collection_getter = collection_getter icon = 'tango/32x32/mimetypes/x-office-spreadsheet.png' self.setPixmap(QtGui.QWizard.LogoPixmap, Pixmap(icon).getQPixmap()) self.previewtable = One2ManyEditor( admin = model.get_admin(), parent = self, create_inline = True, vertical_header_clickable = False, ) self._note = NoteEditor() self._note.set_value(None) ly = QtGui.QVBoxLayout() ly.addWidget(self.previewtable) ly.addWidget(self._note) self.setLayout(ly) self.setCommitPage(True) self.setButtonText(QtGui.QWizard.CommitButton, _('Import')) self.update_complete()
class DataPreviewPage(QtGui.QWizardPage): """DataPreviewPage is the previewing page for the import wizard""" def __init__(self, parent=None, model=None, collection_getter=None): from camelot.view.controls.editors import NoteEditor super(DataPreviewPage, self).__init__(parent) assert model assert collection_getter self.setTitle(_('Data Preview')) self.setSubTitle(_('Please review the data below.')) self._complete = False self.model = model validator = self.model.get_validator() validator.validity_changed_signal.connect(self.update_complete) model.layoutChanged.connect(self.validate_all_rows) post(validator.validate_all_rows) self.collection_getter = collection_getter icon = 'tango/32x32/mimetypes/x-office-spreadsheet.png' self.setPixmap(QtGui.QWizard.LogoPixmap, Pixmap(icon).getQPixmap()) self.previewtable = One2ManyEditor( admin = model.get_admin(), parent = self, create_inline = True, vertical_header_clickable = False, ) self._note = NoteEditor() self._note.set_value(None) ly = QtGui.QVBoxLayout() ly.addWidget(self.previewtable) ly.addWidget(self._note) self.setLayout(ly) self.setCommitPage(True) self.setButtonText(QtGui.QWizard.CommitButton, _('Import')) self.update_complete() @QtCore.pyqtSlot() def validate_all_rows(self): validator = self.model.get_validator() post(validator.validate_all_rows, self._all_rows_validated) def _all_rows_validated(self, *args): self.update_complete(0) @QtCore.pyqtSlot(int) def update_complete(self, row=0): self._complete = (self.model.get_validator().number_of_invalid_rows()==0) self.completeChanged.emit() if self._complete: self._note.set_value(None) else: self._note.set_value(_( 'Please correct the data above before proceeding with the ' 'import.<br/>Incorrect cells have a pink background.' )) def initializePage(self): """Gets all info needed from SelectFilePage and feeds table""" filename = self.field('datasource').toString() self._complete = False self.completeChanged.emit() self.model.set_collection_getter(self.collection_getter(filename)) self.previewtable.set_value(self.model) self.validate_all_rows() def validatePage(self): answer = QtGui.QMessageBox.question( self, _('Proceed with import'), _('Importing data cannot be undone,\n' 'are you sure you want to continue'), QtGui.QMessageBox.Cancel, QtGui.QMessageBox.Ok, ) if answer == QtGui.QMessageBox.Ok: return True return False def isComplete(self): return self._complete
class DataPreviewPage(QtGui.QWizardPage): """DataPreviewPage is the previewing page for the import wizard""" def __init__(self, parent=None, model=None, collection_getter=None): from camelot.view.controls.editors import NoteEditor super(DataPreviewPage, self).__init__(parent) assert model assert collection_getter self.setTitle(_('Data Preview')) self.setSubTitle(_('Please review the data below.')) self._complete = False self.model = model validator = self.model.get_validator() validator.validity_changed_signal.connect(self.update_complete) model.layoutChanged.connect(self.validate_all_rows) post(validator.validate_all_rows) self.collection_getter = collection_getter icon = 'tango/32x32/mimetypes/x-office-spreadsheet.png' self.setPixmap(QtGui.QWizard.LogoPixmap, Pixmap(icon).getQPixmap()) self.previewtable = One2ManyEditor( admin=model.get_admin(), parent=self, create_inline=True, vertical_header_clickable=False, ) self._note = NoteEditor() self._note.set_value(None) ly = QtGui.QVBoxLayout() ly.addWidget(self.previewtable) ly.addWidget(self._note) self.setLayout(ly) self.setCommitPage(True) self.setButtonText(QtGui.QWizard.CommitButton, _('Import')) self.update_complete() @QtCore.pyqtSlot() def validate_all_rows(self): validator = self.model.get_validator() post(validator.validate_all_rows, self._all_rows_validated) def _all_rows_validated(self, *args): self.update_complete(0) @QtCore.pyqtSlot(int) def update_complete(self, row=0): self._complete = ( self.model.get_validator().number_of_invalid_rows() == 0) self.completeChanged.emit() if self._complete: self._note.set_value(None) else: self._note.set_value( _('Please correct the data above before proceeding with the ' 'import.<br/>Incorrect cells have a pink background.')) def initializePage(self): """Gets all info needed from SelectFilePage and feeds table""" filename = self.field('datasource').toString() self._complete = False self.completeChanged.emit() self.model.set_collection_getter(self.collection_getter(filename)) self.previewtable.set_value(self.model) self.validate_all_rows() def validatePage(self): answer = QtGui.QMessageBox.question( self, _('Proceed with import'), _('Importing data cannot be undone,\n' 'are you sure you want to continue'), QtGui.QMessageBox.Cancel, QtGui.QMessageBox.Ok, ) if answer == QtGui.QMessageBox.Ok: return True return False def isComplete(self): return self._complete