From 2ca00398526c26f39353f51fd81c9c53be14988c Mon Sep 17 00:00:00 2001 From: Anler Hp Date: Wed, 30 Jul 2014 11:43:38 +0200 Subject: [PATCH] Fixing commits related to Task #439 --- taiga/projects/tasks/api.py | 9 +++++++-- taiga/projects/userstories/api.py | 9 +++++++-- tests/factories.py | 8 ++++++-- tests/integration/test_tasks.py | 18 ++++++++++++++++++ tests/integration/test_userstories.py | 16 ++++++++++++++++ 5 files changed, 54 insertions(+), 6 deletions(-) diff --git a/taiga/projects/tasks/api.py b/taiga/projects/tasks/api.py index ec9b2673..ff59da5a 100644 --- a/taiga/projects/tasks/api.py +++ b/taiga/projects/tasks/api.py @@ -26,7 +26,7 @@ from taiga.base import exceptions as exc from taiga.base.decorators import list_route from taiga.base.permissions import has_project_perm from taiga.base.api import ModelCrudViewSet -from taiga.projects.models import Project +from taiga.projects.models import Project, TaskStatus from taiga.projects.milestones.models import Milestone from taiga.projects.userstories.models import UserStory @@ -91,10 +91,15 @@ class TaskViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMixin, project = get_object_or_404(Project, id=project_id) user_story = get_object_or_404(UserStory, id=us_id) - status = get_object_or_404(request.DATA.get('statusId', project.default_task_status.id)) self.check_permissions(request, 'bulk_create', project) + status_id = request.DATA.get('statusId', None) + if status_id: + status = get_object_or_404(TaskStatus, id=status_id) + else: + status = project.default_us_status + tasks = services.create_tasks_in_bulk(bulk_tasks, callback=self.post_save, project=project, user_story=user_story, owner=request.user, milestone=milestone, status=status) diff --git a/taiga/projects/userstories/api.py b/taiga/projects/userstories/api.py index 67151500..2027273b 100644 --- a/taiga/projects/userstories/api.py +++ b/taiga/projects/userstories/api.py @@ -33,7 +33,7 @@ from taiga.projects.notifications import WatchedResourceMixin from taiga.projects.history import HistoryResourceMixin from taiga.projects.occ import OCCResourceMixin -from taiga.projects.models import Project +from taiga.projects.models import Project, UserStoryStatus from taiga.projects.history.services import take_snapshot from . import models @@ -77,7 +77,12 @@ class UserStoryViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMi raise exc.BadRequest(_('projectId parameter is mandatory')) project = get_object_or_404(Project, id=project_id) - status = get_object_or_404(request.DATA.get('statusId', project.default_us_status.id)) + + status_id = request.DATA.get('statusId', None) + if status_id: + status = get_object_or_404(UserStoryStatus, id=status_id) + else: + status = project.default_us_status self.check_permissions(request, 'bulk_create', project) diff --git a/tests/factories.py b/tests/factories.py index e20ac308..a53bb766 100644 --- a/tests/factories.py +++ b/tests/factories.py @@ -367,11 +367,12 @@ def create_invitation(**kwargs): def create_userstory(**kwargs): "Create an user story along with its dependencies" - project = kwargs.pop("project", ProjectFactory()) + project = kwargs.pop("project", create_project()) defaults = { "project": project, - "owner": project.owner + "owner": project.owner, + "milestone": MilestoneFactory.create(project=project, owner=project.owner) } defaults.update(kwargs) @@ -388,6 +389,9 @@ def create_project(**kwargs): project.default_severity = SeverityFactory.create(project=project) project.default_priority = PriorityFactory.create(project=project) project.default_issue_type = IssueTypeFactory.create(project=project) + project.default_us_status = UserStoryStatusFactory.create(project=project) + project.default_task_status = TaskStatusFactory.create(project=project) + project.save() return project diff --git a/tests/integration/test_tasks.py b/tests/integration/test_tasks.py index be120f08..998e9f7d 100644 --- a/tests/integration/test_tasks.py +++ b/tests/integration/test_tasks.py @@ -43,3 +43,21 @@ def test_api_update_task_tags(client): response = client.json.patch(url, data) assert response.status_code == 200, response.data + + +def test_api_create_in_bulk_with_status(client): + us = f.create_userstory() + url = reverse("tasks-bulk-create") + data = { + "bulkTasks": "Story #1\nStory #2", + "usId": us.id, + "projectId": us.project.id, + "sprintId": us.milestone.id, + "statusId": us.project.default_task_status.id + } + + client.login(us.owner) + response = client.json.post(url, data) + + assert response.status_code == 200 + assert response.data[0]["status"] == us.project.default_task_status.id diff --git a/tests/integration/test_userstories.py b/tests/integration/test_userstories.py index a127b972..50efcc7c 100644 --- a/tests/integration/test_userstories.py +++ b/tests/integration/test_userstories.py @@ -64,3 +64,19 @@ def test_api_filter_by_subject(client): assert response.status_code == 200 assert number_of_stories == 1, number_of_stories + + +def test_api_create_in_bulk_with_status(client): + project = f.create_project() + url = reverse("userstories-bulk-create") + data = { + "bulkStories": "Story #1\nStory #2", + "projectId": project.id, + "statusId": project.default_us_status.id + } + + client.login(project.owner) + response = client.json.post(url, data) + + assert response.status_code == 200 + assert response.data[0]["status"] == project.default_us_status.id