Skip to content

Commit b06e586

Browse files
committed
Merged in [19621] from rjsparks@nostrum.com:
Use rfc8989 for 2022 nomcom eligibility. Fixes ietf-tools#3442. - Legacy-Id: 19639 Note: SVN reference [19621] has been migrated to Git commit 181da11
2 parents 164ee77 + 181da11 commit b06e586

2 files changed

Lines changed: 141 additions & 123 deletions

File tree

ietf/nomcom/tests.py

Lines changed: 139 additions & 121 deletions
Original file line numberDiff line numberDiff line change
@@ -2311,177 +2311,195 @@ class rfc8989EligibilityTests(TestCase):
23112311

23122312
def setUp(self):
23132313
super().setUp()
2314-
self.nomcom = NomComFactory(group__acronym='nomcom2021', populate_personnel=False, first_call_for_volunteers=datetime.date(2021,5,15))
2314+
self.nomcoms = list()
2315+
self.nomcoms.append(NomComFactory(group__acronym='nomcom2021', populate_personnel=False, first_call_for_volunteers=datetime.date(2021,5,15)))
2316+
self.nomcoms.append(NomComFactory(group__acronym='nomcom2022', populate_personnel=False, first_call_for_volunteers=datetime.date(2022,5,15)))
23152317
# make_immutable_test_data makes things this test does not want
23162318
Role.objects.filter(name_id__in=('chair','secr')).delete()
23172319

23182320
def test_elig_by_meetings(self):
23192321

23202322
meetings = [MeetingFactory(number=number, date=date, type_id='ietf') for number,date in [
2323+
('112', datetime.date(2021, 11, 8)),
2324+
('111', datetime.date(2021, 7, 26)),
23212325
('110', datetime.date(2021, 3, 6)),
23222326
('109', datetime.date(2020, 11, 14)),
23232327
('108', datetime.date(2020, 7, 25)),
23242328
('107', datetime.date(2020, 3, 21)),
23252329
('106', datetime.date(2019, 11, 16)),
23262330
]]
23272331

2328-
eligible_people = list()
2329-
ineligible_people = list()
2332+
for nomcom in self.nomcoms:
2333+
eligible_people = list()
2334+
ineligible_people = list()
23302335

2331-
for combo_len in range(0,6):
2332-
for combo in combinations(meetings,combo_len):
2333-
p = PersonFactory()
2334-
for m in combo:
2335-
MeetingRegistrationFactory(person=p, meeting=m)
2336-
if combo_len<3:
2337-
ineligible_people.append(p)
2338-
else:
2339-
eligible_people.append(p)
2336+
prev_five = meetings[2:] if nomcom.group.acronym == 'nomcom2021' else meetings[:5]
2337+
for combo_len in range(0,6):
2338+
for combo in combinations(prev_five,combo_len):
2339+
p = PersonFactory()
2340+
for m in combo:
2341+
MeetingRegistrationFactory(person=p, meeting=m)
2342+
if combo_len<3:
2343+
ineligible_people.append(p)
2344+
else:
2345+
eligible_people.append(p)
23402346

2341-
self.assertEqual(set(eligible_people),set(list_eligible(self.nomcom)))
2347+
self.assertEqual(set(eligible_people),set(list_eligible(nomcom)))
23422348

2343-
for person in eligible_people:
2344-
self.assertTrue(is_eligible(person,self.nomcom))
2349+
for person in eligible_people:
2350+
self.assertTrue(is_eligible(person,nomcom))
2351+
2352+
for person in ineligible_people:
2353+
self.assertFalse(is_eligible(person,nomcom))
2354+
2355+
Person.objects.filter(pk__in=[p.pk for p in eligible_people+ineligible_people]).delete()
23452356

2346-
for person in ineligible_people:
2347-
self.assertFalse(is_eligible(person,self.nomcom))
23482357

23492358
def test_elig_by_office_active_groups(self):
23502359

2351-
before_elig_date = self.nomcom.first_call_for_volunteers - datetime.timedelta(days=5)
2360+
nobody=PersonFactory()
2361+
for nomcom in self.nomcoms:
2362+
before_elig_date = nomcom.first_call_for_volunteers - datetime.timedelta(days=5)
23522363

