From 46bee235bf66dd2e9a2fd2e217f77f71085aa10f Mon Sep 17 00:00:00 2001
From: Fredrik Jonsson <frjo@xdeb.org>
Date: Tue, 2 May 2023 14:20:28 +0200
Subject: [PATCH] Use UserQuerySet in get_compliance_email() to exclude
 inactive users. (#3373)

Fixes #3372
---
 hypha/apply/activity/adapters/utils.py | 6 +++---
 hypha/apply/users/models.py            | 8 ++++----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/hypha/apply/activity/adapters/utils.py b/hypha/apply/activity/adapters/utils.py
index 1b9437638..70c544024 100644
--- a/hypha/apply/activity/adapters/utils.py
+++ b/hypha/apply/activity/adapters/utils.py
@@ -61,7 +61,7 @@ def get_compliance_email(target_user_gps=None):
             target_user_emails.extend([project_settings.contracting_gp_email])
         else:
             contracting_users_email = []
-            for user in User.objects.filter(groups__name=CONTRACTING_GROUP_NAME):
+            for user in User.objects.contracting():
                 contracting_users_email.append(user.email)
             target_user_emails.extend(contracting_users_email)
     if FINANCE_GROUP_NAME in target_user_gps:
@@ -69,7 +69,7 @@ def get_compliance_email(target_user_gps=None):
             target_user_emails.extend([project_settings.finance_gp_email])
         else:
             finance_users_email = []
-            for user in User.objects.filter(groups__name=FINANCE_GROUP_NAME):
+            for user in User.objects.finances():
                 finance_users_email.append(user.email)
             target_user_emails.extend(finance_users_email)
     if STAFF_GROUP_NAME in target_user_gps:
@@ -77,7 +77,7 @@ def get_compliance_email(target_user_gps=None):
             target_user_emails.extend([project_settings.staff_gp_email])
         else:
             staff_users_email = []
-            for user in User.objects.filter(groups__name=STAFF_GROUP_NAME):
+            for user in User.objects.staff():
                 staff_users_email.append(user.email)
             target_user_emails.extend(staff_users_email)
     return target_user_emails
diff --git a/hypha/apply/users/models.py b/hypha/apply/users/models.py
index 03c876ed1..53de8e2b1 100644
--- a/hypha/apply/users/models.py
+++ b/hypha/apply/users/models.py
@@ -3,7 +3,6 @@ from django.contrib.auth.hashers import make_password
 from django.contrib.auth.models import AbstractUser, BaseUserManager, Group
 from django.core import exceptions
 from django.db import IntegrityError, models
-from django.db.models import Q
 from django.db.models.constants import LOOKUP_SEP
 from django.db.models.utils import resolve_callables
 from django.urls import reverse
@@ -29,9 +28,7 @@ from .utils import get_user_by_email, is_user_already_registered, send_activatio
 
 class UserQuerySet(models.QuerySet):
     def staff(self):
-        return self.filter(
-            Q(groups__name=STAFF_GROUP_NAME, is_active=True) | Q(is_superuser=True, is_active=True)
-        ).distinct()
+        return self.filter(groups__name=STAFF_GROUP_NAME, is_active=True)
 
     def staff_admin(self):
         return self.filter(groups__name=TEAMADMIN_GROUP_NAME, is_active=True)
@@ -51,6 +48,9 @@ class UserQuerySet(models.QuerySet):
     def approvers(self):
         return self.filter(groups__name=APPROVER_GROUP_NAME, is_active=True)
 
+    def finances(self):
+        return self.filter(groups__name=FINANCE_GROUP_NAME, is_active=True)
+
     def finances_level_1(self):
         return self.filter(groups__name=FINANCE_GROUP_NAME, is_active=True).exclude(groups__name=APPROVER_GROUP_NAME)
 
-- 
GitLab