From dc20598999b90032b712eb82bcd5f2e28fdf83b9 Mon Sep 17 00:00:00 2001 From: Robert Sparks Date: Mon, 28 Aug 2017 19:28:44 +0000 Subject: [PATCH] Show whether a person is nomcom eligible on their edit_profile page. Related to #2257 and #2323. Commit ready for merge. - Legacy-Id: 14086 --- ietf/ietfauth/views.py | 1 + ietf/person/templatetags/__init__.py | 0 ietf/person/templatetags/person_filters.py | 16 ++++++++++++++++ ietf/person/utils.py | 18 +++++++++++++++++- ietf/templates/registration/edit_profile.html | 8 ++++++++ 5 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 ietf/person/templatetags/__init__.py create mode 100644 ietf/person/templatetags/person_filters.py diff --git a/ietf/ietfauth/views.py b/ietf/ietfauth/views.py index 0835e9179..8739766ff 100644 --- a/ietf/ietfauth/views.py +++ b/ietf/ietfauth/views.py @@ -278,6 +278,7 @@ def profile(request): 'roles': roles, 'emails': emails, 'new_email_forms': new_email_forms, + 'settings':settings, }) def confirm_new_email(request, auth): diff --git a/ietf/person/templatetags/__init__.py b/ietf/person/templatetags/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/ietf/person/templatetags/person_filters.py b/ietf/person/templatetags/person_filters.py new file mode 100644 index 000000000..21bdcb700 --- /dev/null +++ b/ietf/person/templatetags/person_filters.py @@ -0,0 +1,16 @@ +# Copyright The IETF Trust 2007, All Rights Reserved + +import datetime + +from django import template + +import debug # pyflakes:ignore + +from ietf.person.utils import is_nomcom_eligible as util_is_nomcom_eligible + +register = template.Library() + +@register.filter +def is_nomcom_eligible(person, date=datetime.date.today()): + return util_is_nomcom_eligible(person,date) + diff --git a/ietf/person/utils.py b/ietf/person/utils.py index 6bdb26abe..59f83ac07 100755 --- a/ietf/person/utils.py +++ b/ietf/person/utils.py @@ -11,8 +11,9 @@ from django.contrib.auth.models import User import debug # pyflakes:ignore from ietf.nomcom.models import Nominee -from ietf.person.models import Person +from ietf.person.models import Person, Email from ietf.utils.mail import send_mail +from ietf.meeting.models import Meeting def merge_persons(source, target, file=sys.stdout, verbose=False): changes = [] @@ -181,3 +182,18 @@ def determine_merge_order(source,target): if source.user and target.user: source,target = sorted([source,target],key=lambda a: a.user.last_login if a.user.last_login else datetime.datetime.min) return source,target + +def attended_ietf_meetings(person): + return Meeting.objects.filter(type='ietf',meetingregistration__email__in=Email.objects.filter(person=person).values_list('address',flat=True)) + +def attended_in_last_five_ietf_meetings(person, date=datetime.datetime.today()): + previous_five = Meeting.objects.filter(type='ietf',date__lte=date).order_by('-date')[:5] + attended = attended_ietf_meetings(person) + return set(previous_five).intersection(attended) + +def is_nomcom_eligible(person, date=datetime.date.today()): + attended = attended_in_last_five_ietf_meetings(person, date) + is_iesg = person.role_set.filter(group__type_id='area',group__state='active',name_id='ad').exists() + is_iab = person.role_set.filter(group__acronym='iab',name_id__in=['member','chair']).exists() + is_iaoc = person.role_set.filter(group__acronym='iaoc',name_id__in=['member','chair']).exists() + return len(attended)>=3 and not (is_iesg or is_iab or is_iaoc) diff --git a/ietf/templates/registration/edit_profile.html b/ietf/templates/registration/edit_profile.html index 3b56a7ff1..4b79c7e8a 100644 --- a/ietf/templates/registration/edit_profile.html +++ b/ietf/templates/registration/edit_profile.html @@ -4,6 +4,8 @@ {% load widget_tweaks bootstrap3 %} +{% load person_filters %} + {% block title %}Profile for {{ user }}{% endblock %} {% block content %} @@ -29,6 +31,12 @@ +
+ +
{{person|is_nomcom_eligible|yesno:'Yes,No,No'}}
+
This calculation is EXPERIMENTAL.
If you believe it is incorrect, make sure you've added all the email addresses you've registered for IETF meetings with to the list below.
If you've done so and the calculation is still incorrect, please send a note to {{settings.SECRETARIAT_TICKET_EMAIL}}.
See RFC 3777 for eligibility requirements.
+
+