2353-
chair = RoleFactory(name_id='chair',group__time=before_elig_date).person
2364+
chair = RoleFactory(name_id='chair',group__time=before_elig_date).person
23542365

2355-
secr = RoleFactory(name_id='secr',group__time=before_elig_date).person
2366+
secr = RoleFactory(name_id='secr',group__time=before_elig_date).person
23562367

2357-
nobody=PersonFactory()
23582368

2359-
self.assertTrue(is_eligible(person=chair,nomcom=self.nomcom))
2360-
self.assertTrue(is_eligible(person=secr,nomcom=self.nomcom))
2361-
self.assertFalse(is_eligible(person=nobody,nomcom=self.nomcom))
2369+
self.assertTrue(is_eligible(person=chair,nomcom=nomcom))
2370+
self.assertTrue(is_eligible(person=secr,nomcom=nomcom))
2371+
self.assertFalse(is_eligible(person=nobody,nomcom=nomcom))
23622372

2363-
self.assertEqual(set([chair,secr]), set(list_eligible(nomcom=self.nomcom)))
2373+
self.assertEqual(set([chair,secr]), set(list_eligible(nomcom=nomcom)))
2374+
Role.objects.filter(person__in=(chair,secr)).delete()
23642375

23652376

23662377
def test_elig_by_office_edge(self):
23672378

2368-
elig_date=get_eligibility_date(self.nomcom)
2369-
day_after = elig_date + datetime.timedelta(days=1)
2370-
two_days_after = elig_date + datetime.timedelta(days=2)
2379+
for nomcom in self.nomcoms:
2380+
elig_date=get_eligibility_date(nomcom)
2381+
day_after = elig_date + datetime.timedelta(days=1)
2382+
two_days_after = elig_date + datetime.timedelta(days=2)
23712383

2372-
group = GroupFactory(time=two_days_after)
2373-
GroupHistoryFactory(group=group,time=day_after)
2384+
group = GroupFactory(time=two_days_after)
2385+
GroupHistoryFactory(group=group,time=day_after)
23742386

2375-
after_chair = RoleFactory(name_id='chair',group=group).person
2387+
after_chair = RoleFactory(name_id='chair',group=group).person
23762388

2377-
self.assertFalse(is_eligible(person=after_chair,nomcom=self.nomcom))
2389+
self.assertFalse(is_eligible(person=after_chair,nomcom=nomcom))
23782390

23792391

23802392
def test_elig_by_office_closed_groups(self):
23812393

2382-
elig_date=get_eligibility_date(self.nomcom)
2383-
day_before = elig_date-datetime.timedelta(days=1)
2384-
year_before = datetime.date(elig_date.year-1,elig_date.month,elig_date.day)
2385-
three_years_before = datetime.date(elig_date.year-3,elig_date.month,elig_date.day)
2386-
just_after_three_years_before = three_years_before + datetime.timedelta(days=1)
2387-
just_before_three_years_before = three_years_before - datetime.timedelta(days=1)
2394+
for nomcom in self.nomcoms:
2395+
elig_date=get_eligibility_date(nomcom)
2396+
day_before = elig_date-datetime.timedelta(days=1)
2397+
year_before = datetime.date(elig_date.year-1,elig_date.month,elig_date.day)
2398+
three_years_before = datetime.date(elig_date.year-3,elig_date.month,elig_date.day)
2399+
just_after_three_years_before = three_years_before + datetime.timedelta(days=1)
2400+
just_before_three_years_before = three_years_before - datetime.timedelta(days=1)
23882401

2389-
eligible = list()
2390-
ineligible = list()
2402+
eligible = list()
2403+
ineligible = list()
23912404

2392-
p1 = RoleHistoryFactory(
2393-
name_id='chair',
2394-
group__time=day_before,
2395-
group__group__state_id='conclude',
2396-
).person
2397-
eligible.append(p1)
2405+
p1 = RoleHistoryFactory(
2406+
name_id='chair',
2407+
group__time=day_before,
2408+
group__group__state_id='conclude',
2409+
).person
2410+
eligible.append(p1)
23982411

