launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #26385
[Merge] ~ilasc/launchpad:skip-requester-values into launchpad:master
Ioana Lasc has proposed merging ~ilasc/launchpad:skip-requester-values into launchpad:master.
Commit message:
Skip job, codeimportresult, codeimportjob requester
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~ilasc/launchpad/+git/launchpad/+merge/398466
--
Your team Launchpad code reviewers is requested to review the proposed merge of ~ilasc/launchpad:skip-requester-values into launchpad:master.
diff --git a/lib/lp/registry/scripts/closeaccount.py b/lib/lp/registry/scripts/closeaccount.py
index 5616483..af667a7 100644
--- a/lib/lp/registry/scripts/closeaccount.py
+++ b/lib/lp/registry/scripts/closeaccount.py
@@ -113,7 +113,9 @@ def close_account(username, log):
('bugsubscription', 'subscribed_by'),
('codeimport', 'owner'),
('codeimport', 'registrant'),
+ ('codeimportjob', 'requesting_user'),
('codeimportevent', 'person'),
+ ('codeimportresult', 'requesting_user'),
('distroarchseriesfilter', 'creator'),
('faq', 'last_updated_by'),
('featureflagchangelogentry', 'person'),
@@ -123,6 +125,7 @@ def close_account(username, log):
('gitrule', 'creator'),
('gitrulegrant', 'grantor'),
('gitsubscription', 'subscribed_by'),
+ ('job', 'requester'),
('message', 'owner'),
('messageapproval', 'disposed_by'),
('messageapproval', 'posted_by'),
diff --git a/lib/lp/registry/scripts/tests/test_closeaccount.py b/lib/lp/registry/scripts/tests/test_closeaccount.py
index 209960a..91cf756 100644
--- a/lib/lp/registry/scripts/tests/test_closeaccount.py
+++ b/lib/lp/registry/scripts/tests/test_closeaccount.py
@@ -25,12 +25,14 @@ from lp.app.interfaces.launchpad import ILaunchpadCelebrities
from lp.archivepublisher.config import getPubConfig
from lp.archivepublisher.publishing import Publisher
from lp.bugs.model.bugsummary import BugSummary
-from lp.code.enums import TargetRevisionControlSystems
+from lp.code.enums import TargetRevisionControlSystems, CodeImportResultStatus
+from lp.code.interfaces.codeimportjob import ICodeImportJobWorkflow
from lp.code.tests.helpers import GitHostingFixture
from lp.registry.interfaces.person import IPersonSet
from lp.registry.interfaces.teammembership import ITeamMembershipSet
from lp.registry.scripts.closeaccount import CloseAccountScript
from lp.scripts.garbo import PopulateLatestPersonSourcePackageReleaseCache
+from lp.services.database.interfaces import IStore
from lp.services.database.sqlbase import (
flush_database_caches,
get_transaction_timestamp,
@@ -40,6 +42,8 @@ from lp.services.identity.interfaces.account import (
IAccountSet,
)
from lp.services.identity.interfaces.emailaddress import IEmailAddressSet
+from lp.services.job.interfaces.job import JobType
+from lp.services.job.model.job import Job
from lp.services.log.logger import (
BufferLogger,
DevNullLogger,
@@ -606,6 +610,55 @@ class TestCloseAccount(TestCaseWithFactory):
self.assertEqual(person, code_imports[0].registrant)
self.assertEqual(person, code_imports[1].registrant)
+ def test_skips_import_job_requester(self):
+ self.useFixture(GitHostingFixture())
+ person = self.factory.makePerson()
+ team = self.factory.makeTeam(members=[person])
+ code_imports = [
+ self.factory.makeCodeImport(
+ registrant=person, target_rcs_type=target_rcs_type, owner=team)
+ for target_rcs_type in (
+ TargetRevisionControlSystems.BZR,
+ TargetRevisionControlSystems.GIT)]
+
+ getUtility(ICodeImportJobWorkflow).requestJob(
+ code_imports[0].import_job, person)
+
+ self.assertEqual(person, code_imports[0].import_job.requesting_user)
+
+ result = self.factory.makeCodeImportResult(
+ code_import=code_imports[0],
+ requesting_user=person,
+ result_status=CodeImportResultStatus.SUCCESS)
+ person_id = person.id
+ account_id = person.account.id
+ script = self.makeScript([six.ensure_str(person.name)])
+ with dbuser('launchpad'):
+ self.runScript(script)
+ self.assertRemoved(account_id, person_id)
+ self.assertEqual(person, code_imports[0].registrant)
+ self.assertEqual(person, result.requesting_user)
+ self.assertEqual(person, code_imports[0].import_job.requesting_user)
+
+ def test_skip_requester_package_diff_job(self):
+ person = self.factory.makePerson()
+ ppa = self.factory.makeArchive(owner=person)
+ other_person = self.factory.makePerson()
+ from_spr = self.factory.makeSourcePackageRelease(archive=ppa)
+ to_spr = self.factory.makeSourcePackageRelease(archive=ppa)
+ from_spr.requestDiffTo(ppa.owner, to_spr)
+ job = IStore(Job).find(
+ Job, Job.base_job_type == JobType.GENERATE_PACKAGE_DIFF).order_by(
+ Job.id).last()
+ removeSecurityProxy(ppa).owner = other_person
+ person_id = person.id
+ account_id = person.account.id
+ script = self.makeScript([six.ensure_str(person.name)])
+ with dbuser('launchpad'):
+ self.runScript(script)
+ self.assertRemoved(account_id, person_id)
+ self.assertEqual(person, job.requester)
+
def test_skips_specification_owner(self):
person = self.factory.makePerson()
person_id = person.id
diff --git a/lib/lp/testing/factory.py b/lib/lp/testing/factory.py
index a176d48..18aea89 100644
--- a/lib/lp/testing/factory.py
+++ b/lib/lp/testing/factory.py
@@ -2528,13 +2528,13 @@ class BareLaunchpadObjectFactory(ObjectFactory):
def makeCodeImportResult(self, code_import=None, result_status=None,
date_started=None, date_finished=None,
- log_excerpt=None, log_alias=None, machine=None):
+ log_excerpt=None, log_alias=None, machine=None,
+ requesting_user=None):
"""Create and return a new CodeImportResult."""
if code_import is None:
code_import = self.makeCodeImport()
if machine is None:
machine = self.makeCodeImportMachine()
- requesting_user = None
if log_excerpt is None:
log_excerpt = self.getUniqueUnicode()
if result_status is None:
Follow ups