def import_csv_data(self): # noqa """Perform import sequence for the block.""" try: for row in self.row_converters_from_csv(): try: ie_status = self.converter.get_job_status() if ie_status and ie_status == \ all_models.ImportExport.STOPPED_STATUS: raise exceptions.ImportStoppedException() row.process_row() except exceptions.ImportStoppedException: raise except ValueError as err: db.session.rollback() msg = err.message or errors.UNEXPECTED_ERROR row.add_error(errors.ERROR_TEMPLATE, message=msg) logger.exception(msg) except Exception: # pylint: disable=broad-except db.session.rollback() row.add_error(errors.UNKNOWN_ERROR) logger.exception(errors.UNEXPECTED_ERROR) self._update_info(row) _app_ctx_stack.top.sqlalchemy_queries = [] except exceptions.ImportStoppedException: raise except Exception: # pylint: disable=broad-except logger.exception(errors.UNEXPECTED_ERROR) finally: db.session.commit_hooks_enable_flag.enable() is_final_commit_required = not (self.converter.dry_run or self.ignore) if is_final_commit_required: db.session.commit()
def handle_import_stop(**kwargs): """Handle import stop""" try: ie_job = import_export.get(kwargs["id2"]) if ie_job.status in ("Analysis", "In Progress", "Blocked"): ie_job.status = "Stopped" ie_job.end_at = datetime.utcnow() # Stop tasks only on non local instance if getattr(settings, "APPENGINE_INSTANCE", "local") != "local": stop_ie_bg_tasks(ie_job) db.session.commit() expire_ie_cache(ie_job) return make_import_export_response(ie_job.log_json()) if ie_job.status == "Stopped": raise models_exceptions.ImportStoppedException() except wzg_exceptions.Forbidden: raise except models_exceptions.ImportStoppedException: raise wzg_exceptions.BadRequest(app_errors.IMPORT_STOPPED_WARNING) except Exception as e: logger.exception(e.message) raise wzg_exceptions.BadRequest( app_errors.INCORRECT_REQUEST_DATA.format(job_type="Import")) # Need to implement a better solution in order to identify specific # errors like here raise wzg_exceptions.BadRequest(app_errors.WRONG_STATUS)