Ticket #1248: catch DoesNotExist errors with user.get_profile() when user does not have a corresponding Person record.

- Legacy-Id: 7151
This commit is contained in:
Ryan Cross 2014-01-17 23:04:17 +00:00
parent 35a94362a1
commit d119b33a1a
3 changed files with 16 additions and 12 deletions

View file

@ -482,12 +482,6 @@ def main(request):
* meetings, interim_meetings, today
'''
# getting numerous errors when people try to access using the wrong account
try:
person = request.user.get_profile()
except Person.DoesNotExist:
return HttpResponseForbidden('ACCESS DENIED: user=%s' % request.META['REMOTE_USER'])
if has_role(request.user,'Secretariat'):
meetings = Meeting.objects.filter(type='ietf').order_by('-number')
else:
@ -661,7 +655,11 @@ def select(request, meeting_num):
meeting = get_object_or_404(Meeting, number=meeting_num)
user = request.user
person = user.get_profile()
try:
person = user.get_profile()
except ObjectDoesNotExist:
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)
return HttpResponseRedirect(reverse('proceedings'))
groups_session, groups_no_session = groups_by_session(user, meeting)
proceedings_url = get_proceedings_url(meeting)

View file

@ -450,6 +450,10 @@ def main(request):
meeting = get_meeting()
scheduled_groups,unscheduled_groups = groups_by_session(request.user, meeting)
# warn if there are no associated groups
if not scheduled_groups and not unscheduled_groups:
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)
# load form select with unscheduled groups
choices = zip([ g.pk for g in unscheduled_groups ],
[ str(g) for g in unscheduled_groups ])

View file

@ -1,4 +1,5 @@
from django.conf import settings
from django.core.exceptions import ObjectDoesNotExist
from ietf.group.models import Group
from ietf.meeting.models import Session
@ -44,13 +45,14 @@ def get_my_groups(user,conclude=False):
if conclude:
states.extend(['conclude','bof-conc'])
all_groups = Group.objects.filter(type__in=('wg','rg','ag','team'),state__in=states).order_by('acronym')
if user == None:
if user == None or has_role(user,'Secretariat'):
return all_groups
else:
try:
person = user.get_profile()
if has_role(user,'Secretariat'):
return all_groups
except ObjectDoesNotExist:
return list()
for group in all_groups:
if group.role_set.filter(person=person,name__in=('chair','secr')):