From 41ddb37e01c9996a4fb4f90fbe7ed1622eaa4208 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Wed, 3 Nov 2021 18:28:47 +0000 Subject: [PATCH 1/2] 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(): From dd0e1496e6f88d7262e2d51d7c52dbf3e2b1611f Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Thu, 4 Nov 2021 19:30:26 +0000 Subject: [PATCH 2/2] Adjust when we truncate search results. Commit ready for merge. - Legacy-Id: 19552 --- ietf/doc/utils_search.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ietf/doc/utils_search.py b/ietf/doc/utils_search.py index 87293f60f..694c007af 100644 --- a/ietf/doc/utils_search.py +++ b/ietf/doc/utils_search.py @@ -151,16 +151,16 @@ def prepare_document_table(request, docs, query=None, max_results=200): displaying a full table of information about the documents, plus dict with information about the columns.""" - if docs.count() > max_results: - docs = docs[:max_results] - if not isinstance(docs, list): # evaluate and fill in attribute results immediately to decrease # the number of queries docs = docs.select_related("ad", "std_level", "intended_std_level", "group", "stream", "shepherd", ) docs = docs.prefetch_related("states__type", "tags", "groupmilestone_set__group", "reviewrequest_set__team", "ad__email_set", "docalias__iprdocrel_set") + docs = docs[:max_results] # <- that is still a queryset, but with a LIMIT now docs = list(docs) + else: + docs = docs[:max_results] fill_in_document_table_attributes(docs) augment_docs_and_user_with_user_info(docs, request.user)