Browse Source

Fix bug when task recipients not saves

devel
bashmak 8 years ago
parent
commit
a34b4f12b2
  1. 24
      taskapp/models.py
  2. 10
      taskapp/views.py

24
taskapp/models.py

@ -98,6 +98,16 @@ class Task(models.Model):
) )
self.save(update_fields=['state']) 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): def get_attachment_fname(self):
return os.path.basename(self.attachment.name) return os.path.basename(self.attachment.name)
@ -121,17 +131,3 @@ class ExtraComment(models.Model):
) )
verbose_name = _('Extra comment') verbose_name = _('Extra comment')
verbose_name_plural = _('Extra comments') 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)

10
taskapp/views.py

@ -3,7 +3,7 @@ from json import dumps
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.http import HttpResponse 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.contrib import messages
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from django.views.generic import ListView, CreateView from django.views.generic import ListView, CreateView
@ -137,15 +137,16 @@ class TaskUpdateView(UpdateView):
def form_valid(self, form): def form_valid(self, form):
try: try:
self.object = form.save(commit=False)
self.object = form.save()
self.object.author = self.request.user 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)) task_id = safe_int(self.kwargs.get('task_id', 0))
if task_id == 0: if task_id == 0:
log_text = _('Task has successfully created') log_text = _('Task has successfully created')
else: else:
log_text = _('Task has changed successfully') log_text = _('Task has changed successfully')
messages.add_message(self.request, messages.SUCCESS, log_text) messages.add_message(self.request, messages.SUCCESS, log_text)
self.object.send_notification()
except MultipleException as e: except MultipleException as e:
for err in e.err_list: for err in e.err_list:
messages.add_message(self.request, messages.WARNING, err) messages.add_message(self.request, messages.WARNING, err)
@ -196,6 +197,7 @@ def task_finish(request, task_id):
try: try:
task = get_object_or_404(Task, id=task_id) task = get_object_or_404(Task, id=task_id)
task.finish(request.user) task.finish(request.user)
task.send_notification()
except MultipleException as errs: except MultipleException as errs:
for err in errs.err_list: for err in errs.err_list:
messages.add_message(request, messages.constants.ERROR, err) messages.add_message(request, messages.constants.ERROR, err)
@ -210,6 +212,7 @@ def task_failed(request, task_id):
try: try:
task = get_object_or_404(Task, id=task_id) task = get_object_or_404(Task, id=task_id)
task.do_fail(request.user) task.do_fail(request.user)
task.send_notification()
except TaskException as e: except TaskException as e:
messages.error(request, e) messages.error(request, e)
return redirect('taskapp:home') return redirect('taskapp:home')
@ -221,6 +224,7 @@ def remind(request, task_id):
try: try:
task = get_object_or_404(Task, id=task_id) task = get_object_or_404(Task, id=task_id)
task.save(update_fields=['state']) task.save(update_fields=['state'])
task.send_notification()
except MultipleException as errs: except MultipleException as errs:
for err in errs.err_list: for err in errs.err_list:
messages.add_message(request, messages.constants.ERROR, err) messages.add_message(request, messages.constants.ERROR, err)

Loading…
Cancel
Save