diff --git a/taskapp/models.py b/taskapp/models.py index b894035..de3aa0c 100644 --- a/taskapp/models.py +++ b/taskapp/models.py @@ -98,6 +98,16 @@ class Task(models.Model): ) self.save(update_fields=['state']) + def send_notification(self): + if self.abon: + group = self.abon.group + else: + group = '' + task_handle( + self, self.author, + self.recipients.all(), group + ) + def get_attachment_fname(self): return os.path.basename(self.attachment.name) @@ -121,17 +131,3 @@ class ExtraComment(models.Model): ) verbose_name = _('Extra comment') verbose_name_plural = _('Extra comments') - - -def task_handler(sender, instance, **kwargs): - if instance.abon: - group = instance.abon.group - else: - group = '' - task_handle( - instance, instance.author, - instance.recipients.all(), group - ) - - -models.signals.post_save.connect(task_handler, sender=Task) diff --git a/taskapp/views.py b/taskapp/views.py index 3e184c3..68d3db0 100644 --- a/taskapp/views.py +++ b/taskapp/views.py @@ -3,7 +3,7 @@ from json import dumps from django.contrib.auth.decorators import login_required from django.core.exceptions import PermissionDenied from django.http import HttpResponse -from django.shortcuts import render, redirect, get_object_or_404, resolve_url +from django.shortcuts import redirect, get_object_or_404, resolve_url from django.contrib import messages from django.utils.decorators import method_decorator from django.views.generic import ListView, CreateView @@ -137,15 +137,16 @@ class TaskUpdateView(UpdateView): def form_valid(self, form): try: - self.object = form.save(commit=False) + self.object = form.save() self.object.author = self.request.user - self.object.save() + self.object.save(update_fields=['author']) task_id = safe_int(self.kwargs.get('task_id', 0)) if task_id == 0: log_text = _('Task has successfully created') else: log_text = _('Task has changed successfully') messages.add_message(self.request, messages.SUCCESS, log_text) + self.object.send_notification() except MultipleException as e: for err in e.err_list: messages.add_message(self.request, messages.WARNING, err) @@ -196,6 +197,7 @@ def task_finish(request, task_id): try: task = get_object_or_404(Task, id=task_id) task.finish(request.user) + task.send_notification() except MultipleException as errs: for err in errs.err_list: messages.add_message(request, messages.constants.ERROR, err) @@ -210,6 +212,7 @@ def task_failed(request, task_id): try: task = get_object_or_404(Task, id=task_id) task.do_fail(request.user) + task.send_notification() except TaskException as e: messages.error(request, e) return redirect('taskapp:home') @@ -221,6 +224,7 @@ def remind(request, task_id): try: task = get_object_or_404(Task, id=task_id) task.save(update_fields=['state']) + task.send_notification() except MultipleException as errs: for err in errs.err_list: messages.add_message(request, messages.constants.ERROR, err)