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