This is an automated email from the ASF dual-hosted git repository.
jedcunningham pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 3c08cefdfd Simply json responses (#25518)
3c08cefdfd is described below
commit 3c08cefdfd2e2636a714bb835902f0cb34225563
Author: Jed Cunningham <[email protected]>
AuthorDate: Wed Aug 3 14:25:30 2022 -0700
Simply json responses (#25518)
Our json responses don't need to call jsonify explicitly, as flask will
do it for us. This also moves to returning a tuple to specify the status
code.
---
airflow/www/views.py | 73 ++++++++++++++++------------------------------------
1 file changed, 22 insertions(+), 51 deletions(-)
diff --git a/airflow/www/views.py b/airflow/www/views.py
index f072cc2f91..830af7027a 100644
--- a/airflow/www/views.py
+++ b/airflow/www/views.py
@@ -47,7 +47,6 @@ from flask import (
before_render_template,
flash,
g,
- jsonify,
make_response,
redirect,
render_template,
@@ -1535,11 +1534,7 @@ class Airflow(AirflowBaseView):
if not metadata:
metadata = {}
except json.decoder.JSONDecodeError:
- error_message = "Invalid JSON metadata"
- response = jsonify({"error": error_message})
- response.status_code = 400
-
- return response
+ return {"error": "Invalid JSON metadata"}, 400
# Convert string datetime into actual datetime
try:
@@ -1549,18 +1544,15 @@ class Airflow(AirflowBaseView):
f'Given execution date, {execution_date}, could not be
identified as a date. '
'Example date format: 2015-11-16T14:34:15+00:00'
)
- response = jsonify({'error': error_message})
- response.status_code = 400
-
- return response
+ return {'error': error_message}, 400
task_log_reader = TaskLogReader()
if not task_log_reader.supports_read:
- return jsonify(
- message="Task log handler does not support read logs.",
- error=True,
- metadata={"end_of_log": True},
- )
+ return {
+ "message": "Task log handler does not support read logs.",
+ "error": True,
+ "metadata": {"end_of_log": True},
+ }
ti = (
session.query(models.TaskInstance)
@@ -1569,11 +1561,11 @@ class Airflow(AirflowBaseView):
)
if ti is None:
- return jsonify(
- message="*** Task instance did not exist in the DB\n",
- error=True,
- metadata={"end_of_log": True},
- )
+ return {
+ "message": "*** Task instance did not exist in the DB\n",
+ "error": True,
+ "metadata": {"end_of_log": True},
+ }
try:
dag = get_airflow_app().dag_bag.get_dag(dag_id)
@@ -1583,7 +1575,7 @@ class Airflow(AirflowBaseView):
if response_format == 'json':
logs, metadata = task_log_reader.read_log_chunks(ti,
try_number, metadata)
message = logs[0] if try_number is not None else logs
- return jsonify(message=message, metadata=metadata)
+ return {"message": message, "metadata": metadata}
metadata['download_logs'] = True
attachment_filename = task_log_reader.render_log_filename(ti,
try_number, session=session)
@@ -1596,7 +1588,7 @@ class Airflow(AirflowBaseView):
except AttributeError as e:
error_message = [f"Task log handler does not support read
logs.\n{str(e)}\n"]
metadata['end_of_log'] = True
- return jsonify(message=error_message, error=True,
metadata=metadata)
+ return {"message": error_message, "error": True, "metadata":
metadata}
@expose('/log')
@auth.has_access(
@@ -3521,21 +3513,12 @@ class Airflow(AirflowBaseView):
dag = get_airflow_app().dag_bag.get_dag(dag_id)
if not dag or task_id not in dag.task_ids:
- response = jsonify(
- {
- 'url': None,
- 'error': f"can't find dag {dag} or task_id {task_id}",
- }
- )
- response.status_code = 404
- return response
+ return {'url': None, 'error': f"can't find dag {dag} or task_id
{task_id}"}, 404
task: "AbstractOperator" = dag.get_task(task_id)
link_name = request.args.get('link_name')
if link_name is None:
- response = jsonify({'url': None, 'error': 'Link name not passed'})
- response.status_code = 400
- return response
+ return {'url': None, 'error': 'Link name not passed'}, 400
ti = (
session.query(TaskInstance)
@@ -3544,23 +3527,15 @@ class Airflow(AirflowBaseView):
.first()
)
if not ti:
- response = jsonify({'url': None, 'error': 'Task Instances not
found'})
- response.status_code = 404
- return response
+ return {'url': None, 'error': 'Task Instances not found'}, 404
try:
url = task.get_extra_links(ti, link_name)
except ValueError as err:
- response = jsonify({'url': None, 'error': str(err)})
- response.status_code = 404
- return response
+ return {'url': None, 'error': str(err)}, 404
if url:
- response = jsonify({'error': None, 'url': url})
- response.status_code = 200
- return response
+ return {'error': None, 'url': url}
else:
- response = jsonify({'url': None, 'error': f'No URL found for
{link_name}'})
- response.status_code = 404
- return response
+ return {'url': None, 'error': f'No URL found for {link_name}'}, 404
@expose('/object/task_instances')
@auth.has_access(
@@ -3579,9 +3554,7 @@ class Airflow(AirflowBaseView):
if dttm:
dttm = _safe_parse_datetime(dttm)
else:
- response = jsonify({'error': f"Invalid execution_date {dttm}"})
- response.status_code = 400
- return response
+ return {'error': f"Invalid execution_date {dttm}"}, 400
with create_session() as session:
task_instances = {
@@ -3604,9 +3577,7 @@ class Airflow(AirflowBaseView):
dag = get_airflow_app().dag_bag.get_dag(dag_id)
if not dag:
- response = jsonify({'error': f"can't find dag {dag_id}"})
- response.status_code = 404
- return response
+ return {'error': f"can't find dag {dag_id}"}, 404
root = request.args.get('root')
if root: