From 15b9fb5f537cd9aa9b4ff0543800e6f8c832a90d Mon Sep 17 00:00:00 2001 From: Alejandro Alonso Date: Tue, 18 Oct 2016 08:41:31 +0200 Subject: [PATCH] Issue 4652: Lost tasks on sprint view --- taiga/projects/userstories/services.py | 6 +++++- tests/integration/test_userstories.py | 15 +++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/taiga/projects/userstories/services.py b/taiga/projects/userstories/services.py index 2a381eb0..9a94fecd 100644 --- a/taiga/projects/userstories/services.py +++ b/taiga/projects/userstories/services.py @@ -32,12 +32,12 @@ from taiga.projects.services import apply_order_updates from taiga.projects.userstories.apps import connect_userstories_signals from taiga.projects.userstories.apps import disconnect_userstories_signals from taiga.events import events +from taiga.projects.tasks.models import Task from taiga.projects.votes.utils import attach_total_voters_to_queryset from taiga.projects.notifications.utils import attach_watchers_to_queryset from . import models - ##################################################### # Bulk actions ##################################################### @@ -129,6 +129,10 @@ def update_userstories_milestone_in_bulk(bulk_data: list, milestone: object): db.update_attr_in_bulk_for_ids(us_milestones, "milestone_id", model=models.UserStory) db.update_attr_in_bulk_for_ids(us_orders, "sprint_order", models.UserStory) + + # Updating the milestone for the tasks + Task.objects.filter(user_story_id__in=[e["us_id"] for e in bulk_data]).update(milestone=milestone) + return us_orders diff --git a/tests/integration/test_userstories.py b/tests/integration/test_userstories.py index bf6f1b26..daae88a5 100644 --- a/tests/integration/test_userstories.py +++ b/tests/integration/test_userstories.py @@ -317,7 +317,10 @@ def test_api_update_milestone_in_bulk(client): f.MembershipFactory.create(project=project, user=project.owner, is_admin=True) milestone = f.MilestoneFactory.create(project=project) us1 = f.create_userstory(project=project) + t1 = f.create_task(user_story=us1, project=project) + t2 = f.create_task(user_story=us1, project=project) us2 = f.create_userstory(project=project) + t3 = f.create_task(user_story=us2, project=project) us3 = f.create_userstory(project=project, milestone=milestone, sprint_order=1) us4 = f.create_userstory(project=project, milestone=milestone, sprint_order=2) @@ -335,10 +338,14 @@ def test_api_update_milestone_in_bulk(client): response = client.json.post(url, json.dumps(data)) assert response.status_code == 204, response.data assert project.milestones.get(id=milestone.id).user_stories.count() == 4 - assert list(project.milestones.get(id=milestone.id).\ - user_stories.\ - order_by("sprint_order").\ - values_list("id", "sprint_order")) == [(us3.id, 1), (us1.id, 2), (us2.id,3), (us4.id,4)] + + uss_list = list(project.milestones.get(id=milestone.id).user_stories.order_by("sprint_order") + .values_list("id", "sprint_order")) + assert uss_list == [(us3.id, 1), (us1.id, 2), (us2.id,3), (us4.id,4)] + + tasks_list = list(project.milestones.get(id=milestone.id).tasks.order_by("id") + .values_list("id", flat=True)) + assert tasks_list == [t1.id, t2.id, t3.id] def test_api_update_milestone_in_bulk_invalid_milestone(client):