def process(self): file_md5 = DataSource.compute_md5(filename=self.filename).hexdigest() if not DataSource.datasource_exists_for_participant(filename=self.short_filename, participant=self.importer.participant, md5=file_md5, db_session=self.importer.db.session): self.log_request.emit("Chargement du fichier: '" + self.short_filename + "'", LogTypes.LOGTYPE_INFO) self.results = self.importer.load(self.filename) if self.results is not None: self.log_request.emit('Importation des données...', LogTypes.LOGTYPE_INFO) self.importer.import_to_database(self.results) self.results.clear() # Needed to clear the dict cache and let the garbage collector delete it! # Add datasources for that file for recordset in self.importer.recordsets: if not DataSource.datasource_exists_for_recordset(filename=self.short_filename , recordset=recordset, md5=file_md5, db_session=self.importer.db.session): ds = DataSource() ds.recordset = recordset ds.file_md5 = file_md5 ds.file_name = self.short_filename ds.update_datasource(db_session=self.importer.db.session) self.importer.clear_recordsets() self.log_request.emit('Importation du fichier complétée!', LogTypes.LOGTYPE_DONE) else: self.log_request.emit('Erreur lors du chargement du fichier: ' + self.importer.last_error, LogTypes.LOGTYPE_ERROR) else: self.log_request.emit("Données du fichier '" + self.filename + "' déjà présentes pour '" + self.importer.participant.name + "' - ignorées.", LogTypes.LOGTYPE_WARNING)
def load_data(self): file_md5 = DataSource.compute_md5(filename=self.filename).hexdigest() if not DataSource.datasource_exists_for_participant(filename=self.short_filename, participant=self.importer.participant, md5=file_md5, db_session=self.importer.db.session): self.results = self.importer.load(self.filename) return True return False
def __init__(self, filename, task_size, file_importer): super().__init__(filename, task_size) self.filename = filename self.importer = file_importer self.importer.update_progress.connect(self.update_progress) self.short_filename = DataSource.build_short_filename(self.filename) self.title = self.short_filename