2399-
p2 = RoleHistoryFactory(
2400-
name_id='secr',
2401-
group__time=year_before,
2402-
group__group__state_id='conclude',
2403-
).person
2404-
eligible.append(p2)
2412+
p2 = RoleHistoryFactory(
2413+
name_id='secr',
2414+
group__time=year_before,
2415+
group__group__state_id='conclude',
2416+
).person
2417+
eligible.append(p2)
24052418

2406-
p3 = RoleHistoryFactory(
2407-
name_id='secr',
2408-
group__time=just_after_three_years_before,
2409-
group__group__state_id='conclude',
2410-
).person
2411-
eligible.append(p3)
2419+
p3 = RoleHistoryFactory(
2420+
name_id='secr',
2421+
group__time=just_after_three_years_before,
2422+
group__group__state_id='conclude',
2423+
).person
2424+
eligible.append(p3)
24122425

2413-
p4 = RoleHistoryFactory(
2414-
name_id='chair',
2415-
group__time=three_years_before,
2416-
group__group__state_id='conclude',
2417-
).person
2418-
eligible.append(p4)
2426+
p4 = RoleHistoryFactory(
2427+
name_id='chair',
2428+
group__time=three_years_before,
2429+
group__group__state_id='conclude',
2430+
).person
2431+
eligible.append(p4)
24192432

2420-
p5 = RoleHistoryFactory(
2421-
name_id='chair',
2422-
group__time=just_before_three_years_before,
2423-
group__group__state_id='conclude',
2424-
).person
2425-
ineligible.append(p5)
2433+
p5 = RoleHistoryFactory(
2434+
name_id='chair',
2435+
group__time=just_before_three_years_before,
2436+
group__group__state_id='conclude',
2437+
).person
2438+
ineligible.append(p5)
24262439

2427-
for person in eligible:
2428-
self.assertTrue(is_eligible(person,self.nomcom))
2440+
for person in eligible:
2441+
self.assertTrue(is_eligible(person,nomcom))
24292442

2430-
for person in ineligible:
2431-
self.assertFalse(is_eligible(person,self.nomcom))
2443+
for person in ineligible:
2444+
self.assertFalse(is_eligible(person,nomcom))
24322445

2433-
self.assertEqual(set(list_eligible(nomcom=self.nomcom)),set(eligible))
2446+
self.assertEqual(set(list_eligible(nomcom=nomcom)),set(eligible))
24342447

2448+
Person.objects.filter(pk__in=[p.pk for p in eligible+ineligible]).delete()
24352449

2436-
def test_elig_by_author(self):
24372450

2438-
elig_date = get_eligibility_date(self.nomcom)
2439-
2440-
last_date = elig_date
2441-
first_date = datetime.date(last_date.year-5,last_date.month,last_date.day)
2442-
day_after_last_date = last_date+datetime.timedelta(days=1)
2443-
day_before_first_date = first_date-datetime.timedelta(days=1)
2444-
middle_date = datetime.date(last_date.year-3,last_date.month,last_date.day)
2445-
2446-
eligible = set()
2447-
ineligible = set()
2448-
2449-
p = PersonFactory()
2450-
ineligible.add(p)
2451-
2452-
p = PersonFactory()
2453-
da = WgDocumentAuthorFactory(person=p)
2454-
DocEventFactory(type='published_rfc',doc=da.document,time=middle_date)
2455-
ineligible.add(p)
2456-
2457-
p = PersonFactory()
2458-
da = WgDocumentAuthorFactory(person=p)
2459-
DocEventFactory(type='iesg_approved',doc=da.document,time=last_date)
2460-
da = WgDocumentAuthorFactory(person=p)
2461-
DocEventFactory(type='published_rfc',doc=da.document,time=first_date)
2462-
eligible.add(p)
2463-
2464-
p = PersonFactory()
2465-
da = WgDocumentAuthorFactory(person=p)
2466-
DocEventFactory(type='iesg_approved',doc=da.document,time=middle_date)
2467-
da = WgDocumentAuthorFactory(person=p)
2468-
DocEventFactory(type='published_rfc',doc=da.document,time=day_before_first_date)
2469-
ineligible.add(p)
2470-
2471-
p = PersonFactory()
2472-
da = WgDocumentAuthorFactory(person=p)
2473-
DocEventFactory(type='iesg_approved',doc=da.document,time=day_after_last_date)
2474-
da = WgDocumentAuthorFactory(person=p)
2475-
DocEventFactory(type='published_rfc',doc=da.document,time=middle_date)
2476-
ineligible.add(p)
2477-
2478-
for person in eligible:
2479-
self.assertTrue(is_eligible(person,self.nomcom))
24802451

