diff --git a/taiga/projects/userstories/api.py b/taiga/projects/userstories/api.py index 91acfe98..94a15cdc 100644 --- a/taiga/projects/userstories/api.py +++ b/taiga/projects/userstories/api.py @@ -85,6 +85,7 @@ class UserStoryViewSet(OCCResourceMixin, HistoryResourceMixin, WatchedResourceMi project = Project.objects.get(id=data["project_id"]) self.check_permissions(request, 'bulk_update_order', project) services.update_userstories_order_in_bulk(data["bulk_stories"]) + services.snapshot_userstories_in_bulk(data["bulk_stories"], request.user) return response.NoContent() diff --git a/taiga/projects/userstories/services.py b/taiga/projects/userstories/services.py index 6b3cc9a8..202e5e92 100644 --- a/taiga/projects/userstories/services.py +++ b/taiga/projects/userstories/services.py @@ -17,6 +17,7 @@ from django.utils import timezone from taiga.base.utils import db, text +from taiga.projects.history.services import take_snapshot from . import models @@ -61,6 +62,15 @@ def update_userstories_order_in_bulk(bulk_data): new_order_values.append({"order": us_data['order']}) db.update_in_bulk_with_ids(user_story_ids, new_order_values, model=models.UserStory) +def snapshot_userstories_in_bulk(bulk_data, user): + user_story_ids = [] + for us_data in bulk_data: + try: + us = models.UserStory.objects.get(pk=us_data['us_id']) + take_snapshot(us, user=user) + except models.UserStory.DoesNotExist: + pass + def calculate_userstory_is_closed(user_story): if user_story.status is None: