Add has-closed-milestones to the response headers when upsdate us orders in bulk for sprints

remotes/origin/enhancement/email-actions
David Barragán Merino 2015-08-04 15:01:53 +02:00 committed by Alejandro Alonso
parent 5dbdedd44d
commit d34f47ccff
2 changed files with 49 additions and 2 deletions

View File

@ -226,6 +226,12 @@ class UserStoryViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMi
field=order_field) field=order_field)
services.snapshot_userstories_in_bulk(data["bulk_stories"], request.user) services.snapshot_userstories_in_bulk(data["bulk_stories"], request.user)
if order_field == "sprint_order":
# NOTE: This is useful according to issue #2851 to update sprints column in the
# browser client when move USs from the backlog to an sprint or between sprints.
has_closed_milestones = project.milestones.filter(closed=True).exists()
self.headers["Taiga-Info-Has-Closed-Milestones"] = has_closed_milestones
return response.NoContent() return response.NoContent()
@list_route(methods=["POST"]) @list_route(methods=["POST"])

View File

@ -7,6 +7,7 @@ from django.core.urlresolvers import reverse
from taiga.base.utils import json from taiga.base.utils import json
from taiga.projects.userstories import services, models from taiga.projects.userstories import services, models
from taiga.projects.userstories.serializers import UserStorySerializer
from .. import factories as f from .. import factories as f
@ -107,7 +108,7 @@ def test_api_create_in_bulk_with_status(client):
assert response.data[0]["status"] == project.default_us_status.id assert response.data[0]["status"] == project.default_us_status.id
def test_api_update_backlog_order_in_bulk(client): def test_api_update_orders_in_bulk(client):
project = f.create_project() project = f.create_project()
f.MembershipFactory.create(project=project, user=project.owner, is_owner=True) f.MembershipFactory.create(project=project, user=project.owner, is_owner=True)
us1 = f.create_userstory(project=project) us1 = f.create_userstory(project=project)
@ -133,8 +134,48 @@ def test_api_update_backlog_order_in_bulk(client):
assert response2.status_code == 204, response2.data assert response2.status_code == 204, response2.data
assert response3.status_code == 204, response3.data assert response3.status_code == 204, response3.data
def test_api_update_orders_in_bulk_to_test_extra_headers(client):
project = f.create_project()
f.MembershipFactory.create(project=project, user=project.owner, is_owner=True)
us1 = f.create_userstory(project=project)
us2 = f.create_userstory(project=project)
from taiga.projects.userstories.serializers import UserStorySerializer url1 = reverse("userstories-bulk-update-backlog-order")
url2 = reverse("userstories-bulk-update-kanban-order")
url3 = reverse("userstories-bulk-update-sprint-order")
data = {
"project_id": project.id,
"bulk_stories": [{"us_id": us1.id, "order": 1},
{"us_id": us2.id, "order": 2}]
}
client.login(project.owner)
response1 = client.json.post(url1, json.dumps(data))
response2 = client.json.post(url2, json.dumps(data))
response3 = client.json.post(url3, json.dumps(data))
assert response1.status_code == 204
assert response1.has_header("Taiga-Info-Has-Closed-Milestones") == False
assert response2.status_code == 204
assert response2.has_header("Taiga-Info-Has-Closed-Milestones") == False
assert response3.status_code == 204
assert response3.has_header("Taiga-Info-Has-Closed-Milestones") == True
assert response3["taiga-info-has-closed-milestones"] == "False"
us1.milestone.closed = True
us1.milestone.save()
response1 = client.json.post(url1, json.dumps(data))
response2 = client.json.post(url2, json.dumps(data))
response3 = client.json.post(url3, json.dumps(data))
assert response1.status_code == 204
assert response1.has_header("Taiga-Info-Has-Closed-Milestones") == False
assert response2.status_code == 204
assert response2.has_header("Taiga-Info-Has-Closed-Milestones") == False
assert response3.status_code == 204
assert response3.has_header("Taiga-Info-Has-Closed-Milestones") == True
assert response3["taiga-info-has-closed-milestones"] == "True"
def test_update_userstory_points(client): def test_update_userstory_points(client):