From 0d39110c21f812b106416ca4319594ae89a01575 Mon Sep 17 00:00:00 2001 From: Pablo Date: Tue, 19 Apr 2022 10:56:51 -0600 Subject: [PATCH] fix: assignment issues on job detail Now the assignment and users display should display all users as expected. --- .../task/task_template/job_new_or_update.py | 20 ++++++++++--------- .../src/components/dialogs/add_assignee.vue | 9 ++++++++- .../src/components/task/task/task_list.vue | 2 +- shared/database/task/job/job.py | 2 +- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/default/methods/task/task_template/job_new_or_update.py b/default/methods/task/task_template/job_new_or_update.py index 9b30a3cf4..f89fa366e 100644 --- a/default/methods/task/task_template/job_new_or_update.py +++ b/default/methods/task/task_template/job_new_or_update.py @@ -678,15 +678,17 @@ def new_or_update_core(session, job.allow_reviews = allow_reviews job.review_chance = (0 if review_chance == None else review_chance) / 100 - log = job.update_member_list( - member_list_ids = member_list_ids, - session = session, - log = log) - - log = job.update_reviewer_list( - session = session, - reviewer_list_ids = reviewer_list_ids, - log = log) + if member_list_ids is not None: + log = job.update_member_list( + member_list_ids = member_list_ids, + session = session, + log = log) + + if reviewer_list_ids is not None: + log = job.update_reviewer_list( + session = session, + reviewer_list_ids = reviewer_list_ids, + log = log) if default_userscript_id: default_userscript = UserScript.get( diff --git a/frontend/src/components/dialogs/add_assignee.vue b/frontend/src/components/dialogs/add_assignee.vue index 64be3bc52..ac2761a33 100644 --- a/frontend/src/components/dialogs/add_assignee.vue +++ b/frontend/src/components/dialogs/add_assignee.vue @@ -128,7 +128,14 @@ export default Vue.extend({ this.$forceUpdate(); }, on_assign: function() { - this.$emit("assign", this.member_list_ids) + let user_id_list = []; + for (let member_id of this.member_list_ids){ + let user = this.member_list.find(m => m.member_id === member_id); + if(user){ + user_id_list.push(user.id) + } + } + this.$emit("assign", user_id_list) }, on_cancel: function() { this.$emit("close") diff --git a/frontend/src/components/task/task/task_list.vue b/frontend/src/components/task/task/task_list.vue index 353b2db01..19bfe69c4 100644 --- a/frontend/src/components/task/task/task_list.vue +++ b/frontend/src/components/task/task/task_list.vue @@ -719,7 +719,7 @@ export default Vue.extend({ { name: "Archive", value: "archive" }, { name: "Assign annotators", value: 'assign' }, { name: "Remove annotators", value: 'remove' }, - ], + ], task_assign_dialog_open: false, reviewers_list: [], diff --git a/shared/database/task/job/job.py b/shared/database/task/job/job.py index 40e379cc1..b1a2604c9 100644 --- a/shared/database/task/job/job.py +++ b/shared/database/task/job/job.py @@ -316,6 +316,7 @@ def get_reviewers(self, session): return users def get_assignees(self, session): + rels = User_To_Job.list(session = session, job = self, relation = 'annotator') users = [rel.user for rel in rels] return users @@ -491,7 +492,6 @@ def update_member_list( session, log: dict, add_to_session: bool = True): - # TODO feel like this could be a more generic pattern # main id is given a list of ids handle updating the attachments # TODO abstract more functions here...