launchpad-reviewers team mailing list archive
-
launchpad-reviewers team
-
Mailing list archive
-
Message #20028
[Merge] lp:~cjwatson/launchpad/git-repository-container into lp:launchpad
Colin Watson has proposed merging lp:~cjwatson/launchpad/git-repository-container into lp:launchpad with lp:~cjwatson/launchpad/refactor-launchpad-container as a prerequisite.
Commit message:
Add ILaunchpadContainer implementation for Git repositories.
Requested reviews:
Launchpad code reviewers (launchpad-reviewers)
For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/git-repository-container/+merge/287413
Add ILaunchpadContainer implementation for Git repositories. It's an easy extension, and we're going to want this for caveats.
--
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~cjwatson/launchpad/git-repository-container into lp:launchpad.
=== modified file 'lib/lp/code/configure.zcml'
--- lib/lp/code/configure.zcml 2016-01-11 19:16:04 +0000
+++ lib/lp/code/configure.zcml 2016-02-28 19:36:09 +0000
@@ -816,6 +816,10 @@
interface="lp.code.interfaces.gitrepository.IGitRepositoryEdit"
set_schema="lp.code.interfaces.gitrepository.IGitRepositoryEditableAttributes" />
</class>
+ <adapter
+ for="lp.code.interfaces.gitrepository.IGitRepository"
+ provides="lp.services.webapp.interfaces.ILaunchpadContainer"
+ factory="lp.code.publisher.LaunchpadGitRepositoryContainer"/>
<subscriber
for="lp.code.interfaces.gitrepository.IGitRepository zope.lifecycleevent.interfaces.IObjectModifiedEvent"
handler="lp.code.model.gitrepository.git_repository_modified"/>
=== modified file 'lib/lp/code/publisher.py'
--- lib/lp/code/publisher.py 2016-02-28 19:36:09 +0000
+++ lib/lp/code/publisher.py 2016-02-28 19:36:09 +0000
@@ -64,3 +64,13 @@
self.context.target.context, ILaunchpadContainer)
if adapter is not None:
yield adapter
+
+
+class LaunchpadGitRepositoryContainer(LaunchpadContainer):
+
+ def getParentContainers(self):
+ """See `ILaunchpadContainer`."""
+ # A repository is within its target.
+ adapter = queryAdapter(self.context.target, ILaunchpadContainer)
+ if adapter is not None:
+ yield adapter
=== modified file 'lib/lp/registry/doc/launchpad-container.txt'
--- lib/lp/registry/doc/launchpad-container.txt 2016-02-28 19:36:09 +0000
+++ lib/lp/registry/doc/launchpad-container.txt 2016-02-28 19:36:09 +0000
@@ -120,3 +120,20 @@
None
>>> ILaunchpadContainer(junk).isWithin('/firefox')
False
+
+
+== Git repositories ==
+
+A Git repository is within its target.
+
+ >>> sample_person = getUtility(IPersonSet).getByName('name12')
+ >>> firefox_git = factory.makeGitRepository(target=firefox)
+ >>> ILaunchpadContainer(firefox_git).isWithin('/firefox')
+ True
+ >>> ILaunchpadContainer(firefox_git).isWithin('/mozilla')
+ True
+
+But it's not within anything other than its target.
+
+ >>> ILaunchpadContainer(firefox_git).isWithin('/ubuntu/+source/evolution')
+ False
Follow ups