diff --git a/airflow/config_templates/config.yml b/airflow/config_templates/config.yml index 238e8a9b01b45..cf1ba9b5608d9 100644 --- a/airflow/config_templates/config.yml +++ b/airflow/config_templates/config.yml @@ -1779,6 +1779,15 @@ webserver: type: string example: "sha256" default: "md5" + show_trigger_form_if_no_params: + description: | + Behavior of the trigger DAG run button for DAGs without params. False to skip and trigger + without displaying a form to add a dag_run.conf, True to always display the form. + The form is displayed always if parameters are defined. + version_added: 2.7.0 + type: boolean + example: ~ + default: "False" email: description: | Configuration email backend and whether to diff --git a/airflow/www/views.py b/airflow/www/views.py index 8bd59ab35c594..697b7674dca36 100644 --- a/airflow/www/views.py +++ b/airflow/www/views.py @@ -2031,6 +2031,7 @@ def trigger(self, dag_id: str, session: Session = NEW_SESSION): form_fields[k]["schema"]["custom_html_form"] ) ui_fields_defined = any("const" not in f["schema"] for f in form_fields.values()) + show_trigger_form_if_no_params = conf.getboolean("webserver", "show_trigger_form_if_no_params") if not dag_orm: flash(f"Cannot find dag {dag_id}") @@ -2057,7 +2058,7 @@ def trigger(self, dag_id: str, session: Session = NEW_SESSION): if isinstance(run_conf, dict) and any(run_conf) } - if request.method == "GET" and ui_fields_defined: + if request.method == "GET" and (ui_fields_defined or show_trigger_form_if_no_params): # Populate conf textarea with conf requests parameter, or dag.params default_conf = "" diff --git a/newsfragments/33351.significant.rst b/newsfragments/33351.significant.rst new file mode 100644 index 0000000000000..d8f91c4c2028f --- /dev/null +++ b/newsfragments/33351.significant.rst @@ -0,0 +1,6 @@ +The trigger UI form is skipped in web UI with 2.7.0 if no parameters are defined in a DAG. + +If you are using ``dag_run.conf`` dictionary and web UI JSON entry to run your DAG you should either: + +* `Add params to your DAG `_ +* Enable the new configuration ``show_trigger_form_if_no_params`` to bring back old behaviour