def __init__(self, parts): super(GuiExtractor, self).__init__() self.ui = extractorscreen.Ui_Dialog() self.ui.setupUi(self) self._selectedparts = [] self.ui.label.setText(extrans(u"Select the parts you want to extract")) self._model = QtGui.QStandardItemModel() self.ui.listView.setModel(self._model) self.ui.listView.setFixedSize(300, 400) for p in parts: item = QtGui.QStandardItem('{}'.format(p)) item.setCheckState(QtCore.Qt.Unchecked) item.setCheckable(True) item.setEditable(False) self._model.appendRow(item) self.ui.buttonBox.accepted.connect(self._accept) self.ui.buttonBox.rejected.connect(self.reject) self._checkbox = [] self.setWindowTitle(extrans(u"Data extraction"))
def _accept(self): for ligne in range(self._model.rowCount()): item = self._model.item(ligne) if item.checkState() == QtCore.Qt.Checked: self._selectedparts.append(str(item.text())) if not self._selectedparts: QtGui.QMessageBox.critical( self, extrans(u"Error"), extrans(u"At least one part should be selected for extraction") ) return self._dirout = str(QtGui.QFileDialog.getExistingDirectory( self, extrans(u"Please select the directory in which to extract " u"the data")) ) if not self._dirout: return self.accept()
def _accept(self): for ligne in range(self._model.rowCount()): item = self._model.item(ligne) if item.checkState() == QtCore.Qt.Checked: self._selectedparts.append(str(item.text())) if not self._selectedparts: QtGui.QMessageBox.critical( self, extrans(u"Error"), extrans( u"At least one part should be selected for extraction")) return self._dirout = str( QtGui.QFileDialog.getExistingDirectory( self, extrans(u"Please select the directory in which to extract " u"the data"))) if not self._dirout: return self.accept()
def extractor(): """ Script to extract data from an le2m sqlite file to a csv file :return: """ extractorutil.create_logger() logger = logging.getLogger("extractor") filebase = str(QtGui.QFileDialog.getOpenFileName( None, extrans(u"Please select the sqlite database you want to extract"), "", u"sqlite (*.sqlite)")) if not filebase: if __name__ == "__main__": sys.exit(0) else: return database = sqlite3.connect(filebase) parts = get_parts(database) partslist = get_splittedparts(parts) screen = GuiExtractor(partslist) if not screen.exec_(): if __name__ == "__main__": sys.exit(0) else: return dirout, partsextract = screen.get_extractinfos() partsdata = dict() for p in partsextract: partsdata[p] = get_partdata(database, p) datatemp = partsdata.values() data = pd.DataFrame(datatemp[0]) nbparts = len(datatemp) if nbparts > 1: for i in range(1, nbparts): data = pd.merge(data, datatemp[i], on="joueur") sessions = get_partdata(database, "sessions") base = get_partdata(database, "partie_base") data.to_csv(os.path.join(dirout, "data.csv"), sep=";", encoding="utf-8", na_rep=None, index=False) sessions.to_csv(os.path.join(dirout, "sessions.csv"), sep=";", encoding="utf-8", na_rep=False, index=False) base.to_csv(os.path.join(dirout, "joueurs.csv"), sep=";", encoding="utf-8", na_rep=False, index=False) QtGui.QMessageBox.information( None, extrans(u"Sucess"), extrans(u"Data successfully extracted to {dirout}").format( dirout=dirout)) logger.info(extrans(u"Data successfully extracted to {dirout}").format( dirout=dirout)) # if the function has been launched as a script then exit if __name__ == "__main__": sys.exit(0) else: return
def extractor(): """ Script to extract data from an le2m sqlite file to a csv file. Open a QtDialog. :return: """ extractorutil.create_logger() logger = logging.getLogger("extractor") filebase = str(QtGui.QFileDialog.getOpenFileName( None, extrans(u"Please select the sqlite database you want to extract"), "", u"sqlite (*.sqlite)")) if not filebase: if __name__ == "__main__": sys.exit(0) else: return database = sqlite3.connect(filebase) parts = get_parts(database) partslist = get_splittedparts(parts) screen = GuiExtractor(partslist) if not screen.exec_(): if __name__ == "__main__": sys.exit(0) else: return dirout, partsextract = screen.get_extractinfos() partsdata = dict() for p in partsextract: partsdata[p] = get_partdata(database, p) datatemp = partsdata.values() data = pd.DataFrame(datatemp[0]) nbparts = len(datatemp) if nbparts > 1: for i in range(1, nbparts): data = pd.merge(data, datatemp[i], on=["session", "joueur"]) sessions = get_partdata(database, "sessions") base = get_partdata(database, "partie_base") data.to_csv(os.path.join(dirout, "data.csv"), sep=";", encoding="utf-8", na_rep=None, index=False) sessions.to_csv(os.path.join(dirout, "sessions.csv"), sep=";", encoding="utf-8", na_rep=False, index=False) base.to_csv(os.path.join(dirout, "joueurs.csv"), sep=";", encoding="utf-8", na_rep=False, index=False) QtGui.QMessageBox.information( None, extrans(u"Sucess"), extrans(u"Data successfully extracted to {dirout}").format( dirout=dirout)) logger.info(extrans(u"Data successfully extracted to {dirout}").format( dirout=dirout)) # if the function has been launched as a script then exit if __name__ == "__main__": sys.exit(0) else: return