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..16dcece35 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,14 @@ +
+ +
{{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.

+
+
+