From 591cd670be284bbf17e4b7a988b4da465d8c7d2b Mon Sep 17 00:00:00 2001 From: Shrikrishna Singh <krishnasingh.ss30@gmail.com> Date: Wed, 9 Feb 2022 13:25:52 +0530 Subject: [PATCH] Fix contractor notification to be only on changes requested by staff or declined --- hypha/apply/activity/messaging.py | 22 ++++++++++++++-------- hypha/apply/api/v1/permissions.py | 1 + hypha/apply/api/v1/projects/views.py | 8 +++++--- hypha/apply/projects/views/project.py | 2 +- hypha/apply/users/models.py | 2 +- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/hypha/apply/activity/messaging.py b/hypha/apply/activity/messaging.py index 485f3f236..2c7e70556 100644 --- a/hypha/apply/activity/messaging.py +++ b/hypha/apply/activity/messaging.py @@ -10,18 +10,19 @@ from django.db import models from django.template.loader import render_to_string from django.utils import timezone from django.utils.translation import gettext as _ + from hypha.apply.projects.models.payment import ( - SUBMITTED, - RESUBMITTED, - CHANGES_REQUESTED_BY_STAFF, - CHANGES_REQUESTED_BY_FINANCE_1, - CHANGES_REQUESTED_BY_FINANCE_2, - APPROVED_BY_STAFF, APPROVED_BY_FINANCE_1, APPROVED_BY_FINANCE_2, - PAID, + APPROVED_BY_STAFF, + CHANGES_REQUESTED_BY_FINANCE_1, + CHANGES_REQUESTED_BY_FINANCE_2, + CHANGES_REQUESTED_BY_STAFF, DECLINED, + RESUBMITTED, + SUBMITTED, ) + from .models import ALL, TEAM from .options import MESSAGES from .tasks import send_mail @@ -530,7 +531,6 @@ class SlackAdapter(AdapterBase): def batch_recipients(self, message_type, sources, **kwargs): # We group the messages by lead - import ipdb; ipdb.set_trace() leads = User.objects.filter(id__in=sources.values('lead')) return [ { @@ -921,6 +921,12 @@ class EmailAdapter(AdapterBase): if message_type in {MESSAGES.REVIEW_REMINDER}: return self.reviewers(source) + if message_type == MESSAGES.UPDATE_INVOICE_STATUS: + related = kwargs.get('related', None) + if related: + if related.status in {CHANGES_REQUESTED_BY_STAFF, DECLINED}: + return [source.user.email] + return [] return [source.user.email] def batch_recipients(self, message_type, sources, **kwargs): diff --git a/hypha/apply/api/v1/permissions.py b/hypha/apply/api/v1/permissions.py index 14fc918bf..ac3fa7f54 100644 --- a/hypha/apply/api/v1/permissions.py +++ b/hypha/apply/api/v1/permissions.py @@ -25,6 +25,7 @@ class IsFinance1User(permissions.BasePermission): def has_object_permission(self, request, view, obj): return request.user.is_finance_level_1 + class IsFinance2User(permissions.BasePermission): def has_permission(self, request, view): return request.user.is_finance_level_2 diff --git a/hypha/apply/api/v1/projects/views.py b/hypha/apply/api/v1/projects/views.py index f011ca790..e2df70ff6 100644 --- a/hypha/apply/api/v1/projects/views.py +++ b/hypha/apply/api/v1/projects/views.py @@ -10,10 +10,12 @@ from hypha.apply.projects.models.project import Deliverable from ..mixin import InvoiceNestedMixin, ProjectNestedMixin from ..permissions import ( - IsApplyStaffUser, IsFinance1User, IsFinance2User, - HasDeliverableEditPermission, HasRequiredChecksPermission + HasDeliverableEditPermission, + HasRequiredChecksPermission, + IsApplyStaffUser, + IsFinance1User, + IsFinance2User, ) - from .serializers import ( DeliverableSerializer, InvoiceDeliverableListSerializer, diff --git a/hypha/apply/projects/views/project.py b/hypha/apply/projects/views/project.py index 9d9175be5..0bc20a25b 100644 --- a/hypha/apply/projects/views/project.py +++ b/hypha/apply/projects/views/project.py @@ -119,7 +119,7 @@ class CreateApprovalView(DelegatedViewMixin, CreateView): source=project, ) - project.send_to_compliance(self.request) + # project.send_to_compliance(self.request) project.is_locked = False project.status = CONTRACTING diff --git a/hypha/apply/users/models.py b/hypha/apply/users/models.py index 4ed489095..f23aeab93 100644 --- a/hypha/apply/users/models.py +++ b/hypha/apply/users/models.py @@ -148,7 +148,7 @@ class User(AbstractUser): @cached_property def is_apply_staff(self): return self.groups.filter(name=STAFF_GROUP_NAME).exists() or self.is_superuser - + @cached_property def is_apply_staff_or_finance(self): return self.is_apply_staff or self.is_finance -- GitLab