This is an automated email from the ASF dual-hosted git repository. jedcunningham pushed a commit to branch v2-2-test in repository https://gitbox.apache.org/repos/asf/airflow.git
commit ba17fa34358971a78493d73f62a5992e65cbbf2f Author: Mark Norman Francis <[email protected]> AuthorDate: Thu Jan 20 08:15:37 2022 +0000 Return to the same place when triggering a DAG (#20955) (cherry picked from commit 928dafe6c495bbf3e03d14473753fce915134a46) --- airflow/www/templates/airflow/dag.html | 4 ++-- tests/www/views/test_views_tasks.py | 24 ++++++++++++++++++++---- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/airflow/www/templates/airflow/dag.html b/airflow/www/templates/airflow/dag.html index a88e3d43..d69f42f 100644 --- a/airflow/www/templates/airflow/dag.html +++ b/airflow/www/templates/airflow/dag.html @@ -148,11 +148,11 @@ <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"> <input type="hidden" name="dag_id" value="{{ dag.dag_id }}"> <input type="hidden" name="unpause" value="True"> - <input type="hidden" name="origin" value="{{ url_for('Airflow.' + dag.default_view, dag_id=dag.dag_id) }}"> + <input type="hidden" name="origin" value="{{ url_for(request.endpoint, dag_id=dag.dag_id) }}"> <button type="submit" class="dropdown-form-btn">Trigger DAG</button> </form> </li> - <li><a href="{{ url_for('Airflow.trigger', dag_id=dag.dag_id, origin=url_for('Airflow.' + dag.default_view, dag_id=dag.dag_id)) }}">Trigger DAG w/ config</a></li> + <li><a href="{{ url_for('Airflow.trigger', dag_id=dag.dag_id, origin=url_for(request.endpoint, dag_id=dag.dag_id)) }}">Trigger DAG w/ config</a></li> </ul> </div> <a href="{{ url_for('Airflow.delete', dag_id=dag.dag_id) }}" title="Delete DAG" class="btn btn-default btn-icon-only{{ ' disabled' if not dag.can_delete }}" diff --git a/tests/www/views/test_views_tasks.py b/tests/www/views/test_views_tasks.py index e4336c5..ed0466e 100644 --- a/tests/www/views/test_views_tasks.py +++ b/tests/www/views/test_views_tasks.py @@ -278,7 +278,7 @@ def test_escape_in_tree_view(app, admin_client, test_str, expected_text): check_content_in_response(expected_text, resp) -def test_dag_details_trigger_origin_tree_view(app, admin_client): +def test_tree_trigger_origin_tree_view(app, admin_client): app.dag_bag.get_dag('test_tree_view').create_dagrun( run_type=DagRunType.SCHEDULED, execution_date=DEFAULT_DATE, @@ -286,14 +286,30 @@ def test_dag_details_trigger_origin_tree_view(app, admin_client): state=State.RUNNING, ) - url = 'dag_details?dag_id=test_tree_view' + url = 'tree?dag_id=test_tree_view' resp = admin_client.get(url, follow_redirects=True) params = {'dag_id': 'test_tree_view', 'origin': '/tree?dag_id=test_tree_view'} href = f"/trigger?{html.escape(urllib.parse.urlencode(params))}" check_content_in_response(href, resp) -def test_dag_details_trigger_origin_graph_view(app, admin_client): +def test_graph_trigger_origin_graph_view(app, admin_client): + app.dag_bag.get_dag('test_tree_view').create_dagrun( + run_type=DagRunType.SCHEDULED, + execution_date=DEFAULT_DATE, + data_interval=(DEFAULT_DATE, DEFAULT_DATE), + start_date=timezone.utcnow(), + state=State.RUNNING, + ) + + url = 'graph?dag_id=test_tree_view' + resp = admin_client.get(url, follow_redirects=True) + params = {'dag_id': 'test_tree_view', 'origin': '/graph?dag_id=test_tree_view'} + href = f"/trigger?{html.escape(urllib.parse.urlencode(params))}" + check_content_in_response(href, resp) + + +def test_dag_details_trigger_origin_dag_details_view(app, admin_client): app.dag_bag.get_dag('test_graph_view').create_dagrun( run_type=DagRunType.SCHEDULED, execution_date=DEFAULT_DATE, @@ -303,7 +319,7 @@ def test_dag_details_trigger_origin_graph_view(app, admin_client): url = 'dag_details?dag_id=test_graph_view' resp = admin_client.get(url, follow_redirects=True) - params = {'dag_id': 'test_graph_view', 'origin': '/graph?dag_id=test_graph_view'} + params = {'dag_id': 'test_graph_view', 'origin': '/dag_details?dag_id=test_graph_view'} href = f"/trigger?{html.escape(urllib.parse.urlencode(params))}" check_content_in_response(href, resp)
