Skip to content

Commit d119b33

Browse files
committed
Ticket ietf-tools#1248: catch DoesNotExist errors with user.get_profile() when user does not have a corresponding Person record.
- Legacy-Id: 7151
1 parent 35a9436 commit d119b33

3 files changed

Lines changed: 16 additions & 12 deletions

File tree

ietf/secr/proceedings/views.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -482,12 +482,6 @@ def main(request):
482482
* meetings, interim_meetings, today
483483
484484
'''
485-
# getting numerous errors when people try to access using the wrong account
486-
try:
487-
person = request.user.get_profile()
488-
except Person.DoesNotExist:
489-
return HttpResponseForbidden('ACCESS DENIED: user=%s' % request.META['REMOTE_USER'])
490-
491485
if has_role(request.user,'Secretariat'):
492486
meetings = Meeting.objects.filter(type='ietf').order_by('-number')
493487
else:
@@ -661,7 +655,11 @@ def select(request, meeting_num):
661655

662656
meeting = get_object_or_404(Meeting, number=meeting_num)
663657
user = request.user
664-
person = user.get_profile()
658+
try:
659+
person = user.get_profile()
660+
except ObjectDoesNotExist:
661+
messages.warning(request, 'The account %s is not associated with any groups. If you have multiple Datatracker accounts you may try another or report a problem to ietf-action@ietf.org' % request.user)
662+
return HttpResponseRedirect(reverse('proceedings'))
665663
groups_session, groups_no_session = groups_by_session(user, meeting)
666664
proceedings_url = get_proceedings_url(meeting)
667665

ietf/secr/sreq/views.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,10 @@ def main(request):
450450
meeting = get_meeting()
451451
scheduled_groups,unscheduled_groups = groups_by_session(request.user, meeting)
452452

453+
# warn if there are no associated groups
454+
if not scheduled_groups and not unscheduled_groups:
455+
messages.warning(request, 'The account %s is not associated with any groups. If you have multiple Datatracker accounts you may try another or report a problem to ietf-action@ietf.org' % request.user)
456+
453457
# load form select with unscheduled groups
454458
choices = zip([ g.pk for g in unscheduled_groups ],
455459
[ str(g) for g in unscheduled_groups ])

ietf/secr/utils/group.py

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from django.conf import settings
2+
from django.core.exceptions import ObjectDoesNotExist
23
from ietf.group.models import Group
34
from ietf.meeting.models import Session
45

@@ -44,13 +45,14 @@ def get_my_groups(user,conclude=False):
4445
if conclude:
4546
states.extend(['conclude','bof-conc'])
4647
all_groups = Group.objects.filter(type__in=('wg','rg','ag','team'),state__in=states).order_by('acronym')
47-
if user == None:
48+
49+
if user == None or has_role(user,'Secretariat'):
4850
return all_groups
49-
else:
51+
52+
try:
5053
person = user.get_profile()
51-
52-
if has_role(user,'Secretariat'):
53-
return all_groups
54+
except ObjectDoesNotExist:
55+
return list()
5456

5557
for group in all_groups:
5658
if group.role_set.filter(person=person,name__in=('chair','secr')):

0 commit comments

Comments
 (0)