diff --git a/taiga/importers/asana/api.py b/taiga/importers/asana/api.py index 611eda8b..d92dda55 100644 --- a/taiga/importers/asana/api.py +++ b/taiga/importers/asana/api.py @@ -26,6 +26,7 @@ from taiga.users.gravatar import get_user_gravatar_id from taiga.projects.serializers import ProjectSerializer from taiga.importers import permissions, exceptions +from taiga.importers.services import resolve_users_bindings from .importer import AsanaImporter from . import tasks @@ -89,7 +90,7 @@ class AsanaImporterViewSet(viewsets.ViewSet): "name": request.DATA.get('name', None), "description": request.DATA.get('description', None), "template": request.DATA.get('template', "scrum"), - "users_bindings": request.DATA.get("users_bindings", {}), + "users_bindings": resolve_users_bindings(request.DATA.get("users_bindings", {})), "keep_external_reference": request.DATA.get("keep_external_reference", False), "is_private": request.DATA.get("is_private", False), } diff --git a/taiga/importers/github/api.py b/taiga/importers/github/api.py index e8991c0d..675d7a90 100644 --- a/taiga/importers/github/api.py +++ b/taiga/importers/github/api.py @@ -27,6 +27,7 @@ from taiga.projects.serializers import ProjectSerializer from taiga.importers import permissions from taiga.importers import exceptions +from taiga.importers.services import resolve_users_bindings from .importer import GithubImporter from . import tasks @@ -85,7 +86,7 @@ class GithubImporterViewSet(viewsets.ViewSet): "description": request.DATA.get('description', None), "template": template, "type": items_type, - "users_bindings": request.DATA.get("users_bindings", {}), + "users_bindings": resolve_users_bindings(request.DATA.get("users_bindings", {})), "keep_external_reference": request.DATA.get("keep_external_reference", False), "is_private": request.DATA.get("is_private", False), } diff --git a/taiga/importers/jira/api.py b/taiga/importers/jira/api.py index 47bb6cda..5e0d1de8 100644 --- a/taiga/importers/jira/api.py +++ b/taiga/importers/jira/api.py @@ -25,6 +25,7 @@ from taiga.users.services import get_user_photo_url from taiga.users.gravatar import get_user_gravatar_id from taiga.importers import permissions +from taiga.importers.services import resolve_users_bindings from .normal import JiraNormalImporter from .agile import JiraAgileImporter from . import tasks @@ -107,7 +108,7 @@ class JiraImporterViewSet(viewsets.ViewSet): options = { "name": request.DATA.get('name', None), "description": request.DATA.get('description', None), - "users_bindings": request.DATA.get("user_bindings", {}), + "users_bindings": resolve_users_bindings(request.DATA.get("users_bindings", {})), "keep_external_reference": request.DATA.get("keep_external_reference", False), "is_private": request.DATA.get("is_private", False), } diff --git a/taiga/importers/services.py b/taiga/importers/services.py new file mode 100644 index 00000000..4817c049 --- /dev/null +++ b/taiga/importers/services.py @@ -0,0 +1,16 @@ +from taiga.users.models import User + + +def resolve_users_bindings(users_bindings): + new_users_bindings = {} + for key,value in users_bindings.items(): + if isinstance(value, str): + try: + new_users_bindings[int(key)] = User.objects.get(email_iexact=value) + except User.MultipleObjectsReturned: + new_users_bindings[int(key)] = User.objects.get(email=value) + except User.DoesNotExists: + new_users_bindings[int(key)] = None + else: + new_users_bindings[int(key)] = User.objects.get(id=value) + return new_users_bindings diff --git a/taiga/importers/trello/api.py b/taiga/importers/trello/api.py index 33b9fe40..f616d9b8 100644 --- a/taiga/importers/trello/api.py +++ b/taiga/importers/trello/api.py @@ -29,6 +29,7 @@ from taiga.projects.serializers import ProjectSerializer from .importer import TrelloImporter from taiga.importers import permissions +from taiga.importers.services import resolve_users_bindings from . import tasks @@ -86,7 +87,7 @@ class TrelloImporterViewSet(viewsets.ViewSet): "name": request.DATA.get('name', None), "description": request.DATA.get('description', None), "template": request.DATA.get('template', "kanban"), - "users_bindings": request.DATA.get("users_bindings", {}), + "users_bindings": resolve_users_bindings(request.DATA.get("users_bindings", {})), "keep_external_reference": request.DATA.get("keep_external_reference", False), "is_private": request.DATA.get("is_private", False), }