Merge pull request #422 from taigaio/issue/2851/closed_sprints_problems

Add has-closed-milestones to the response headers when upsdate us orders in bulk for sprints
remotes/origin/enhancement/email-actions
Alejandro 2015-08-25 12:04:07 +02:00
commit 0f91545c16
2 changed files with 49 additions and 2 deletions

View File

@ -226,6 +226,12 @@ class UserStoryViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMi
field=order_field)
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()
@list_route(methods=["POST"])

View File

@ -7,6 +7,7 @@ from django.core.urlresolvers import reverse
from taiga.base.utils import json
from taiga.projects.userstories import services, models
from taiga.projects.userstories.serializers import UserStorySerializer
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
def test_api_update_backlog_order_in_bulk(client):
def test_api_update_orders_in_bulk(client):
project = f.create_project()
f.MembershipFactory.create(project=project, user=project.owner, is_owner=True)
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 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):