diff --git a/taiga/base/notifications/api.py b/taiga/base/notifications/api.py index 8b14dedf..33147889 100644 --- a/taiga/base/notifications/api.py +++ b/taiga/base/notifications/api.py @@ -16,7 +16,9 @@ class NotificationSenderMixin(object): def post_save(self, obj, created=False): super().post_save(obj, created) + self._post_save_notification_sender(obj, created) + def _post_save_notification_sender(self, obj, created=False): users = obj.get_watchers_to_notify(self.request.user) comment = self.request.DATA.get("comment", None) context = {'changer': self.request.user, "comment": comment, 'object': obj} diff --git a/taiga/projects/tasks/api.py b/taiga/projects/tasks/api.py index 7dde4c4b..5ac0897e 100644 --- a/taiga/projects/tasks/api.py +++ b/taiga/projects/tasks/api.py @@ -120,9 +120,11 @@ class TaskViewSet(NotificationSenderMixin, ModelCrudViewSet): tasks = [] for item in items: - tasks.append(models.Task.objects.create(subject=item, project=project, - user_story=us, owner=request.user, - status=project.default_task_status)) - tasks_serialized = self.serializer_class(tasks, many=True) + obj = models.Task.objects.create(subject=item, project=project, + user_story=us, owner=request.user, + status=project.default_task_status) + tasks.append(obj) + self._post_save_notification_sender(obj, True) + tasks_serialized = self.serializer_class(tasks, many=True) return Response(data=tasks_serialized.data) diff --git a/taiga/projects/userstories/api.py b/taiga/projects/userstories/api.py index 3970b7bc..6a18fa79 100644 --- a/taiga/projects/userstories/api.py +++ b/taiga/projects/userstories/api.py @@ -86,7 +86,8 @@ class UserStoryViewSet(NotificationSenderMixin, ModelCrudViewSet): raise exc.PermissionDenied(_("You don't have permisions to create user stories.")) service = services.UserStoriesService() - service.bulk_insert(project, request.user, bulk_stories) + service.bulk_insert(project, request.user, bulk_stories, + callback_on_success=self._post_save_notification_sender) return Response(data=None, status=status.HTTP_204_NO_CONTENT) diff --git a/taiga/projects/userstories/services.py b/taiga/projects/userstories/services.py index 8524cf63..47f0f492 100644 --- a/taiga/projects/userstories/services.py +++ b/taiga/projects/userstories/services.py @@ -4,17 +4,20 @@ from django.db import transaction from django.db import connection from . import models +import reversion class UserStoriesService(object): @transaction.atomic - def bulk_insert(self, project, user, data): + def bulk_insert(self, project, user, data, callback_on_success=None): items = filter(lambda s: len(s) > 0, map(lambda s: s.strip(), data.split("\n"))) for item in items: - models.UserStory.objects.create(subject=item, project=project, owner=user, - status=project.default_us_status) + obj = models.UserStory.objects.create(subject=item, project=project, owner=user, + status=project.default_us_status) + if callback_on_success: + callback_on_success(obj, True) @transaction.atomic def bulk_update_order(self, project, user, data):