2481-
for person in ineligible:
2482-
self.assertFalse(is_eligible(person,self.nomcom))
2452+
def test_elig_by_author(self):
24832453

2484-
self.assertEqual(set(list_eligible(nomcom=self.nomcom)),set(eligible))
2454+
for nomcom in self.nomcoms:
2455+
elig_date = get_eligibility_date(nomcom)
2456+
2457+
last_date = elig_date
2458+
first_date = datetime.date(last_date.year-5,last_date.month,last_date.day)
2459+
day_after_last_date = last_date+datetime.timedelta(days=1)
2460+
day_before_first_date = first_date-datetime.timedelta(days=1)
2461+
middle_date = datetime.date(last_date.year-3,last_date.month,last_date.day)
2462+
2463+
eligible = set()
2464+
ineligible = set()
2465+
2466+
p = PersonFactory()
2467+
ineligible.add(p)
2468+
2469+
p = PersonFactory()
2470+
da = WgDocumentAuthorFactory(person=p)
2471+
DocEventFactory(type='published_rfc',doc=da.document,time=middle_date)
2472+
ineligible.add(p)
2473+
2474+
p = PersonFactory()
2475+
da = WgDocumentAuthorFactory(person=p)
2476+
DocEventFactory(type='iesg_approved',doc=da.document,time=last_date)
2477+
da = WgDocumentAuthorFactory(person=p)
2478+
DocEventFactory(type='published_rfc',doc=da.document,time=first_date)
2479+
eligible.add(p)
2480+
2481+
p = PersonFactory()
2482+
da = WgDocumentAuthorFactory(person=p)
2483+
DocEventFactory(type='iesg_approved',doc=da.document,time=middle_date)
2484+
da = WgDocumentAuthorFactory(person=p)
2485+
DocEventFactory(type='published_rfc',doc=da.document,time=day_before_first_date)
2486+
ineligible.add(p)
2487+
2488+
p = PersonFactory()
2489+
da = WgDocumentAuthorFactory(person=p)
2490+
DocEventFactory(type='iesg_approved',doc=da.document,time=day_after_last_date)
2491+
da = WgDocumentAuthorFactory(person=p)
2492+
DocEventFactory(type='published_rfc',doc=da.document,time=middle_date)
2493+
ineligible.add(p)
2494+
2495+
for person in eligible:
2496+
self.assertTrue(is_eligible(person,nomcom))
2497+
2498+
for person in ineligible:
2499+
self.assertFalse(is_eligible(person,nomcom))
2500+
2501+
self.assertEqual(set(list_eligible(nomcom=nomcom)),set(eligible))
2502+
Person.objects.filter(pk__in=[p.pk for p in eligible.union(ineligible)]).delete()
24852503

24862504
class VolunteerTests(TestCase):
24872505

ietf/nomcom/utils.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -495,7 +495,7 @@ def list_eligible(nomcom=None, date=None, base_qs=None):
495495
return list_eligible_8713(date=eligibility_date, base_qs=base_qs)
496496
elif eligibility_date.year == 2020:
497497
return list_eligible_8788(date=eligibility_date, base_qs=base_qs)
498-
elif eligibility_date.year == 2021:
498+
elif eligibility_date.year in (2021,2022):
499499
return list_eligible_8989(date=eligibility_date, base_qs=base_qs)
500500
else:
501501
return Person.objects.none()
@@ -504,7 +504,7 @@ def decorate_volunteers_with_qualifications(volunteers, nomcom=None, date=None,
504504
if not base_qs:
505505
base_qs = Person.objects.all()
506506
eligibility_date = get_eligibility_date(nomcom, date)
507-
if eligibility_date.year == 2021:
507+
if eligibility_date.year in (2021,2022):
508508
three_of_five_qs, officer_qs, author_qs = get_8989_eligibility_querysets(eligibility_date, base_qs)
509509
for v in volunteers:
510510
qualifications = []

0 commit comments

Comments
 (0)