From 4837a11ece2b636aa7bc331814e4a8dfceb3ed82 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Sat, 25 Mar 2017 00:48:19 +0300 Subject: [PATCH] fixbug --- taskapp/models.py | 18 ++++++++++++------ taskapp/views.py | 24 +++++++++++++----------- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/taskapp/models.py b/taskapp/models.py index c58530f..649ad70 100644 --- a/taskapp/models.py +++ b/taskapp/models.py @@ -6,7 +6,8 @@ from django.conf import settings from django.utils import timezone from django.utils.translation import ugettext as _ from abonapp.models import Abon -from .handle import handle as task_handle +from .handle import handle as task_handle, TaskException +from mydefs import MultipleException TASK_PRIORITIES = ( @@ -117,11 +118,17 @@ def task_handler(sender, instance, **kwargs): act_type='e', who=instance.author ) + errors = [] for recipient in instance.recipients.all(): - task_handle( - instance, instance.author, - recipient, group - ) + try: + task_handle( + instance, instance.author, + recipient, group + ) + except TaskException as e: + errors.append(e) + if len(errors) > 0: + raise MultipleException(errors) #def task_delete(sender, instance, **kwargs): @@ -134,4 +141,3 @@ def task_handler(sender, instance, **kwargs): models.signals.post_save.connect(task_handler, sender=Task) #models.signals.post_delete.connect(task_delete, sender=Task) - diff --git a/taskapp/views.py b/taskapp/views.py index aafbf8d..8200cf5 100644 --- a/taskapp/views.py +++ b/taskapp/views.py @@ -6,11 +6,9 @@ from django.contrib import messages from abonapp.models import Abon from django.utils.translation import ugettext as _ from datetime import date -from chatbot.models import TelegramBot from .models import Task -from mydefs import pag_mn, only_admins, safe_int +from mydefs import pag_mn, only_admins, safe_int, MultipleException from .forms import TaskFrm -from .handle import TaskException @login_required @@ -149,12 +147,11 @@ def task_add_edit(request, task_id=0): messages.error(request, _('Error in the form fields')) elif uid: selected_abon = Abon.objects.get(username=str(uid)) - except TelegramBot.DoesNotExist: - messages.error(request, _('Employee has not yet signed up for notifications')) except Abon.DoesNotExist: messages.warning(request, _("User '%s' does not exist") % str(uid)) - except TaskException as e: - messages.error(request, e) + except MultipleException as errs: + for err in errs.err_list: + messages.add_message(request, messages.constants.ERROR, err) return render(request, 'taskapp/add_edit_task.html', { 'form': frm, @@ -169,8 +166,9 @@ def task_finish(request, task_id): try: task = get_object_or_404(Task, id=task_id) task.finish(request.user) - except TaskException as e: - messages.error(request, e) + except MultipleException as errs: + for err in errs.err_list: + messages.add_message(request, messages.constants.ERROR, err) return redirect('taskapp:home') @@ -185,6 +183,10 @@ def task_begin(request, task_id): @login_required @permission_required('taskapp.can_remind') def remind(request, task_id): - task = get_object_or_404(Task, id=task_id) - task.save(update_fields=['state']) + try: + task = get_object_or_404(Task, id=task_id) + task.save(update_fields=['state']) + except MultipleException as errs: + for err in errs.err_list: + messages.add_message(request, messages.constants.ERROR, err) return redirect('taskapp:home')