From 0cb423c929253729a87cb190f8751bb120304a7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20Hermida?= Date: Thu, 27 Dec 2018 13:02:54 +0100 Subject: [PATCH] Change approach move us's from sprint to another --- taiga/projects/milestones/api.py | 11 +++++------ taiga/projects/milestones/permissions.py | 3 ++- taiga/projects/milestones/services.py | 10 ++++++++-- taiga/projects/milestones/validators.py | 2 +- 4 files changed, 16 insertions(+), 10 deletions(-) diff --git a/taiga/projects/milestones/api.py b/taiga/projects/milestones/api.py index edda87ff..5493c80c 100644 --- a/taiga/projects/milestones/api.py +++ b/taiga/projects/milestones/api.py @@ -144,9 +144,8 @@ class MilestoneViewSet(HistoryResourceMixin, WatchedResourceMixin, return response.Ok(milestone_stats) - @detail_route(methods=["POST"]) - def bulk_update_items(self, request, pk=None, **kwargs): + def move_userstories_to_sprint(self, request, pk=None, **kwargs): milestone = get_object_or_404(models.Milestone, pk=pk) self.check_permissions(request, "bulk_update_items", milestone) @@ -157,16 +156,16 @@ class MilestoneViewSet(HistoryResourceMixin, WatchedResourceMixin, data = validator.data project = get_object_or_404(Project, pk=data["project_id"]) - milestone = get_object_or_404(models.Milestone, pk=data["sprint_id"]) + milestone_result = get_object_or_404(models.Milestone, pk=data["milestone_id"]) - print('data', validator.bulk_stories) if data["bulk_stories"]: - self.check_permissions(request, "bulk_update_us_milestone", project) - services.update_userstories_milestone_in_bulk(data["bulk_stories"], milestone) + permissions = self.check_permissions(request, "move_uss_to_sprint", project) + services.update_userstories_milestone_in_bulk(data["bulk_stories"], milestone_result) services.snapshot_userstories_in_bulk(data["bulk_stories"], request.user) return response.NoContent() + class MilestoneWatchersViewSet(WatchersViewSetMixin, ModelListViewSet): permission_classes = (permissions.MilestoneWatchersPermission,) resource_model = models.Milestone diff --git a/taiga/projects/milestones/permissions.py b/taiga/projects/milestones/permissions.py index e62d7df6..4010203c 100644 --- a/taiga/projects/milestones/permissions.py +++ b/taiga/projects/milestones/permissions.py @@ -34,7 +34,8 @@ class MilestonePermission(TaigaResourcePermission): watch_perms = IsAuthenticated() & HasProjectPerm('view_milestones') unwatch_perms = IsAuthenticated() & HasProjectPerm('view_milestones') bulk_update_items_perms = HasProjectPerm('modify_milestone') - bulk_update_us_milestone_perms = HasProjectPerm('modify_us') + move_uss_to_sprint_perms = HasProjectPerm('modify_us') + class MilestoneWatchersPermission(TaigaResourcePermission): enought_perms = IsProjectAdmin() | IsSuperUser() diff --git a/taiga/projects/milestones/services.py b/taiga/projects/milestones/services.py index 84084cde..37e47601 100644 --- a/taiga/projects/milestones/services.py +++ b/taiga/projects/milestones/services.py @@ -69,8 +69,14 @@ def update_userstories_milestone_in_bulk(bulk_data: list, milestone: object): content_type="userstories.userstory", projectid=milestone.project.pk) - db.update_attr_in_bulk_for_ids(us_milestones, "milestone_id", - model=UserStory) + us_instance_list = [] + us_values = [] + for us_id in user_story_ids: + us = UserStory.objects.get(pk=us_id) + us_instance_list.append(us) + us_values.append({'milestone_id': milestone.id}) + + db.update_in_bulk(us_instance_list, us_values) db.update_attr_in_bulk_for_ids(us_orders, "sprint_order", UserStory) # Updating the milestone for the tasks diff --git a/taiga/projects/milestones/validators.py b/taiga/projects/milestones/validators.py index 777d42fb..3e90ecf4 100644 --- a/taiga/projects/milestones/validators.py +++ b/taiga/projects/milestones/validators.py @@ -53,7 +53,7 @@ class UpdateMilestoneBulkValidator(MilestoneExistsValidator, ProjectExistsValidator, validators.Validator): project_id = serializers.IntegerField() - sprint_id = serializers.IntegerField() + milestone_id = serializers.IntegerField() bulk_stories = _UserStoryMilestoneBulkValidator(many=True) # def validate_milestone_id(self, attrs, source):