Issue 4652: Lost tasks on sprint view

remotes/origin/issue/4795/notification_even_they_are_disabled
Alejandro Alonso 2016-10-18 08:41:31 +02:00 committed by David Barragán Merino
parent 6483108a49
commit 15b9fb5f53
2 changed files with 16 additions and 5 deletions

View File

@ -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 connect_userstories_signals
from taiga.projects.userstories.apps import disconnect_userstories_signals from taiga.projects.userstories.apps import disconnect_userstories_signals
from taiga.events import events 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.votes.utils import attach_total_voters_to_queryset
from taiga.projects.notifications.utils import attach_watchers_to_queryset from taiga.projects.notifications.utils import attach_watchers_to_queryset
from . import models from . import models
##################################################### #####################################################
# Bulk actions # 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_milestones, "milestone_id", model=models.UserStory)
db.update_attr_in_bulk_for_ids(us_orders, "sprint_order", 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 return us_orders

View File

@ -317,7 +317,10 @@ def test_api_update_milestone_in_bulk(client):
f.MembershipFactory.create(project=project, user=project.owner, is_admin=True) f.MembershipFactory.create(project=project, user=project.owner, is_admin=True)
milestone = f.MilestoneFactory.create(project=project) milestone = f.MilestoneFactory.create(project=project)
us1 = f.create_userstory(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) 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) us3 = f.create_userstory(project=project, milestone=milestone, sprint_order=1)
us4 = f.create_userstory(project=project, milestone=milestone, sprint_order=2) 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)) response = client.json.post(url, json.dumps(data))
assert response.status_code == 204, response.data assert response.status_code == 204, response.data
assert project.milestones.get(id=milestone.id).user_stories.count() == 4 assert project.milestones.get(id=milestone.id).user_stories.count() == 4
assert list(project.milestones.get(id=milestone.id).\
user_stories.\ uss_list = list(project.milestones.get(id=milestone.id).user_stories.order_by("sprint_order")
order_by("sprint_order").\ .values_list("id", "sprint_order"))
values_list("id", "sprint_order")) == [(us3.id, 1), (us1.id, 2), (us2.id,3), (us4.id,4)] 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): def test_api_update_milestone_in_bulk_invalid_milestone(client):