← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~wgrant/launchpad/bug-740594 into lp:launchpad

 

William Grant has proposed merging lp:~wgrant/launchpad/bug-740594 into lp:launchpad with lp:~wgrant/launchpad/bug-744703 as a prerequisite.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)
Related bugs:
  Bug #740594 in Launchpad itself: "ProgrammingError: permission denied for relation emailaddress "
  https://bugs.launchpad.net/launchpad/+bug/740594

For more details, see:
https://code.launchpad.net/~wgrant/launchpad/bug-740594/+merge/55269

In OOPS-1906CCW15 checkwatches is trying to call ensurePerson on an EmailAddress that already exists but only has an Account. This creates a Person and tries to set EmailAddress.person, which fails because checkwatches only has SELECT and INSERT on emailaddress. This branch grants UPDATE as well, and tests that this case no longer OOPSes.
-- 
https://code.launchpad.net/~wgrant/launchpad/bug-740594/+merge/55269
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~wgrant/launchpad/bug-740594 into lp:launchpad.
=== modified file 'database/schema/security.cfg'
--- database/schema/security.cfg	2011-03-25 09:10:21 +0000
+++ database/schema/security.cfg	2011-03-29 03:45:50 +0000
@@ -601,7 +601,7 @@
 public.distributionsourcepackage        = SELECT, INSERT, UPDATE
 public.distroarchseries                 = SELECT
 public.distroseries                     = SELECT
-public.emailaddress                     = SELECT, INSERT
+public.emailaddress                     = SELECT, INSERT, UPDATE
 public.job                              = SELECT, INSERT, UPDATE
 public.language                         = SELECT
 public.libraryfilealias                 = SELECT, INSERT
@@ -1384,7 +1384,7 @@
 public.distributionjob                  = SELECT, INSERT
 public.person                           = SELECT, INSERT
 public.personsettings                   = SELECT, INSERT
-public.emailaddress                     = SELECT, INSERT
+public.emailaddress                     = SELECT, INSERT, UPDATE
 public.teamparticipation                = SELECT, INSERT
 public.teammembership                   = SELECT
 public.distrocomponentuploader          = SELECT

=== modified file 'lib/lp/bugs/doc/externalbugtracker-comment-imports.txt'
--- lib/lp/bugs/doc/externalbugtracker-comment-imports.txt	2011-02-07 20:41:06 +0000
+++ lib/lp/bugs/doc/externalbugtracker-comment-imports.txt	2011-03-29 03:45:50 +0000
@@ -160,7 +160,7 @@
     when importing comments for Bugzilla *TESTING* #123456.
 
 If the poster's e-mail is already registered in Launchpad, the comment
-is associated with the existing account.
+is associated with the existing person.
 
     >>> no_priv = getUtility(IPersonSet).getByName('no-priv')
     >>> no_priv.preferredemail is not None
@@ -179,6 +179,23 @@
     >>> bug.messages[-1].owner.name
     u'no-priv'
 
+This also works if the address is associated with an Account, but not a
+Person. This should only happen when the user has logged into ShipIt but
+not Launchpad. A new Person is created.
+
+    >>> account = factory.makeAccount(email="account-only@xxxxxxxxxxx")
+    >>> external_bugtracker.poster_tuple = (
+    ...     'Account Only', 'account-only@xxxxxxxxxxx')
+    >>> external_bugtracker.remote_comments['account-only-comment'] = (
+    ...     "Account-only comment.")
+    >>> bugwatch_updater.importBugComments()
+    INFO:...:Imported 1 comments for remote bug 123456 on ...
+
+    >>> bug.messages[-1].owner.name
+    u'account-only'
+    >>> bug.messages[-1].owner.account == account
+    True
+
 It's also possible for Launchpad to create Persons from remote
 bugtracker users when the remote bugtracker doesn't specify an email
 address. In those cases, the ExternalBugTracker's getPosterForComment()