diff --git a/src/simdb/cli/commands/simulation.py b/src/simdb/cli/commands/simulation.py index d7327c2a..fa3b83a1 100644 --- a/src/simdb/cli/commands/simulation.py +++ b/src/simdb/cli/commands/simulation.py @@ -245,12 +245,13 @@ def simulation_push( if replaces: simulation.set_meta("replaces", replaces) - schemas = api.get_validation_schemas() - try: - for schema in schemas: - Validator(schema, config).validate(simulation) - except ValidationError as err: - raise click.ClickException(f"Simulation does not validate: {err}") from err + if api.get_upload_options().get("auto_validate", True): + schemas = api.get_validation_schemas() + try: + for schema in schemas: + Validator(schema, config).validate(simulation) + except ValidationError as err: + raise click.ClickException(f"Simulation does not validate: {err}") from err api.push_simulation(simulation, out_stream=sys.stdout, add_watcher=add_watcher) diff --git a/src/simdb/remote/apis/__init__.py b/src/simdb/remote/apis/__init__.py index 99c3d4ff..cbab29cb 100644 --- a/src/simdb/remote/apis/__init__.py +++ b/src/simdb/remote/apis/__init__.py @@ -154,12 +154,16 @@ def get(self, user: User): Returns the server-side upload behaviour flags clients should honour when pushing simulations, such as whether files and IMAS data are - copied onto the server. + copied onto the server, and whether the server automatically + validates simulations on push. """ config = current_app.simdb_config options = { "copy_files": config.get_option("server.copy_files", default=True), "copy_ids": config.get_option("server.copy_ids", default=True), + "auto_validate": config.get_option( + "validation.auto_validate", default=False + ), } return jsonify(options)