From 3ead154903514ed3df26e5dfbf5cb7ba28a19305 Mon Sep 17 00:00:00 2001 From: Ruidy Date: Sat, 7 Nov 2020 23:49:51 +0100 Subject: [PATCH] fix multiple assignments --- app/usecases/user/assign_todo_to_user.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/app/usecases/user/assign_todo_to_user.py b/app/usecases/user/assign_todo_to_user.py index 09b8c40..2abdcba 100644 --- a/app/usecases/user/assign_todo_to_user.py +++ b/app/usecases/user/assign_todo_to_user.py @@ -1,8 +1,13 @@ +from app.models import User, Todo from app.repositories.users import add_todo_to_user from app.usecases.todo import read_todo_by_id from app.usecases.user.read_user_by_id import read_user_by_id +def is_already_assigned(user: User, todo: Todo) -> bool: + return any([task == todo for task in user.tasks]) + + def assign_todo_to_user(user_id: str, todo_id: str) -> bool: user, is_success = read_user_by_id(user_id) if not is_success: @@ -12,4 +17,7 @@ def assign_todo_to_user(user_id: str, todo_id: str) -> bool: if not is_success: return False + if is_already_assigned(user, todo): + return False + return add_todo_to_user(todo, user)