← Back to team overview

launchpad-reviewers team mailing list archive

Re: [Merge] lp:~cjwatson/launchpad/git-mp-move-outside-ref into lp:launchpad

 

Review: Approve code



Diff comments:

> === modified file 'lib/lp/code/browser/configure.zcml'
> --- lib/lp/code/browser/configure.zcml	2015-05-19 11:31:59 +0000
> +++ lib/lp/code/browser/configure.zcml	2015-05-26 07:58:07 +0000
> @@ -253,7 +253,7 @@
>      <browser:url
>          for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
>          path_expression="string:+merge/${id}"
> -        attribute_to_parent="merge_source"
> +        attribute_to_parent="parent"
>          rootsite="code"/>
>      <browser:page
>          for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposalListingBatchNavigator"
> 
> === modified file 'lib/lp/code/browser/gitref.py'
> --- lib/lp/code/browser/gitref.py	2015-05-05 10:15:19 +0000
> +++ lib/lp/code/browser/gitref.py	2015-05-26 07:58:07 +0000
> @@ -56,6 +56,8 @@
>  from lp.services.webapp.authorization import check_permission
>  
>  
> +# XXX cjwatson 2015-05-26: We can get rid of this after a short while, since
> +# it's just a compatibility redirection.
>  class GitRefNavigation(Navigation):
>  
>      usedfor = IGitRef
> @@ -70,7 +72,7 @@
>              return None
>          for proposal in self.context.landing_targets:
>              if proposal.id == id:
> -                return proposal
> +                return self.redirectSubTree(canonical_url(proposal))
>  
>  
>  class GitRefContextMenu(ContextMenu):
> 
> === modified file 'lib/lp/code/browser/gitrepository.py'
> --- lib/lp/code/browser/gitrepository.py	2015-05-19 11:31:59 +0000
> +++ lib/lp/code/browser/gitrepository.py	2015-05-26 07:58:07 +0000
> @@ -37,6 +37,7 @@
>      Link,
>      Navigation,
>      NavigationMenu,
> +    stepthrough,
>      stepto,
>      )
>  from lp.services.webapp.authorization import (
> @@ -88,6 +89,18 @@
>                  return ref
>          raise NotFoundError
>  
> +    @stepthrough("+merge")
> +    def traverse_merge_proposal(self, id):
> +        """Traverse to an `IBranchMergeProposal`."""
> +        try:
> +            id = int(id)
> +        except ValueError:
> +            # Not a number.
> +            return None
> +        for proposal in self.context.landing_targets:
> +            if proposal.id == id:
> +                return proposal

I know it's just copying existing code, but perhaps this is an opportunity to make this (and the Bazaar case) not complete garbage.

> +
>  
>  class GitRepositoryEditMenu(NavigationMenu):
>      """Edit menu for `IGitRepository`."""
> 
> === modified file 'lib/lp/code/interfaces/branchmergeproposal.py'
> --- lib/lp/code/interfaces/branchmergeproposal.py	2015-04-22 14:52:10 +0000
> +++ lib/lp/code/interfaces/branchmergeproposal.py	2015-05-26 07:58:07 +0000
> @@ -215,6 +215,10 @@
>      merge_prerequisite = Attribute(
>          "The branch that the source branch branched from (VCS-agnostic).")
>  
> +    parent = Attribute(
> +        "The parent object for use in navigation: source branch for Bazaar, "
> +        "or source repository for Git.")
> +
>  
>  class IBranchMergeProposalView(Interface):
>  
> 
> === modified file 'lib/lp/code/model/branchmergeproposal.py'
> --- lib/lp/code/model/branchmergeproposal.py	2015-05-13 09:36:02 +0000
> +++ lib/lp/code/model/branchmergeproposal.py	2015-05-26 07:58:07 +0000
> @@ -283,6 +283,13 @@
>          else:
>              return self.prerequisite_git_ref
>  
> +    @property
> +    def parent(self):
> +        if self.source_branch is not None:
> +            return self.source_branch
> +        else:
> +            return self.source_git_repository
> +
>      description = StringCol(default=None)
>  
>      whiteboard = StringCol(default=None)
> 
> === modified file 'lib/lp/code/model/tests/test_branchmergeproposal.py'
> --- lib/lp/code/model/tests/test_branchmergeproposal.py	2015-04-21 16:53:45 +0000
> +++ lib/lp/code/model/tests/test_branchmergeproposal.py	2015-05-26 07:58:07 +0000
> @@ -96,28 +96,43 @@
>          verifyObject(IBranchMergeProposal, bmp)
>  
>  
> -class TestBranchMergeProposalCanonicalUrl(TestCaseWithFactory):
> +class TestBranchMergeProposalCanonicalUrlMixin:
>      """Tests canonical_url for merge proposals."""
>  
>      layer = DatabaseFunctionalLayer
>  
>      def test_BranchMergeProposal_canonical_url_base(self):
> -        # The URL for a merge proposal starts with the source branch.
> -        bmp = self.factory.makeBranchMergeProposal()
> +        # The URL for a merge proposal starts with the parent (source branch
> +        # or source Git repository).
> +        bmp = self._makeBranchMergeProposal()
>          url = canonical_url(bmp)
> -        source_branch_url = canonical_url(bmp.source_branch)
> -        self.assertTrue(url.startswith(source_branch_url))
> +        parent_url = canonical_url(bmp.parent)
> +        self.assertTrue(url.startswith(parent_url))
>  
>      def test_BranchMergeProposal_canonical_url_rest(self):
>          # The rest of the URL for a merge proposal is +merge followed by the
>          # db id.
> -        bmp = self.factory.makeBranchMergeProposal()
> +        bmp = self._makeBranchMergeProposal()
>          url = canonical_url(bmp)
> -        source_branch_url = canonical_url(bmp.source_branch)
> -        rest = url[len(source_branch_url):]
> +        parent_url = canonical_url(bmp.parent)
> +        rest = url[len(parent_url):]
>          self.assertEqual('/+merge/%s' % bmp.id, rest)
>  
>  
> +class TestBranchMergeProposalCanonicalUrlBzr(
> +    TestBranchMergeProposalCanonicalUrlMixin, TestCaseWithFactory):
> +
> +    def _makeBranchMergeProposal(self):
> +        return self.factory.makeBranchMergeProposal()
> +
> +
> +class TestBranchMergeProposalCanonicalUrlGit(
> +    TestBranchMergeProposalCanonicalUrlMixin, TestCaseWithFactory):
> +
> +    def _makeBranchMergeProposal(self):
> +        return self.factory.makeBranchMergeProposalForGit()
> +
> +
>  class TestBranchMergeProposalPrivacy(TestCaseWithFactory):
>      """Ensure that BranchMergeProposal implements privacy."""
>  
> 


-- 
https://code.launchpad.net/~cjwatson/launchpad/git-mp-move-outside-ref/+merge/260105
Your team Launchpad code reviewers is subscribed to branch lp:launchpad.


References