Skip to content

Commit 5c044d3

Browse files
committed
Moved usage of marshmallow in business layer of task update up into the API
1 parent dc3022c commit 5c044d3

File tree

3 files changed

+37
-36
lines changed

3 files changed

+37
-36
lines changed

source/app/blueprints/rest/case/case_tasks_routes.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -150,18 +150,29 @@ def deprecated_case_task_view(cur_id: int, caseid: int):
150150
@ac_requires_case_identifier(CaseAccessLevel.full_access)
151151
@ac_api_requires()
152152
def deprecated_case_edit_task(cur_id: int, caseid: int):
153+
task_schema = CaseTaskSchema()
153154
try:
154155
task = get_task(task_id=cur_id)
155156
if not task:
156157
return response_error(msg='Invalid task ID for this case')
157158

158-
task = tasks_update(task, request.get_json())
159-
task_schema = CaseTaskSchema()
159+
case_identifier = task.task_case_id
160+
request_data = call_deprecated_on_preload_modules_hook('task_update', request.get_json(), case_identifier)
160161

161-
return response_success(msg='Task updated', data=task_schema.dump(task))
162+
if 'task_assignee_id' in request_data or 'task_assignees_id' not in request_data:
163+
return response_error('task_assignee_id is not valid anymore since v1.5.0')
164+
165+
task_assignee_list = request_data['task_assignees_id']
166+
del request_data['task_assignees_id']
167+
168+
request_data['id'] = task.id
169+
task = task_schema.load(request_data, instance=task)
170+
171+
task = tasks_update(task, task_assignee_list)
162172

173+
return response_success(msg='Task updated', data=task_schema.dump(task))
163174
except ValidationError as e:
164-
return response_error(msg='Data error', data=e.messages)
175+
return response_error('Data error', data=e.messages)
165176

166177

167178
@case_tasks_rest_blueprint.route('/case/tasks/delete/<int:cur_id>', methods=['POST'])
@@ -174,7 +185,7 @@ def deprecated_case_delete_task(cur_id: int, caseid: int):
174185
tasks_delete(task)
175186
return response_success('Task deleted')
176187
except BusinessProcessingError as e:
177-
return response_error(msg=e.get_message(), data=e.get_data())
188+
return response_error(e.get_message(), data=e.get_data())
178189

179190

180191
@case_tasks_rest_blueprint.route('/case/tasks/<int:cur_id>/comments/list', methods=['GET'])

source/app/blueprints/rest/v2/case_routes/tasks.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,25 @@ def update(self, case_identifier, identifier):
108108
[CaseAccessLevel.read_only, CaseAccessLevel.full_access]):
109109
return ac_api_return_access_denied(caseid=task.task_case_id)
110110

111-
task = tasks_update(task, request.get_json())
111+
case_identifier = task.task_case_id
112+
request_data = call_deprecated_on_preload_modules_hook('task_update', request.get_json(), case_identifier)
113+
114+
if 'task_assignee_id' in request_data or 'task_assignees_id' not in request_data:
115+
return response_api_error('task_assignee_id is not valid anymore since v1.5.0')
116+
117+
task_assignee_list = request_data['task_assignees_id']
118+
del request_data['task_assignees_id']
119+
120+
request_data['id'] = task.id
121+
task = self._schema.load(request_data, instance=task)
122+
123+
task = tasks_update(task, task_assignee_list)
112124

113125
result = self._schema.dump(task)
114126
return response_api_success(result)
127+
128+
except ValidationError as e:
129+
return response_api_error('Data error', data=e.messages)
115130
except ObjectNotFoundError:
116131
return response_api_not_found()
117132
except BusinessProcessingError as e:

source/app/business/tasks.py

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -32,19 +32,8 @@
3232
from app.iris_engine.utils.tracker import track_activity
3333
from app.models.models import CaseTasks
3434
from app.models.pagination_parameters import PaginationParameters
35-
from app.schema.marshables import CaseTaskSchema
3635
from app.business.errors import BusinessProcessingError
3736
from app.business.errors import ObjectNotFoundError
38-
from marshmallow.exceptions import ValidationError
39-
from app.iris_engine.module_handler.module_handler import call_deprecated_on_preload_modules_hook
40-
41-
42-
def _load(request_data, **kwargs):
43-
try:
44-
add_task_schema = CaseTaskSchema()
45-
return add_task_schema.load(request_data, **kwargs)
46-
except ValidationError as e:
47-
raise BusinessProcessingError('Data error', e.messages)
4837

4938

5039
def tasks_delete(task: CaseTasks):
@@ -83,32 +72,18 @@ def tasks_filter(case_identifier, pagination_parameters: PaginationParameters) -
8372
return get_filtered_tasks(case_identifier, pagination_parameters)
8473

8574

86-
def tasks_update(task: CaseTasks, request_json):
87-
case_identifier = task.task_case_id
88-
request_data = call_deprecated_on_preload_modules_hook('task_update', request_json, case_identifier)
89-
90-
if 'task_assignee_id' in request_data or 'task_assignees_id' not in request_data:
91-
raise BusinessProcessingError('task_assignee_id is not valid anymore since v1.5.0')
92-
93-
task_assignee_list = request_data['task_assignees_id']
94-
del request_data['task_assignees_id']
95-
96-
request_data['id'] = task.id
97-
task = _load(request_data, instance=task)
98-
75+
def tasks_update(task: CaseTasks, task_assignee_list):
9976
task.task_userid_update = iris_current_user.id
10077
task.task_last_update = datetime.utcnow()
10178

102-
update_task_assignees(task.id, task_assignee_list, case_identifier)
103-
104-
update_tasks_state(caseid=case_identifier)
79+
update_task_assignees(task.id, task_assignee_list, task.task_case_id)
80+
update_tasks_state(task.task_case_id)
10581

10682
db.session.commit()
10783

108-
task = call_modules_hook('on_postload_task_update', data=task, caseid=case_identifier)
109-
84+
task = call_modules_hook('on_postload_task_update', data=task, caseid=task.task_case_id)
11085
if not task:
11186
raise BusinessProcessingError('Unable to update task for internal reasons')
11287

113-
track_activity(f'updated task "{task.task_title}" (status {task.status.status_name})', caseid=case_identifier)
88+
track_activity(f'updated task "{task.task_title}" (status {task.status.status_name})', caseid=task.task_case_id)
11489
return task

0 commit comments

Comments
 (0)