From 41ddb37e01c9996a4fb4f90fbe7ed1622eaa4208 Mon Sep 17 00:00:00 2001
From: Robert Sparks <rjsparks@nostrum.com>
Date: Wed, 3 Nov 2021 18:28:47 +0000
Subject: [PATCH] Adjust dots claim based on 112 Plenary feedback  - Legacy-Id:
 19544

---
 ietf/person/tests.py | 29 ++++++++++++++++++++++++++++-
 ietf/person/utils.py |  8 ++++----
 2 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/ietf/person/tests.py b/ietf/person/tests.py
index 2f6023394..a61cfe487 100644
--- a/ietf/person/tests.py
+++ b/ietf/person/tests.py
@@ -27,7 +27,7 @@ from ietf.person.factories import EmailFactory, PersonFactory, UserFactory
 from ietf.person.models import Person, Alias
 from ietf.person.utils import (merge_persons, determine_merge_order, send_merge_notification,
     handle_users, get_extra_primary, dedupe_aliases, move_related_objects, merge_nominees,
-    handle_reviewer_settings, merge_users)
+    handle_reviewer_settings, merge_users, get_dots)
 from ietf.review.models import ReviewerSettings
 from ietf.utils.test_utils import TestCase, login_testing_unauthorized
 from ietf.utils.mail import outbox, empty_outbox
@@ -373,3 +373,30 @@ class PersonUtilsTests(TestCase):
         self.assertIn(communitylist, target.communitylist_set.all())
         self.assertIn(feedback, target.feedback_set.all())
         self.assertIn(nomination, target.nomination_set.all())
+
+    def test_dots(self):
+        noroles = PersonFactory()
+        self.assertEqual(get_dots(noroles),[])
+        wgchair = RoleFactory(name_id='chair',group__type_id='wg').person
+        self.assertEqual(get_dots(wgchair),['chair'])
+        ad = RoleFactory(name_id='ad',group__acronym='iesg').person
+        self.assertEqual(get_dots(ad),['iesg'])
+        iabmember = RoleFactory(name_id='member',group__acronym='iab').person
+        self.assertEqual(get_dots(iabmember),['iab'])
+        iabchair = RoleFactory(name_id='chair',group__acronym='iab').person
+        RoleFactory(person=iabchair,group__acronym='iab',name_id='member')
+        self.assertEqual(set(get_dots(iabchair)),set(['iab','iesg']))
+        llcboard = RoleFactory(name_id='member',group__acronym='llc-board').person
+        self.assertEqual(get_dots(llcboard),['llc'])
+        ietftrust = RoleFactory(name_id='member',group__acronym='ietf-trust').person
+        self.assertEqual(get_dots(ietftrust),['trust'])
+        ncmember = RoleFactory(group__acronym='nomcom2020',group__type_id='nomcom',name_id='member').person
+        self.assertEqual(get_dots(ncmember),['nomcom'])
+        ncchair = RoleFactory(group__acronym='nomcom2020',group__type_id='nomcom',name_id='chair').person
+        self.assertEqual(get_dots(ncchair),['nomcom'])
+
+
+
+
+       
+
diff --git a/ietf/person/utils.py b/ietf/person/utils.py
index a3c632b8c..54c2f5dbe 100755
--- a/ietf/person/utils.py
+++ b/ietf/person/utils.py
@@ -11,6 +11,7 @@ import syslog
 from django.contrib import admin
 from django.core.cache import cache
 from django.core.exceptions import ObjectDoesNotExist
+from django.db.models import Q
 
 import debug                            # pyflakes:ignore
 
@@ -222,12 +223,11 @@ def get_active_irsg():
 
 def get_dots(person):
         roles = person.role_set.filter(group__state_id__in=('active','bof','proposed'))
-        chair_group_types = ['wg', 'program', 'rg', 'iabasg']
         dots = []
-        if roles.filter(name_id='chair',group__type_id__in=chair_group_types).exists():
+        if roles.filter(group__type_id='wg',name_id='chair').exists():
             dots.append('chair')
-        if roles.filter(group__acronym='iesg',name_id='ad').exists():
-            dots.append('ad')
+        if roles.filter(Q(group__acronym='iesg',name_id='ad')|Q(group__acronym='iab',name_id='chair')).exists():
+            dots.append('iesg')
         if roles.filter(group__acronym='iab',name_id='member').exists():
             dots.append('iab')
         if roles.filter(group__acronym='irsg').exists():