|
7 | 7 |
|
8 | 8 | from django.contrib import admin |
9 | 9 | from django.contrib.auth.models import User |
| 10 | +from django.core.exceptions import ObjectDoesNotExist |
10 | 11 |
|
11 | 12 | import debug # pyflakes:ignore |
12 | 13 |
|
13 | | -from ietf.nomcom.models import Nominee |
14 | 14 | from ietf.person.models import Person, Email |
15 | 15 | from ietf.utils.mail import send_mail |
16 | | -from ietf.meeting.models import Meeting |
17 | 16 |
|
18 | 17 | def merge_persons(source, target, file=sys.stdout, verbose=False): |
19 | 18 | changes = [] |
@@ -141,7 +140,7 @@ def merge_nominees(source, target): |
141 | 140 | for nominee in source.nominee_set.all(): |
142 | 141 | try: |
143 | 142 | target_nominee = target.nominee_set.get(nomcom=nominee.nomcom) |
144 | | - except Nominee.DoesNotExist: |
| 143 | + except ObjectDoesNotExist: |
145 | 144 | target_nominee = target.nominee_set.create(nomcom=nominee.nomcom, email=target.email()) |
146 | 145 | nominee.nomination_set.all().update(nominee=target_nominee) |
147 | 146 | for fb in nominee.feedback_set.all(): |
@@ -183,17 +182,11 @@ def determine_merge_order(source,target): |
183 | 182 | source,target = sorted([source,target],key=lambda a: a.user.last_login if a.user.last_login else datetime.datetime.min) |
184 | 183 | return source,target |
185 | 184 |
|
186 | | -def attended_ietf_meetings(person): |
187 | | - return Meeting.objects.filter(type='ietf',meetingregistration__email__in=Email.objects.filter(person=person).values_list('address',flat=True)) |
188 | | - |
189 | | -def attended_in_last_five_ietf_meetings(person, date=datetime.datetime.today()): |
190 | | - previous_five = Meeting.objects.filter(type='ietf',date__lte=date).order_by('-date')[:5] |
191 | | - attended = attended_ietf_meetings(person) |
192 | | - return set(previous_five).intersection(attended) |
193 | | - |
194 | | -def is_nomcom_eligible(person, date=datetime.date.today()): |
195 | | - attended = attended_in_last_five_ietf_meetings(person, date) |
196 | | - is_iesg = person.role_set.filter(group__type_id='area',group__state='active',name_id='ad').exists() |
197 | | - is_iab = person.role_set.filter(group__acronym='iab',name_id__in=['member','chair']).exists() |
198 | | - is_iaoc = person.role_set.filter(group__acronym='iaoc',name_id__in=['member','chair']).exists() |
199 | | - return len(attended)>=3 and not (is_iesg or is_iab or is_iaoc) |
| 185 | +def get_active_ads(): |
| 186 | + from ietf.person.models import Person |
| 187 | + cache_key = "doc:active_ads" |
| 188 | + active_ads = cache.get(cache_key) |
| 189 | + if not active_ads: |
| 190 | + active_ads = list(Person.objects.filter(role__name="ad", role__group__state="active", role__group__type="area").distinct()) |
| 191 | + cache.set(cache_key, active_ads) |
| 192 | + return active_ads |
0 commit comments