diff --git a/ietf/person/urls.py b/ietf/person/urls.py index 09f7932a4..2cdb761f9 100644 --- a/ietf/person/urls.py +++ b/ietf/person/urls.py @@ -4,5 +4,5 @@ from ietf.person import views, ajax urlpatterns = patterns('', (r'^search/(?P(person|email))/$', "ietf.person.views.ajax_select2_search", None, 'ajax_select2_search_person_email'), (r'^(?P[a-z0-9]+).json$', ajax.person_json), - (ur'^(?P[\w\s]+)', views.profile), + (ur'^(?P[-\w\s\']+)', views.profile), ) diff --git a/ietf/person/views.py b/ietf/person/views.py index d23af8e1f..c6c41dade 100644 --- a/ietf/person/views.py +++ b/ietf/person/views.py @@ -1,8 +1,10 @@ from django.db.models import Q -from django.http import HttpResponse +from django.http import HttpResponse, Http404 from django.shortcuts import render, get_object_or_404 +import debug # pyflakes:ignore + from ietf.person.models import Email, Person, Alias from ietf.person.fields import select2_id_name_json @@ -55,5 +57,8 @@ def profile(request, email_or_name): if '@' in email_or_name: person = get_object_or_404(Email, address=email_or_name).person else: - person = get_object_or_404(Alias, name=email_or_name).person - return render(request, 'person/profile.html', {'person': person}) + aliases = Alias.objects.filter(name=email_or_name) + persons = set([ a.person for a in aliases ]) + if not persons: + raise Http404 + return render(request, 'person/profile.html', {'persons': persons}) diff --git a/ietf/templates/person/profile.html b/ietf/templates/person/profile.html index 0081dc175..edb2d419f 100644 --- a/ietf/templates/person/profile.html +++ b/ietf/templates/person/profile.html @@ -6,19 +6,29 @@ {% block title %}Profile for {{ person }}{% endblock %} {% block content %} - {% origin %} -

{{ person.name }}

- -
- {% if person.photo %} - - Photo of {{ person }} - - {% else %} - No photo available - {% endif %} - {{ person.biography | apply_markup:"restructuredtext" }} + {% if persons|length > 1 %} +
+

Duplicate person records found. This is an error. Showing all:

+
+ {% endif %} + {% for person in persons %} +
+ {% if not forloop.first %}
{% endif %} +

{{ person.name }}

+ +
+ {% if person.photo %} + + Photo of {{ person }} + + {% else %} + No photo available + {% endif %} + {{ person.biography | apply_markup:"restructuredtext" }} +
+
+ {% endfor %} {% endblock %}