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:

Reply via email to