|
24 | 24 | from ietf.name.models import NomineePositionStateName, FeedbackTypeName |
25 | 25 | from ietf.group.models import Group, GroupEvent, Role |
26 | 26 | from ietf.message.models import Message |
27 | | -from ietf.meeting.models import Meeting |
28 | 27 |
|
29 | 28 | from ietf.nomcom.decorators import nomcom_private_key_required |
30 | 29 | from ietf.nomcom.forms import (NominateForm, NominateNewPersonForm, FeedbackForm, QuestionnaireForm, |
|
36 | 35 | from ietf.nomcom.models import (Position, NomineePosition, Nominee, Feedback, NomCom, ReminderDates, |
37 | 36 | FeedbackLastSeen, Topic, TopicFeedbackLastSeen, ) |
38 | 37 | from ietf.nomcom.utils import (get_nomcom_by_year, store_nomcom_private_key, |
39 | | - get_hash_nominee_position, send_reminder_to_nominees, |
40 | | - HOME_TEMPLATE, NOMINEE_ACCEPT_REMINDER_TEMPLATE,NOMINEE_QUESTIONNAIRE_REMINDER_TEMPLATE, |
41 | | - DISQUALIFYING_ROLE_QUERY_EXPRESSION) |
| 38 | + get_hash_nominee_position, send_reminder_to_nominees, list_eligible, |
| 39 | + HOME_TEMPLATE, NOMINEE_ACCEPT_REMINDER_TEMPLATE,NOMINEE_QUESTIONNAIRE_REMINDER_TEMPLATE, ) |
| 40 | + |
42 | 41 | from ietf.ietfauth.utils import role_required |
43 | 42 | from ietf.person.models import Person |
44 | | -from ietf.utils import log |
45 | 43 | from ietf.utils.response import permission_denied |
46 | 44 |
|
47 | 45 | import debug # pyflakes:ignore |
@@ -1275,31 +1273,7 @@ def extract_email_lists(request, year): |
1275 | 1273 | def eligible(request, year): |
1276 | 1274 | nomcom = get_nomcom_by_year(year) |
1277 | 1275 |
|
1278 | | - # This should probably be refined. If the nomcom year is this year, then |
1279 | | - # today's date makes sense; for previous nomcoms, we should probably get |
1280 | | - # the date of the announcement of the Call for Volunteers, instead |
1281 | | - date = datetime.date.today() |
1282 | | - previous_five = ( Meeting.objects.filter(type='ietf',date__lte=date) |
1283 | | - .exclude(city='').exclude(city='Virtual') |
1284 | | - .order_by('-date')[:5] ) |
1285 | | - log.assertion("len(previous_five) == 5") |
1286 | | - attendees = {} |
1287 | | - potentials = set() |
1288 | | - for m in previous_five: |
1289 | | - registration_emails = m.meetingregistration_set.filter(attended=True).values_list('email',flat=True) |
1290 | | - attendees[m] = Person.objects.filter(email__address__in=registration_emails).distinct() |
1291 | | - # See RFC8713 section 4.15 |
1292 | | - disqualified_roles = Role.objects.filter(DISQUALIFYING_ROLE_QUERY_EXPRESSION) |
1293 | | - potentials.update(attendees[m].exclude(role__in=disqualified_roles)) |
1294 | | - eligible_persons = [] |
1295 | | - for p in potentials: |
1296 | | - count = 0 |
1297 | | - for m in previous_five: |
1298 | | - if p in attendees[m]: |
1299 | | - count += 1 |
1300 | | - if count >= 3: |
1301 | | - eligible_persons.append(p) |
1302 | | - |
| 1276 | + eligible_persons = list(list_eligible(nomcom=nomcom)) |
1303 | 1277 | eligible_persons.sort(key=lambda p: p.last_name() ) |
1304 | 1278 |
|
1305 | 1279 | return render(request, 'nomcom/eligible.html', |
|
0 commit comments