File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -112,6 +112,23 @@ def test_person_profile_without_email(self):
112112 r = self .client .get (url )
113113 self .assertContains (r , person .name , status_code = 200 )
114114
115+ def test_person_profile_duplicates (self ):
116+ # same Person name and email - should not show on the profile as multiple Person records
117+ person = PersonFactory (name = "bazquux@example.com" , user__email = "bazquux@example.com" )
118+ url = urlreverse ("ietf.person.views.profile" , kwargs = { "email_or_name" : person .plain_name ()})
119+ r = self .client .get (url )
120+ self .assertEqual (r .status_code , 200 )
121+ self .assertNotIn ('More than one person' , r .content .decode ())
122+
123+ # Change that person's name but leave their email address. Create a new person whose name
124+ # is the email address. This *should* be flagged as multiple Person records on the profile.
125+ person .name = 'different name'
126+ person .save ()
127+ PersonFactory (name = "bazquux@example.com" )
128+ r = self .client .get (url )
129+ self .assertEqual (r .status_code , 200 )
130+ self .assertIn ('More than one person' , r .content .decode ())
131+
115132 def test_person_profile_404 (self ):
116133 urls = [
117134 urlreverse ("ietf.person.views.profile" , kwargs = { "email_or_name" : "nonexistent@example.com" }),
Original file line number Diff line number Diff line change @@ -67,17 +67,19 @@ def ajax_select2_search(request, model_name):
6767
6868 return HttpResponse (select2_id_name_json (objs ), content_type = 'application/json' )
6969
70+
7071def profile (request , email_or_name ):
7172 aliases = Alias .objects .filter (name = email_or_name )
72- persons = list ( set ([ a .person for a in aliases ]) )
73+ persons = set (a .person for a in aliases )
7374
7475 if '@' in email_or_name :
7576 emails = Email .objects .filter (address = email_or_name )
76- persons += list ( set ([ e .person for e in emails ]) )
77+ persons . update ( e .person for e in emails )
7778
78- persons = [ p for p in persons if p and p .id ]
79+ persons = [p for p in persons if p and p .id ]
7980 if not persons :
8081 raise Http404
82+ persons .sort (key = lambda p : p .id )
8183 return render (request , 'person/profile.html' , {'persons' : persons , 'today' : timezone .now ()})
8284
8385
You can’t perform that action at this time.
0 commit comments