Fix Bug #165: Send emails on creation in bulk

remotes/origin/enhancement/email-actions
David Barragán Merino 2014-02-28 13:51:54 +01:00
parent 43cb4851bf
commit 56b9540b79
4 changed files with 16 additions and 8 deletions

View File

@ -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}

View File

@ -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)

View File

@ -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)

View File

@ -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):