Merge lp:~twom/launchpad/pending-but-not-merged into lp:launchpad

Proposed by Tom Wardill
Status: Merged
Merged at revision: 18768
Proposed branch: lp:~twom/launchpad/pending-but-not-merged
Merge into: lp:launchpad
Diff against target: 94 lines (+38/-4)
4 files modified
lib/lp/code/browser/gitrepository.py (+3/-2)
lib/lp/code/browser/tests/test_gitrepository.py (+21/-0)
lib/lp/code/model/gitrepository.py (+8/-2)
lib/lp/code/model/tests/test_gitrepository.py (+6/-0)
To merge this branch: bzr merge lp:~twom/launchpad/pending-but-not-merged
Reviewer Review Type Date Requested Status
Colin Watson (community) Approve
Review via email: mp+354108@code.launchpad.net

Commit message

Don't show merged or otherwise inactive landing targets on the gitrepository page

To post a comment you must log in.
Revision history for this message
Colin Watson (cjwatson) :
Revision history for this message
Colin Watson (cjwatson) :
Revision history for this message
Colin Watson (cjwatson) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/lp/code/browser/gitrepository.py'
--- lib/lp/code/browser/gitrepository.py 2018-08-30 14:54:37 +0000
+++ lib/lp/code/browser/gitrepository.py 2018-08-31 14:26:04 +0000
@@ -393,8 +393,9 @@
393393
394 @cachedproperty394 @cachedproperty
395 def landing_targets(self):395 def landing_targets(self):
396 """Return a filtered list of landing targets."""396 """Return a filtered list of active landing targets."""
397 targets = self.context.getPrecachedLandingTargets(self.user)397 targets = self.context.getPrecachedLandingTargets(
398 self.user, only_active=True)
398 return latest_proposals_for_each_branch(targets)399 return latest_proposals_for_each_branch(targets)
399400
400401
401402
=== modified file 'lib/lp/code/browser/tests/test_gitrepository.py'
--- lib/lp/code/browser/tests/test_gitrepository.py 2018-08-31 06:29:29 +0000
+++ lib/lp/code/browser/tests/test_gitrepository.py 2018-08-31 14:26:04 +0000
@@ -296,6 +296,27 @@
296 self.assertIsNotNone(296 self.assertIsNotNone(
297 find_tag_by_id(browser.contents, 'landing-targets'))297 find_tag_by_id(browser.contents, 'landing-targets'))
298298
299 def test_view_with_inactive_landing_targets(self):
300 product = self.factory.makeProduct(name="foo", vcs=VCSType.GIT)
301 target_repository = self.factory.makeGitRepository(target=product)
302 source_repository = self.factory.makeGitRepository(target=product)
303 target_git_refs = self.factory.makeGitRefs(
304 target_repository,
305 paths=["refs/heads/master", "refs/heads/1.0", "refs/tags/1.1"])
306 source_git_refs = self.factory.makeGitRefs(
307 source_repository,
308 paths=["refs/heads/master"])
309 self.factory.makeBranchMergeProposalForGit(
310 target_ref=target_git_refs[0],
311 source_ref=source_git_refs[0],
312 set_state=BranchMergeProposalStatus.MERGED)
313 with FeatureFixture({"code.git.show_repository_mps": "on"}):
314 with person_logged_in(target_repository.owner):
315 browser = self.getViewBrowser(
316 source_repository, user=source_repository.owner)
317 self.assertIsNone(
318 find_tag_by_id(browser.contents, 'landing-targets'))
319
299320
300class TestGitRepositoryViewPrivateArtifacts(BrowserTestCase):321class TestGitRepositoryViewPrivateArtifacts(BrowserTestCase):
301 """Tests that Git repositories with private team artifacts can be viewed.322 """Tests that Git repositories with private team artifacts can be viewed.
302323
=== modified file 'lib/lp/code/model/gitrepository.py'
--- lib/lp/code/model/gitrepository.py 2018-08-29 17:11:57 +0000
+++ lib/lp/code/model/gitrepository.py 2018-08-31 14:26:04 +0000
@@ -71,6 +71,7 @@
71 )71 )
72from lp.app.interfaces.services import IService72from lp.app.interfaces.services import IService
73from lp.code.enums import (73from lp.code.enums import (
74 BranchMergeProposalStatus,
74 GitObjectType,75 GitObjectType,
75 GitRepositoryType,76 GitRepositoryType,
76 )77 )
@@ -887,10 +888,15 @@
887 BranchMergeProposal,888 BranchMergeProposal,
888 BranchMergeProposal.source_git_repository == self)889 BranchMergeProposal.source_git_repository == self)
889890
890 def getPrecachedLandingTargets(self, user):891 def getPrecachedLandingTargets(self, user, only_active=False):
891 """See `IGitRepository`."""892 """See `IGitRepository`."""
893 results = self.landing_targets
894 if only_active:
895 results = self.landing_targets.find(
896 Not(BranchMergeProposal.queue_status.is_in(
897 BRANCH_MERGE_PROPOSAL_FINAL_STATES)))
892 loader = partial(BranchMergeProposal.preloadDataForBMPs, user=user)898 loader = partial(BranchMergeProposal.preloadDataForBMPs, user=user)
893 return DecoratedResultSet(self.landing_targets, pre_iter_hook=loader)899 return DecoratedResultSet(results, pre_iter_hook=loader)
894900
895 @property901 @property
896 def _api_landing_targets(self):902 def _api_landing_targets(self):
897903
=== modified file 'lib/lp/code/model/tests/test_gitrepository.py'
--- lib/lp/code/model/tests/test_gitrepository.py 2018-07-24 11:57:33 +0000
+++ lib/lp/code/model/tests/test_gitrepository.py 2018-08-31 14:26:04 +0000
@@ -215,6 +215,12 @@
215 clear_property_cache(repository)215 clear_property_cache(repository)
216 self.assertIsNone(repository.code_import)216 self.assertIsNone(repository.code_import)
217217
218 def test_getMergeProposals(self):
219 repository = self.factory.makeGitRepository()
220 [ref] = self.factory.makeGitRefs(repository=repository)
221 bmp = self.factory.makeBranchMergeProposalForGit(target_ref=ref)
222 self.assertEqual([bmp], list(repository.getMergeProposals()))
223
218224
219class TestGitIdentityMixin(TestCaseWithFactory):225class TestGitIdentityMixin(TestCaseWithFactory):
220 """Test the defaults and identities provided by GitIdentityMixin."""226 """Test the defaults and identities provided by GitIdentityMixin."""