diff --git a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py index c061f2263433634f95ed4087e59f10c4c12c01c4..d2a3e20f1fddbbc679aa5a3f600f6fddc83e3b84 100755 --- a/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py +++ b/SAS/ResourceAssignment/ResourceAssignmentEditor/lib/webservice.py @@ -29,6 +29,7 @@ from optparse import OptionParser from threading import Condition, Lock, current_thread, Thread import _strptime from datetime import datetime +from json import loads as json_loads import time import logging import subprocess @@ -371,11 +372,12 @@ def getTasksByMoMParentGroupId(mom_parent_group_id): def putTask(task_id): if 'Content-Type' in request.headers and \ request.headers['Content-Type'].startswith('application/json'): - updatedTask = json.loads(request.data) - try: - if task_id != updatedTask['id']: - abort(404) + updatedTask = json_loads(request.data) + logger.info('putTask: updatedTask: %s', updatedTask) + + if task_id != int(updatedTask['id']): + abort(404, 'task_id in url is not equal to id in request.data') if 'starttime' in updatedTask: if isProductionEnvironment(): @@ -395,7 +397,6 @@ def putTask(task_id): except ValueError: abort(400, 'timestamp not in iso format: ' + updatedTask['endtime']) - logger.info('putTask: ' + str(updatedTask)) if 'status' in updatedTask: task = radb().getTask(task_id) @@ -433,8 +434,9 @@ def putTask(task_id): curpc.setTaskDataPinned(task['otdb_id'], updatedTask['data_pinned']) return "", 204 - except KeyError: - abort(404) + except Exception as e: + logger.error(e) + abort(404, str(e)) abort(406) @app.route('/rest/tasks/<int:task_id>/cleanup', methods=['DELETE']) @@ -443,7 +445,7 @@ def cleanupTaskData(task_id): delete_params = {} if 'Content-Type' in request.headers and (request.headers['Content-Type'].startswith('application/json') or request.headers['Content-Type'].startswith('text/plain')): - delete_params = json.loads(request.data) + delete_params = json_loads(request.data) task = radb().getTask(task_id)