Merge lp:~thumper/launchpad/fix-browser-zcml into lp:launchpad

Proposed by Tim Penhey
Status: Merged
Approved by: Paul Hummer
Approved revision: no longer in the source branch.
Merged at revision: 11418
Proposed branch: lp:~thumper/launchpad/fix-browser-zcml
Merge into: lp:launchpad
Diff against target: 1754 lines (+215/-122)
28 files modified
lib/canonical/launchpad/doc/canonical_url_examples.txt (+1/-1)
lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt (+0/-9)
lib/lp/blueprints/templates/specificationbranch-status.pt (+0/-6)
lib/lp/code/browser/branchlisting.py (+7/-5)
lib/lp/code/browser/branchvisibilitypolicy.py (+1/-1)
lib/lp/code/browser/configure.zcml (+122/-15)
lib/lp/code/browser/sourcepackagerecipe.py (+2/-1)
lib/lp/code/browser/sourcepackagerecipelisting.py (+1/-1)
lib/lp/code/browser/tests/test_branchlisting.py (+10/-5)
lib/lp/code/browser/tests/test_branchmergeproposal.py (+0/-13)
lib/lp/code/browser/tests/test_branchmergeproposallisting.py (+2/-1)
lib/lp/code/browser/tests/test_product.py (+6/-15)
lib/lp/code/stories/branches/xx-branch-edit.txt (+14/-13)
lib/lp/code/stories/branches/xx-branch-listings.txt (+1/-1)
lib/lp/code/stories/branches/xx-branch-url-validation.txt (+3/-2)
lib/lp/code/stories/branches/xx-creating-branches.txt (+7/-7)
lib/lp/code/stories/branches/xx-source-package-branches-listing.txt (+1/-1)
lib/lp/code/stories/branches/xx-subscribing-branches.txt (+2/-2)
lib/lp/code/stories/sourcepackagerecipes/xx-recipe-listings.txt (+2/-2)
lib/lp/code/templates/branch-summary-listing.pt (+2/-2)
lib/lp/code/templates/distributionsourcepackage-branches-grouped.pt (+1/-1)
lib/lp/registry/browser/product.py (+1/-1)
lib/lp/registry/browser/productseries.py (+2/-1)
lib/lp/registry/browser/tests/productseries-views.txt (+1/-1)
lib/lp/registry/stories/productseries/xx-productseries-link-branch.txt (+1/-1)
lib/lp/registry/templates/productseries-codesummary.pt (+2/-3)
lib/lp/testing/menu.py (+4/-7)
lib/lp/testing/views.py (+19/-4)
To merge this branch: bzr merge lp:~thumper/launchpad/fix-browser-zcml
Reviewer Review Type Date Requested Status
Paul Hummer (community) Approve
Review via email: mp+33482@code.launchpad.net

Commit message

Limit most branch and review related views to be only on the code subdomain.

Description of the change

This branch adds layer='...' to most of the code browser zcml. There are several places where it is kept off though, like the views needed to show merge proposal info on the bugs domain.

In order to avoid having to pass layer=CodeLayer to the create_initialized_view test helper, I updated it so it could get a rootsite string passed in instead, and it would try to work that out from the canonical url data of the context object so in most cases even that isn't needed.

tests:
  everything code related (everything passes in ec2 right now)

To post a comment you must log in.
Revision history for this message
Paul Hummer (rockstar) wrote :

<mwhudson> 7 >>> canonical_url(getUtility(IBazaarApplication))
<mwhudson> 8 - u'http://launchpad.dev/+code'
<mwhudson> 9 + u'http://code.launchpad.dev/+code'
<mwhudson> the +code there is freaking odd really
<mwhudson> i wonder if it would actually be better to have the root objects be different for each publication
<thumper> mwhudson: probably
<thumper> mwhudson: but somewhat out of scope for this change
<rockstar> thumper, holy balls that's a big diff...
<mwhudson> thumper: yes
<thumper> rockstar: but boring
<rockstar> thumper, might I make a suggestion for the next time?
<thumper> yes
<thumper> rockstar: don't do them all at once?
<rockstar> thumper, yes, for the love of Odin, yes.
<thumper> :)
<rockstar> thumper, here's an example: line 1640-1641 of the diff doesn't look to be along the same lines as the rest of the changes in the branch.
<rockstar> Actually, 1635-1665...
<thumper> rockstar: :)
<thumper> yes, I removed a chunk of code that was showing bad data
<thumper> the person that wrote it thought it was showing the number of new revisions this month for that branch
<thumper> but what it was showing was the number of revisions on all branches this month
<rockstar> thumper, the change makes sense. I just think it would be better to not get lumped in with something that's supposed to be just technical debt.
<rockstar> Is there a bug filed for that change?
<thumper> no
<rockstar> thumper, I think there should be.
* thumper nods

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/canonical/launchpad/doc/canonical_url_examples.txt'
--- lib/canonical/launchpad/doc/canonical_url_examples.txt 2010-07-19 11:58:01 +0000
+++ lib/canonical/launchpad/doc/canonical_url_examples.txt 2010-08-24 02:26:48 +0000
@@ -39,7 +39,7 @@
39The Bazaar homepage.39The Bazaar homepage.
4040
41 >>> canonical_url(getUtility(IBazaarApplication))41 >>> canonical_url(getUtility(IBazaarApplication))
42 u'http://launchpad.dev/+code'42 u'http://code.launchpad.dev/+code'
4343
44The Answer Tracker44The Answer Tracker
4545
4646
=== modified file 'lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt'
--- lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt 2010-01-22 22:29:42 +0000
+++ lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt 2010-08-24 02:26:48 +0000
@@ -103,7 +103,6 @@
103>>> check("/projectgroups/+all", auth=True)103>>> check("/projectgroups/+all", auth=True)
104>>> check("/mozilla")104>>> check("/mozilla")
105>>> check("/mozilla/firefox")105>>> check("/mozilla/firefox")
106>>> check("/mozilla/+branches")
107>>> check_redirect("/mozilla/+translations", status=301)106>>> check_redirect("/mozilla/+translations", status=301)
108>>> check("/mozilla/+translations", host='translations.launchpad.dev')107>>> check("/mozilla/+translations", host='translations.launchpad.dev')
109108
@@ -135,7 +134,6 @@
135134
136>>> check_not_found("/firefox/+milestone")135>>> check_not_found("/firefox/+milestone")
137>>> check("/firefox/+milestone/1.0")136>>> check("/firefox/+milestone/1.0")
138>>> check("/firefox/+branches")
139137
140>>> check("/distros")138>>> check("/distros")
141>>> check("/distros/+add", auth=True)139>>> check("/distros/+add", auth=True)
@@ -378,13 +376,8 @@
378And this is for a person:376And this is for a person:
379377
380>>> check("/~name16/+edit", auth=True)378>>> check("/~name16/+edit", auth=True)
381>>> check("/~name16/+branches")
382>>> check_redirect("/~name12/+branch/gnome-terminal/pushed/", status=301)379>>> check_redirect("/~name12/+branch/gnome-terminal/pushed/", status=301)
383>>> check_redirect("/~name12/+branch/gnome-terminal/pushed/+edit", auth=True, status=301)380>>> check_redirect("/~name12/+branch/gnome-terminal/pushed/+edit", auth=True, status=301)
384>>> check("/~name12/gnome-terminal/pushed/")
385>>> check_not_found("/~name12/+branch/gnome-terminal/fubared/")
386>>> check_not_found("/~name12/gnome-terminal/fubared/")
387>>> check("/~name12/gnome-terminal/pushed/+edit", auth=True)
388>>> check_not_found("/~name16/+bugs/1")381>>> check_not_found("/~name16/+bugs/1")
389>>> check("/~name16/+reportedbugs")382>>> check("/~name16/+reportedbugs")
390>>> check("/~name16/+assignedbugs")383>>> check("/~name16/+assignedbugs")
@@ -408,8 +401,6 @@
408>>> check("/~mark/+packagebugs")401>>> check("/~mark/+packagebugs")
409>>> check("/~mark/+related-software")402>>> check("/~mark/+related-software")
410403
411>>> check("/+code")
412
413>>> check("/builders")404>>> check("/builders")
414>>> check("/builders/bob/")405>>> check("/builders/bob/")
415>>> check_redirect("/+builds", status=301)406>>> check_redirect("/+builds", status=301)
416407
=== modified file 'lib/lp/blueprints/templates/specificationbranch-status.pt'
--- lib/lp/blueprints/templates/specificationbranch-status.pt 2009-09-15 16:00:11 +0000
+++ lib/lp/blueprints/templates/specificationbranch-status.pt 2010-08-24 02:26:48 +0000
@@ -13,12 +13,6 @@
1313
14 <div metal:use-macro="context/@@launchpad_form/form">14 <div metal:use-macro="context/@@launchpad_form/form">
1515
16 <div metal:fill-slot="extra_top">
17 <ul class="branch"
18 tal:content="structure context/branch/@@+product-summary-listing"
19 />
20 </div>
21
22 </div>16 </div>
23 </div>17 </div>
24 </metal:main>18 </metal:main>
2519
=== modified file 'lib/lp/code/browser/branchlisting.py'
--- lib/lp/code/browser/branchlisting.py 2010-08-20 20:31:18 +0000
+++ lib/lp/code/browser/branchlisting.py 2010-08-24 02:26:48 +0000
@@ -943,7 +943,9 @@
943 enabled = self.user.inTeam(self.context)943 enabled = self.user.inTeam(self.context)
944 text = 'Register a branch'944 text = 'Register a branch'
945 summary = 'Register a new Bazaar branch'945 summary = 'Register a new Bazaar branch'
946 return Link('+addbranch', text, summary, icon='add', enabled=enabled)946 return Link(
947 '+addbranch', text, summary, icon='add', enabled=enabled,
948 site='code')
947949
948950
949class PersonProductBranchesMenu(PersonBranchesMenu):951class PersonProductBranchesMenu(PersonBranchesMenu):
@@ -1104,12 +1106,12 @@
1104 def branch_add(self):1106 def branch_add(self):
1105 text = 'Register a branch'1107 text = 'Register a branch'
1106 summary = 'Register a new Bazaar branch for this project'1108 summary = 'Register a new Bazaar branch for this project'
1107 return Link('+addbranch', text, summary, icon='add')1109 return Link('+addbranch', text, summary, icon='add', site='code')
11081110
1109 def list_branches(self):1111 def list_branches(self):
1110 text = 'List branches'1112 text = 'List branches'
1111 summary = 'List the branches for this project'1113 summary = 'List the branches for this project'
1112 return Link('+branches', text, summary, icon='add')1114 return Link('+branches', text, summary, icon='add', site='code')
11131115
1114 @cachedproperty1116 @cachedproperty
1115 def active_review_count(self):1117 def active_review_count(self):
@@ -1122,7 +1124,7 @@
1122 self.active_review_count,1124 self.active_review_count,
1123 'active review or unmerged proposal',1125 'active review or unmerged proposal',
1124 'active reviews or unmerged proposals')1126 'active reviews or unmerged proposals')
1125 return Link('+activereviews', text)1127 return Link('+activereviews', text, site='code')
11261128
1127 @enabled_with_permission('launchpad.Commercial')1129 @enabled_with_permission('launchpad.Commercial')
1128 def branch_visibility(self):1130 def branch_visibility(self):
@@ -1131,7 +1133,7 @@
11311133
1132 def code_import(self):1134 def code_import(self):
1133 text = 'Import a branch'1135 text = 'Import a branch'
1134 return Link('+new-import', text, icon='add')1136 return Link('+new-import', text, icon='add', site='code')
11351137
11361138
1137class ProductBranchListingView(BranchListingView):1139class ProductBranchListingView(BranchListingView):
11381140
=== modified file 'lib/lp/code/browser/branchvisibilitypolicy.py'
--- lib/lp/code/browser/branchvisibilitypolicy.py 2010-08-20 20:31:18 +0000
+++ lib/lp/code/browser/branchvisibilitypolicy.py 2010-08-24 02:26:48 +0000
@@ -55,7 +55,7 @@
5555
56 @property56 @property
57 def next_url(self):57 def next_url(self):
58 return canonical_url(self.context) + '/+branchvisibility'58 return canonical_url(self.context, view_name='+branchvisibility')
5959
60 cancel_url = next_url60 cancel_url = next_url
6161
6262
=== modified file 'lib/lp/code/browser/configure.zcml'
--- lib/lp/code/browser/configure.zcml 2010-08-09 19:49:03 +0000
+++ lib/lp/code/browser/configure.zcml 2010-08-24 02:26:48 +0000
@@ -37,6 +37,7 @@
37 />37 />
38 <browser:page38 <browser:page
39 for="canonical.launchpad.webapp.interfaces.ILaunchpadApplication"39 for="canonical.launchpad.webapp.interfaces.ILaunchpadApplication"
40 layer="lp.code.publisher.CodeLayer"
40 name="+recently-registered-branches"41 name="+recently-registered-branches"
41 class="lp.code.browser.branchlisting.RecentlyRegisteredBranchesView"42 class="lp.code.browser.branchlisting.RecentlyRegisteredBranchesView"
42 template="../templates/branch-listing-cross-product.pt"43 template="../templates/branch-listing-cross-product.pt"
@@ -44,6 +45,7 @@
44 />45 />
45 <browser:page46 <browser:page
46 for="canonical.launchpad.webapp.interfaces.ILaunchpadApplication"47 for="canonical.launchpad.webapp.interfaces.ILaunchpadApplication"
48 layer="lp.code.publisher.CodeLayer"
47 name="+recently-imported-branches"49 name="+recently-imported-branches"
48 class="lp.code.browser.branchlisting.RecentlyImportedBranchesView"50 class="lp.code.browser.branchlisting.RecentlyImportedBranchesView"
49 template="../templates/branch-listing-cross-product.pt"51 template="../templates/branch-listing-cross-product.pt"
@@ -51,6 +53,7 @@
51 />53 />
52 <browser:page54 <browser:page
53 for="canonical.launchpad.webapp.interfaces.ILaunchpadApplication"55 for="canonical.launchpad.webapp.interfaces.ILaunchpadApplication"
56 layer="lp.code.publisher.CodeLayer"
54 name="+recently-changed-branches"57 name="+recently-changed-branches"
55 class="lp.code.browser.branchlisting.RecentlyChangedBranchesView"58 class="lp.code.browser.branchlisting.RecentlyChangedBranchesView"
56 template="../templates/branch-listing-cross-product.pt"59 template="../templates/branch-listing-cross-product.pt"
@@ -72,6 +75,7 @@
72 rootsite="code"/>75 rootsite="code"/>
73 <browser:page76 <browser:page
74 for="lp.code.interfaces.codereviewvote.ICodeReviewVoteReference"77 for="lp.code.interfaces.codereviewvote.ICodeReviewVoteReference"
78 layer="lp.code.publisher.CodeLayer"
75 name="+reassign"79 name="+reassign"
76 class="lp.code.browser.codereviewvote.CodeReviewVoteReassign"80 class="lp.code.browser.codereviewvote.CodeReviewVoteReassign"
77 facet="branches"81 facet="branches"
@@ -90,6 +94,7 @@
90 layer="lp.code.publisher.CodeLayer"/>94 layer="lp.code.publisher.CodeLayer"/>
91 <browser:page95 <browser:page
92 for="lp.code.interfaces.codeimportmachine.ICodeImportMachine"96 for="lp.code.interfaces.codeimportmachine.ICodeImportMachine"
97 layer="lp.code.publisher.CodeLayer"
93 class="lp.code.browser.codeimportmachine.CodeImportMachineView"98 class="lp.code.browser.codeimportmachine.CodeImportMachineView"
94 name="+index"99 name="+index"
95 template="../templates/codeimport-machine-index.pt"100 template="../templates/codeimport-machine-index.pt"
@@ -99,8 +104,7 @@
99 facet="branches">104 facet="branches">
100 <browser:navigation105 <browser:navigation
101 module="lp.code.browser.codeimportmachine"106 module="lp.code.browser.codeimportmachine"
102 classes="107 classes="CodeImportMachineSetNavigation"/>
103 CodeImportMachineSetNavigation"/>
104 <browser:url108 <browser:url
105 for="lp.code.interfaces.codeimportmachine.ICodeImportMachineSet"109 for="lp.code.interfaces.codeimportmachine.ICodeImportMachineSet"
106 path_expression="string:+machines"110 path_expression="string:+machines"
@@ -112,6 +116,7 @@
112 layer="lp.code.publisher.CodeLayer"/>116 layer="lp.code.publisher.CodeLayer"/>
113 <browser:page117 <browser:page
114 for="lp.code.interfaces.codeimportmachine.ICodeImportMachineSet"118 for="lp.code.interfaces.codeimportmachine.ICodeImportMachineSet"
119 layer="lp.code.publisher.CodeLayer"
115 class="lp.code.browser.codeimportmachine.CodeImportMachineSetView"120 class="lp.code.browser.codeimportmachine.CodeImportMachineSetView"
116 name="+index"121 name="+index"
117 template="../templates/codeimport-machines.pt"122 template="../templates/codeimport-machines.pt"
@@ -123,17 +128,19 @@
123 attribute_to_parent="branch"/>128 attribute_to_parent="branch"/>
124 <browser:navigation129 <browser:navigation
125 module="lp.code.browser.branchref"130 module="lp.code.browser.branchref"
126 classes="131 classes="BranchRefNavigation"/>
127 BranchRefNavigation"/>
128 <browser:url132 <browser:url
129 for="canonical.launchpad.interfaces.IBazaarApplication"133 for="canonical.launchpad.interfaces.IBazaarApplication"
130 path_expression="string:+code"134 path_expression="string:+code"
131 parent_utility="canonical.launchpad.interfaces.ILaunchpadRoot"/>135 parent_utility="canonical.launchpad.interfaces.ILaunchpadRoot"
136 rootsite="code"/>
132 <browser:defaultView137 <browser:defaultView
133 for="canonical.launchpad.interfaces.IBazaarApplication"138 for="canonical.launchpad.interfaces.IBazaarApplication"
139 layer="lp.code.publisher.CodeLayer"
134 name="+index"/>140 name="+index"/>
135 <browser:pages141 <browser:pages
136 for="canonical.launchpad.interfaces.IBazaarApplication"142 for="canonical.launchpad.interfaces.IBazaarApplication"
143 layer="lp.code.publisher.CodeLayer"
137 permission="zope.Public"144 permission="zope.Public"
138 class="lp.code.browser.bazaar.BazaarApplicationView"145 class="lp.code.browser.bazaar.BazaarApplicationView"
139 facet="branches">146 facet="branches">
@@ -143,16 +150,17 @@
143 </browser:pages>150 </browser:pages>
144 <browser:page151 <browser:page
145 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"152 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
153 layer="lp.code.publisher.CodeLayer"
146 name="+hierarchy"154 name="+hierarchy"
147 class="lp.code.browser.branch.BranchHierarchy"155 class="lp.code.browser.branch.BranchHierarchy"
148 template="../../app/templates/launchpad-hierarchy.pt"156 template="../../app/templates/launchpad-hierarchy.pt"
149 permission="zope.Public"/>157 permission="zope.Public"/>
150 <browser:navigation158 <browser:navigation
151 module="lp.code.browser.branchmergeproposal"159 module="lp.code.browser.branchmergeproposal"
152 classes="160 classes="BranchMergeProposalNavigation"/>
153 BranchMergeProposalNavigation"/>
154 <browser:defaultView161 <browser:defaultView
155 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"162 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
163 layer="lp.code.publisher.CodeLayer"
156 name="+index"/>164 name="+index"/>
157165
158 <!-- No view needed -->166 <!-- No view needed -->
@@ -170,6 +178,7 @@
170178
171 <browser:pages179 <browser:pages
172 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"180 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
181 layer="lp.code.publisher.CodeLayer"
173 class="lp.code.browser.branchmergeproposal.BranchMergeProposalView"182 class="lp.code.browser.branchmergeproposal.BranchMergeProposalView"
174 facet="branches"183 facet="branches"
175 permission="launchpad.View">184 permission="launchpad.View">
@@ -197,6 +206,7 @@
197 </browser:pages>206 </browser:pages>
198 <browser:pages207 <browser:pages
199 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"208 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
209 layer="lp.code.publisher.CodeLayer"
200 class="lp.code.browser.branchmergeproposal.BranchMergeProposalEditView"210 class="lp.code.browser.branchmergeproposal.BranchMergeProposalEditView"
201 facet="branches"211 facet="branches"
202 permission="launchpad.Edit">212 permission="launchpad.Edit">
@@ -207,6 +217,7 @@
207 <browser:page217 <browser:page
208 name="+edit-commit-message"218 name="+edit-commit-message"
209 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"219 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
220 layer="lp.code.publisher.CodeLayer"
210 class="lp.code.browser.branchmergeproposal.BranchMergeProposalCommitMessageEditView"221 class="lp.code.browser.branchmergeproposal.BranchMergeProposalCommitMessageEditView"
211 facet="branches"222 facet="branches"
212 permission="launchpad.Edit"223 permission="launchpad.Edit"
@@ -214,6 +225,7 @@
214 <browser:page225 <browser:page
215 name="+edit-description"226 name="+edit-description"
216 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"227 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
228 layer="lp.code.publisher.CodeLayer"
217 class="lp.code.browser.branchmergeproposal.BranchMergeProposalDescriptionEditView"229 class="lp.code.browser.branchmergeproposal.BranchMergeProposalDescriptionEditView"
218 facet="branches"230 facet="branches"
219 permission="launchpad.Edit"231 permission="launchpad.Edit"
@@ -221,6 +233,7 @@
221 <browser:page233 <browser:page
222 name="+delete"234 name="+delete"
223 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"235 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
236 layer="lp.code.publisher.CodeLayer"
224 class="lp.code.browser.branchmergeproposal.BranchMergeProposalDeleteView"237 class="lp.code.browser.branchmergeproposal.BranchMergeProposalDeleteView"
225 facet="branches"238 facet="branches"
226 permission="launchpad.Edit"239 permission="launchpad.Edit"
@@ -228,6 +241,7 @@
228 <browser:page241 <browser:page
229 name="+edit-status"242 name="+edit-status"
230 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"243 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
244 layer="lp.code.publisher.CodeLayer"
231 class="lp.code.browser.branchmergeproposal.BranchMergeProposalChangeStatusView"245 class="lp.code.browser.branchmergeproposal.BranchMergeProposalChangeStatusView"
232 facet="branches"246 facet="branches"
233 permission="launchpad.Edit"247 permission="launchpad.Edit"
@@ -235,6 +249,7 @@
235 <browser:page249 <browser:page
236 name="+request-review"250 name="+request-review"
237 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"251 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
252 layer="lp.code.publisher.CodeLayer"
238 class="lp.code.browser.branchmergeproposal.BranchMergeProposalRequestReviewView"253 class="lp.code.browser.branchmergeproposal.BranchMergeProposalRequestReviewView"
239 facet="branches"254 facet="branches"
240 permission="launchpad.Edit"255 permission="launchpad.Edit"
@@ -242,6 +257,7 @@
242 <browser:page257 <browser:page
243 name="+resubmit"258 name="+resubmit"
244 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"259 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
260 layer="lp.code.publisher.CodeLayer"
245 class="lp.code.browser.branchmergeproposal.BranchMergeProposalResubmitView"261 class="lp.code.browser.branchmergeproposal.BranchMergeProposalResubmitView"
246 facet="branches"262 facet="branches"
247 permission="launchpad.Edit"263 permission="launchpad.Edit"
@@ -249,6 +265,7 @@
249 <browser:page265 <browser:page
250 name="+enqueue"266 name="+enqueue"
251 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"267 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
268 layer="lp.code.publisher.CodeLayer"
252 class="lp.code.browser.branchmergeproposal.BranchMergeProposalEnqueueView"269 class="lp.code.browser.branchmergeproposal.BranchMergeProposalEnqueueView"
253 facet="branches"270 facet="branches"
254 permission="launchpad.Edit"271 permission="launchpad.Edit"
@@ -256,6 +273,7 @@
256 <browser:page273 <browser:page
257 name="+dequeue"274 name="+dequeue"
258 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"275 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
276 layer="lp.code.publisher.CodeLayer"
259 class="lp.code.browser.branchmergeproposal.BranchMergeProposalDequeueView"277 class="lp.code.browser.branchmergeproposal.BranchMergeProposalDequeueView"
260 facet="branches"278 facet="branches"
261 permission="launchpad.Edit"279 permission="launchpad.Edit"
@@ -263,6 +281,7 @@
263 <browser:page281 <browser:page
264 name="+dequeue-inline"282 name="+dequeue-inline"
265 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"283 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
284 layer="lp.code.publisher.CodeLayer"
266 class="lp.code.browser.branchmergeproposal.BranchMergeProposalInlineDequeueView"285 class="lp.code.browser.branchmergeproposal.BranchMergeProposalInlineDequeueView"
267 facet="branches"286 facet="branches"
268 permission="launchpad.Edit"287 permission="launchpad.Edit"
@@ -270,6 +289,7 @@
270 <browser:page289 <browser:page
271 name="+jump-queue"290 name="+jump-queue"
272 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"291 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
292 layer="lp.code.publisher.CodeLayer"
273 class="lp.code.browser.branchmergeproposal.BranchMergeProposalJumpQueueView"293 class="lp.code.browser.branchmergeproposal.BranchMergeProposalJumpQueueView"
274 facet="branches"294 facet="branches"
275 permission="launchpad.Edit"295 permission="launchpad.Edit"
@@ -277,6 +297,7 @@
277 <browser:page297 <browser:page
278 name="+merged"298 name="+merged"
279 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"299 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
300 layer="lp.code.publisher.CodeLayer"
280 class="lp.code.browser.branchmergeproposal.BranchMergeProposalMergedView"301 class="lp.code.browser.branchmergeproposal.BranchMergeProposalMergedView"
281 facet="branches"302 facet="branches"
282 permission="launchpad.Edit"303 permission="launchpad.Edit"
@@ -291,6 +312,7 @@
291 <browser:page312 <browser:page
292 name="+pagelet-subscribers"313 name="+pagelet-subscribers"
293 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"314 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
315 layer="lp.code.publisher.CodeLayer"
294 class="lp.code.browser.branchmergeproposal.BranchMergeProposalSubscribersView"316 class="lp.code.browser.branchmergeproposal.BranchMergeProposalSubscribersView"
295 facet="branches"317 facet="branches"
296 permission="launchpad.View"318 permission="launchpad.View"
@@ -298,6 +320,7 @@
298 <browser:page320 <browser:page
299 name="+comment"321 name="+comment"
300 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"322 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
323 layer="lp.code.publisher.CodeLayer"
301 class="lp.code.browser.codereviewcomment.CodeReviewCommentAddView"324 class="lp.code.browser.codereviewcomment.CodeReviewCommentAddView"
302 facet="branches"325 facet="branches"
303 permission="launchpad.AnyPerson"326 permission="launchpad.AnyPerson"
@@ -305,6 +328,7 @@
305 <browser:page328 <browser:page
306 name="+review"329 name="+review"
307 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"330 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
331 layer="lp.code.publisher.CodeLayer"
308 class="lp.code.browser.branchmergeproposal.BranchMergeProposalAddVoteView"332 class="lp.code.browser.branchmergeproposal.BranchMergeProposalAddVoteView"
309 facet="branches"333 facet="branches"
310 permission="launchpad.AnyPerson"334 permission="launchpad.AnyPerson"
@@ -316,11 +340,13 @@
316 rootsite="code"/>340 rootsite="code"/>
317 <browser:page341 <browser:page
318 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposalListingBatchNavigator"342 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposalListingBatchNavigator"
343 layer="lp.code.publisher.CodeLayer"
319 name="+listing"344 name="+listing"
320 template="../templates/branchmergeproposal-listing.pt"345 template="../templates/branchmergeproposal-listing.pt"
321 permission="zope.Public"/>346 permission="zope.Public"/>
322 <browser:page347 <browser:page
323 for="*"348 for="*"
349 layer="lp.code.publisher.CodeLayer"
324 name="+bmp-macros"350 name="+bmp-macros"
325 permission="zope.Public"351 permission="zope.Public"
326 template="../templates/branchmergeproposal-macros.pt"/>352 template="../templates/branchmergeproposal-macros.pt"/>
@@ -332,16 +358,19 @@
332 module="lp.code.browser.branchmergeproposal"/>358 module="lp.code.browser.branchmergeproposal"/>
333 <browser:page359 <browser:page
334 for="lp.code.interfaces.branchsubscription.IBranchSubscription"360 for="lp.code.interfaces.branchsubscription.IBranchSubscription"
361 layer="lp.code.publisher.CodeLayer"
335 name="+hierarchy"362 name="+hierarchy"
336 class="lp.code.browser.branch.BranchHierarchy"363 class="lp.code.browser.branch.BranchHierarchy"
337 template="../../app/templates/launchpad-hierarchy.pt"364 template="../../app/templates/launchpad-hierarchy.pt"
338 permission="zope.Public"/>365 permission="zope.Public"/>
339 <browser:defaultView366 <browser:defaultView
340 for="lp.code.interfaces.branchsubscription.IBranchSubscription"367 for="lp.code.interfaces.branchsubscription.IBranchSubscription"
368 layer="lp.code.publisher.CodeLayer"
341 name="+index"/>369 name="+index"/>
342 <browser:page370 <browser:page
343 name="+index"371 name="+index"
344 for="lp.code.interfaces.branchsubscription.IBranchSubscription"372 for="lp.code.interfaces.branchsubscription.IBranchSubscription"
373 layer="lp.code.publisher.CodeLayer"
345 class="lp.code.browser.branchsubscription.BranchSubscriptionEditView"374 class="lp.code.browser.branchsubscription.BranchSubscriptionEditView"
346 facet="branches"375 facet="branches"
347 permission="launchpad.Edit"376 permission="launchpad.Edit"
@@ -353,22 +382,24 @@
353 rootsite="code"/>382 rootsite="code"/>
354 <browser:page383 <browser:page
355 for="lp.code.interfaces.branch.IBranch"384 for="lp.code.interfaces.branch.IBranch"
385 layer="lp.code.publisher.CodeLayer"
356 name="+hierarchy"386 name="+hierarchy"
357 class="lp.code.browser.branch.BranchHierarchy"387 class="lp.code.browser.branch.BranchHierarchy"
358 template="../../app/templates/launchpad-hierarchy.pt"388 template="../../app/templates/launchpad-hierarchy.pt"
359 permission="zope.Public"/>389 permission="zope.Public"/>
360 <browser:defaultView390 <browser:defaultView
361 for="lp.code.interfaces.branch.IBranch"391 for="lp.code.interfaces.branch.IBranch"
392 layer="lp.code.publisher.CodeLayer"
362 name="+index"/>393 name="+index"/>
363 <browser:url394 <browser:url
364 for="lp.code.interfaces.branch.IBranch"395 for="lp.code.interfaces.branch.IBranch"
365 urldata="lp.code.browser.branch.BranchURL"/>396 urldata="lp.code.browser.branch.BranchURL"/>
366 <browser:navigation397 <browser:navigation
367 module="lp.code.browser.branch"398 module="lp.code.browser.branch"
368 classes="399 classes="BranchNavigation"/>
369 BranchNavigation"/>
370 <browser:pages400 <browser:pages
371 for="lp.code.interfaces.branch.IBranch"401 for="lp.code.interfaces.branch.IBranch"
402 layer="lp.code.publisher.CodeLayer"
372 facet="branches"403 facet="branches"
373 permission="zope.Public"404 permission="zope.Public"
374 class="lp.code.browser.branch.BranchView">405 class="lp.code.browser.branch.BranchView">
@@ -410,6 +441,7 @@
410 </browser:pages>441 </browser:pages>
411 <browser:pages442 <browser:pages
412 for="lp.code.interfaces.branch.IBranch"443 for="lp.code.interfaces.branch.IBranch"
444 layer="lp.code.publisher.CodeLayer"
413 permission="zope.Public">445 permission="zope.Public">
414 <browser:page446 <browser:page
415 name="+portlet-privacy"447 name="+portlet-privacy"
@@ -421,6 +453,7 @@
421 <browser:page453 <browser:page
422 name="+portlet-subscribers"454 name="+portlet-subscribers"
423 for="lp.code.interfaces.branch.IBranch"455 for="lp.code.interfaces.branch.IBranch"
456 layer="lp.code.publisher.CodeLayer"
424 class="lp.code.browser.branch.BranchSubscriptionsView"457 class="lp.code.browser.branch.BranchSubscriptionsView"
425 facet="branches"458 facet="branches"
426 permission="zope.Public"459 permission="zope.Public"
@@ -428,11 +461,13 @@
428 <browser:page461 <browser:page
429 name="+branch-portlet-subscriber-content"462 name="+branch-portlet-subscriber-content"
430 for="lp.code.interfaces.branch.IBranch"463 for="lp.code.interfaces.branch.IBranch"
464 layer="lp.code.publisher.CodeLayer"
431 class="lp.code.browser.branchsubscription.BranchPortletSubscribersContent"465 class="lp.code.browser.branchsubscription.BranchPortletSubscribersContent"
432 template="../templates/branch-portlet-subscribers-content.pt"466 template="../templates/branch-portlet-subscribers-content.pt"
433 permission="zope.Public" />467 permission="zope.Public" />
434 <browser:pages468 <browser:pages
435 for="lp.code.interfaces.branch.IBranch"469 for="lp.code.interfaces.branch.IBranch"
470 layer="lp.code.publisher.CodeLayer"
436 facet="overview"471 facet="overview"
437 permission="zope.Public"472 permission="zope.Public"
438 class="lp.code.browser.branch.BranchInProductView">473 class="lp.code.browser.branch.BranchInProductView">
@@ -442,11 +477,13 @@
442 </browser:pages>477 </browser:pages>
443 <browser:page478 <browser:page
444 for="lp.code.interfaces.branch.IBranch"479 for="lp.code.interfaces.branch.IBranch"
480 layer="lp.code.publisher.CodeLayer"
445 name="+macros"481 name="+macros"
446 permission="zope.Public"482 permission="zope.Public"
447 template="../templates/branch-macros.pt"/>483 template="../templates/branch-macros.pt"/>
448 <browser:page484 <browser:page
449 for="*"485 for="*"
486 layer="lp.code.publisher.CodeLayer"
450 name="branch-form-macros"487 name="branch-form-macros"
451 permission="zope.Public"488 permission="zope.Public"
452 template="../templates/branch-form-macros.pt"/>489 template="../templates/branch-form-macros.pt"/>
@@ -454,12 +491,14 @@
454 name="+whiteboard"491 name="+whiteboard"
455 for="lp.code.interfaces.branch.IBranch"492 for="lp.code.interfaces.branch.IBranch"
456 class="lp.code.browser.branch.BranchEditWhiteboardView"493 class="lp.code.browser.branch.BranchEditWhiteboardView"
494 layer="lp.code.publisher.CodeLayer"
457 facet="branches"495 facet="branches"
458 permission="launchpad.AnyPerson"496 permission="launchpad.AnyPerson"
459 template="../../app/templates/generic-edit.pt"/>497 template="../../app/templates/generic-edit.pt"/>
460 <browser:page498 <browser:page
461 name="+edit-status"499 name="+edit-status"
462 for="lp.code.interfaces.branch.IBranch"500 for="lp.code.interfaces.branch.IBranch"
501 layer="lp.code.publisher.CodeLayer"
463 class="lp.code.browser.branch.BranchEditStatusView"502 class="lp.code.browser.branch.BranchEditStatusView"
464 facet="branches"503 facet="branches"
465 permission="launchpad.Edit"504 permission="launchpad.Edit"
@@ -467,6 +506,7 @@
467 <browser:page506 <browser:page
468 name="+edit"507 name="+edit"
469 for="lp.code.interfaces.branch.IBranch"508 for="lp.code.interfaces.branch.IBranch"
509 layer="lp.code.publisher.CodeLayer"
470 class="lp.code.browser.branch.BranchEditView"510 class="lp.code.browser.branch.BranchEditView"
471 facet="branches"511 facet="branches"
472 permission="launchpad.Edit"512 permission="launchpad.Edit"
@@ -474,6 +514,7 @@
474 <browser:page514 <browser:page
475 name="+upgrade"515 name="+upgrade"
476 for="lp.code.interfaces.branch.IBranch"516 for="lp.code.interfaces.branch.IBranch"
517 layer="lp.code.publisher.CodeLayer"
477 class="lp.code.browser.branch.BranchUpgradeView"518 class="lp.code.browser.branch.BranchUpgradeView"
478 facet="branches"519 facet="branches"
479 permission="launchpad.Edit"520 permission="launchpad.Edit"
@@ -481,6 +522,7 @@
481 <browser:page522 <browser:page
482 name="+reviewer"523 name="+reviewer"
483 for="lp.code.interfaces.branch.IBranch"524 for="lp.code.interfaces.branch.IBranch"
525 layer="lp.code.publisher.CodeLayer"
484 class="lp.code.browser.branch.BranchReviewerEditView"526 class="lp.code.browser.branch.BranchReviewerEditView"
485 facet="branches"527 facet="branches"
486 permission="launchpad.Edit"528 permission="launchpad.Edit"
@@ -488,6 +530,7 @@
488 <browser:page530 <browser:page
489 name="+edit-import"531 name="+edit-import"
490 for="lp.code.interfaces.branch.IBranch"532 for="lp.code.interfaces.branch.IBranch"
533 layer="lp.code.publisher.CodeLayer"
491 class="lp.code.browser.codeimport.CodeImportEditView"534 class="lp.code.browser.codeimport.CodeImportEditView"
492 facet="branches"535 facet="branches"
493 permission="launchpad.Edit"536 permission="launchpad.Edit"
@@ -495,12 +538,14 @@
495 <browser:page538 <browser:page
496 name="+delete"539 name="+delete"
497 for="lp.code.interfaces.branch.IBranch"540 for="lp.code.interfaces.branch.IBranch"
541 layer="lp.code.publisher.CodeLayer"
498 class="lp.code.browser.branch.BranchDeletionView"542 class="lp.code.browser.branch.BranchDeletionView"
499 facet="branches"543 facet="branches"
500 permission="launchpad.Edit"544 permission="launchpad.Edit"
501 template="../templates/branch-delete.pt"/>545 template="../templates/branch-delete.pt"/>
502 <browser:pages546 <browser:pages
503 for="lp.code.interfaces.branch.IBranch"547 for="lp.code.interfaces.branch.IBranch"
548 layer="lp.code.publisher.CodeLayer"
504 class="lp.code.browser.branch.BranchMirrorStatusView"549 class="lp.code.browser.branch.BranchMirrorStatusView"
505 facet="branches"550 facet="branches"
506 permission="launchpad.View">551 permission="launchpad.View">
@@ -514,6 +559,7 @@
514 <browser:page559 <browser:page
515 name="+subscribe"560 name="+subscribe"
516 for="lp.code.interfaces.branch.IBranch"561 for="lp.code.interfaces.branch.IBranch"
562 layer="lp.code.publisher.CodeLayer"
517 class="lp.code.browser.branchsubscription.BranchSubscriptionAddView"563 class="lp.code.browser.branchsubscription.BranchSubscriptionAddView"
518 facet="branches"564 facet="branches"
519 permission="launchpad.AnyPerson"565 permission="launchpad.AnyPerson"
@@ -521,6 +567,7 @@
521 <browser:page567 <browser:page
522 name="+register-merge"568 name="+register-merge"
523 for="lp.code.interfaces.branch.IBranch"569 for="lp.code.interfaces.branch.IBranch"
570 layer="lp.code.publisher.CodeLayer"
524 class="lp.code.browser.branch.RegisterBranchMergeProposalView"571 class="lp.code.browser.branch.RegisterBranchMergeProposalView"
525 facet="branches"572 facet="branches"
526 permission="launchpad.AnyPerson"573 permission="launchpad.AnyPerson"
@@ -528,6 +575,7 @@
528 <browser:page575 <browser:page
529 name="+linkbug"576 name="+linkbug"
530 for="lp.code.interfaces.branch.IBranch"577 for="lp.code.interfaces.branch.IBranch"
578 layer="lp.code.publisher.CodeLayer"
531 class="lp.bugs.browser.bugbranch.BranchLinkToBugView"579 class="lp.bugs.browser.bugbranch.BranchLinkToBugView"
532 facet="branches"580 facet="branches"
533 permission="launchpad.AnyPerson"581 permission="launchpad.AnyPerson"
@@ -535,6 +583,7 @@
535 <browser:page583 <browser:page
536 name="+linkblueprint"584 name="+linkblueprint"
537 for="lp.code.interfaces.branch.IBranch"585 for="lp.code.interfaces.branch.IBranch"
586 layer="lp.code.publisher.CodeLayer"
538 class="lp.blueprints.browser.specificationbranch.BranchLinkToSpecificationView"587 class="lp.blueprints.browser.specificationbranch.BranchLinkToSpecificationView"
539 facet="branches"588 facet="branches"
540 permission="launchpad.AnyPerson"589 permission="launchpad.AnyPerson"
@@ -542,6 +591,7 @@
542 <browser:page591 <browser:page
543 name="+addsubscriber"592 name="+addsubscriber"
544 for="lp.code.interfaces.branch.IBranch"593 for="lp.code.interfaces.branch.IBranch"
594 layer="lp.code.publisher.CodeLayer"
545 class="lp.code.browser.branchsubscription.BranchSubscriptionAddOtherView"595 class="lp.code.browser.branchsubscription.BranchSubscriptionAddOtherView"
546 facet="branches"596 facet="branches"
547 permission="launchpad.AnyPerson"597 permission="launchpad.AnyPerson"
@@ -549,24 +599,28 @@
549 <browser:page599 <browser:page
550 name="+edit-subscription"600 name="+edit-subscription"
551 for="lp.code.interfaces.branch.IBranch"601 for="lp.code.interfaces.branch.IBranch"
602 layer="lp.code.publisher.CodeLayer"
552 class="lp.code.browser.branchsubscription.BranchSubscriptionEditOwnView"603 class="lp.code.browser.branchsubscription.BranchSubscriptionEditOwnView"
553 facet="branches"604 facet="branches"
554 permission="launchpad.AnyPerson"605 permission="launchpad.AnyPerson"
555 template="../templates/branch-edit-subscription.pt"/>606 template="../templates/branch-edit-subscription.pt"/>
556 <browser:page607 <browser:page
557 for="lp.code.interfaces.branch.IBranch"608 for="lp.code.interfaces.branch.IBranch"
609 layer="lp.code.publisher.CodeLayer"
558 class="lp.code.browser.branch.BranchRequestImportView"610 class="lp.code.browser.branch.BranchRequestImportView"
559 name="+request-import"611 name="+request-import"
560 template="../templates/inline-form-only-buttons.pt"612 template="../templates/inline-form-only-buttons.pt"
561 permission="launchpad.AnyPerson"/>613 permission="launchpad.AnyPerson"/>
562 <browser:page614 <browser:page
563 for="lp.code.interfaces.branch.IBranch"615 for="lp.code.interfaces.branch.IBranch"
616 layer="lp.code.publisher.CodeLayer"
564 class="lp.code.browser.branch.TryImportAgainView"617 class="lp.code.browser.branch.TryImportAgainView"
565 name="+try-again"618 name="+try-again"
566 template="../templates/inline-form-only-buttons.pt"619 template="../templates/inline-form-only-buttons.pt"
567 permission="launchpad.AnyPerson"/>620 permission="launchpad.AnyPerson"/>
568 <browser:page621 <browser:page
569 for="lp.code.interfaces.branch.IBranch"622 for="lp.code.interfaces.branch.IBranch"
623 layer="lp.code.publisher.CodeLayer"
570 class="lp.code.browser.branchmergeproposallisting.BranchActiveReviewsView"624 class="lp.code.browser.branchmergeproposallisting.BranchActiveReviewsView"
571 permission="zope.Public"625 permission="zope.Public"
572 name="+activereviews"626 name="+activereviews"
@@ -574,6 +628,7 @@
574 template="../templates/active-reviews.pt"/>628 template="../templates/active-reviews.pt"/>
575 <browser:page629 <browser:page
576 for="lp.code.interfaces.branch.IBranchBatchNavigator"630 for="lp.code.interfaces.branch.IBranchBatchNavigator"
631 layer="lp.code.publisher.CodeLayer"
577 name="+branch-listing"632 name="+branch-listing"
578 template="../templates/branch-listing.pt"633 template="../templates/branch-listing.pt"
579 permission="zope.Public"/>634 permission="zope.Public"/>
@@ -601,6 +656,7 @@
601 <browser:page656 <browser:page
602 name="+spark"657 name="+spark"
603 for="lp.code.interfaces.branch.IBranch"658 for="lp.code.interfaces.branch.IBranch"
659 layer="lp.code.publisher.CodeLayer"
604 class="lp.code.browser.branch.BranchSparkView"660 class="lp.code.browser.branch.BranchSparkView"
605 facet="branches"661 facet="branches"
606 permission="zope.Public"/>662 permission="zope.Public"/>
@@ -611,6 +667,7 @@
611 module="lp.code.browser.branch"/>667 module="lp.code.browser.branch"/>
612 <browser:page668 <browser:page
613 for="lp.code.interfaces.codereviewcomment.ICodeReviewComment"669 for="lp.code.interfaces.codereviewcomment.ICodeReviewComment"
670 layer="lp.code.publisher.CodeLayer"
614 name="+hierarchy"671 name="+hierarchy"
615 class="lp.code.browser.branch.BranchHierarchy"672 class="lp.code.browser.branch.BranchHierarchy"
616 template="../../app/templates/launchpad-hierarchy.pt"673 template="../../app/templates/launchpad-hierarchy.pt"
@@ -622,10 +679,12 @@
622 rootsite="code"/>679 rootsite="code"/>
623 <browser:defaultView680 <browser:defaultView
624 for="lp.code.interfaces.codereviewcomment.ICodeReviewComment"681 for="lp.code.interfaces.codereviewcomment.ICodeReviewComment"
682 layer="lp.code.publisher.CodeLayer"
625 name="+index"/>683 name="+index"/>
626 <browser:pages684 <browser:pages
627 facet="branches"685 facet="branches"
628 for="lp.code.interfaces.codereviewcomment.ICodeReviewComment"686 for="lp.code.interfaces.codereviewcomment.ICodeReviewComment"
687 layer="lp.code.publisher.CodeLayer"
629 class="lp.code.browser.codereviewcomment.CodeReviewCommentView"688 class="lp.code.browser.codereviewcomment.CodeReviewCommentView"
630 permission="zope.Public">689 permission="zope.Public">
631 <browser:page690 <browser:page
@@ -647,6 +706,7 @@
647 <browser:pages706 <browser:pages
648 facet="branches"707 facet="branches"
649 for="lp.code.browser.branchmergeproposal.ICodeReviewNewRevisions"708 for="lp.code.browser.branchmergeproposal.ICodeReviewNewRevisions"
709 layer="lp.code.publisher.CodeLayer"
650 class="lp.code.browser.branchmergeproposal.CodeReviewNewRevisionsView"710 class="lp.code.browser.branchmergeproposal.CodeReviewNewRevisionsView"
651 permission="zope.Public">711 permission="zope.Public">
652 <browser:page712 <browser:page
@@ -660,17 +720,18 @@
660 name="+reply"720 name="+reply"
661 facet="branches"721 facet="branches"
662 for="lp.code.interfaces.codereviewcomment.ICodeReviewComment"722 for="lp.code.interfaces.codereviewcomment.ICodeReviewComment"
723 layer="lp.code.publisher.CodeLayer"
663 class="lp.code.browser.codereviewcomment.CodeReviewCommentAddView"724 class="lp.code.browser.codereviewcomment.CodeReviewCommentAddView"
664 permission="launchpad.AnyPerson"725 permission="launchpad.AnyPerson"
665 template="../templates/codereviewcomment-reply.pt"/>726 template="../templates/codereviewcomment-reply.pt"/>
666 <browser:menus727 <browser:menus
667 classes="728 classes="CodeReviewCommentContextMenu"
668 CodeReviewCommentContextMenu"
669 module="lp.code.browser.codereviewcomment"/>729 module="lp.code.browser.codereviewcomment"/>
670 <facet730 <facet
671 facet="branches">731 facet="branches">
672 <browser:page732 <browser:page
673 for="lp.code.interfaces.codeimport.ICodeImport"733 for="lp.code.interfaces.codeimport.ICodeImport"
734 layer="lp.code.publisher.CodeLayer"
674 name="+macros"735 name="+macros"
675 permission="zope.Public"736 permission="zope.Public"
676 template="../templates/codeimport-macros.pt"/>737 template="../templates/codeimport-macros.pt"/>
@@ -688,18 +749,21 @@
688 layer="lp.code.publisher.CodeLayer"/>749 layer="lp.code.publisher.CodeLayer"/>
689 <browser:page750 <browser:page
690 for="lp.code.interfaces.codeimport.ICodeImportSet"751 for="lp.code.interfaces.codeimport.ICodeImportSet"
752 layer="lp.code.publisher.CodeLayer"
691 class="lp.code.browser.codeimport.CodeImportSetView"753 class="lp.code.browser.codeimport.CodeImportSetView"
692 name="+index"754 name="+index"
693 template="../templates/codeimport-list.pt"755 template="../templates/codeimport-list.pt"
694 permission="zope.Public"/>756 permission="zope.Public"/>
695 <browser:page757 <browser:page
696 for="lp.code.interfaces.codeimport.ICodeImportSet"758 for="lp.code.interfaces.codeimport.ICodeImportSet"
759 layer="lp.code.publisher.CodeLayer"
697 class="lp.code.browser.codeimport.CodeImportNewView"760 class="lp.code.browser.codeimport.CodeImportNewView"
698 name="+new"761 name="+new"
699 template="../templates/codeimport-new.pt"762 template="../templates/codeimport-new.pt"
700 permission="launchpad.AnyPerson"/>763 permission="launchpad.AnyPerson"/>
701 <browser:page764 <browser:page
702 for="lp.registry.interfaces.product.IProduct"765 for="lp.registry.interfaces.product.IProduct"
766 layer="lp.code.publisher.CodeLayer"
703 class="lp.code.browser.codeimport.CodeImportNewView"767 class="lp.code.browser.codeimport.CodeImportNewView"
704 name="+new-import"768 name="+new-import"
705 template="../templates/codeimport-new.pt"769 template="../templates/codeimport-new.pt"
@@ -712,14 +776,14 @@
712 rootsite="code"/>776 rootsite="code"/>
713 <browser:navigation777 <browser:navigation
714 module="lp.code.browser.codeimport"778 module="lp.code.browser.codeimport"
715 classes="779 classes="CodeImportSetNavigation"/>
716 CodeImportSetNavigation"/>
717 <browser:defaultView780 <browser:defaultView
718 for="lp.registry.interfaces.projectgroup.IProjectGroup"781 for="lp.registry.interfaces.projectgroup.IProjectGroup"
719 name="+branches"782 name="+branches"
720 layer="lp.code.publisher.CodeLayer"/>783 layer="lp.code.publisher.CodeLayer"/>
721 <browser:page784 <browser:page
722 for="lp.registry.interfaces.sourcepackage.ISourcePackage"785 for="lp.registry.interfaces.sourcepackage.ISourcePackage"
786 layer="lp.code.publisher.CodeLayer"
723 class="lp.code.browser.branchlisting.SourcePackageBranchesView"787 class="lp.code.browser.branchlisting.SourcePackageBranchesView"
724 permission="zope.Public"788 permission="zope.Public"
725 facet="branches"789 facet="branches"
@@ -727,6 +791,7 @@
727 template="../templates/sourcepackage-branches.pt"/>791 template="../templates/sourcepackage-branches.pt"/>
728 <browser:page792 <browser:page
729 for="lp.registry.interfaces.sourcepackage.ISourcePackage"793 for="lp.registry.interfaces.sourcepackage.ISourcePackage"
794 layer="lp.code.publisher.CodeLayer"
730 class="lp.code.browser.summary.BranchCountSummaryView"795 class="lp.code.browser.summary.BranchCountSummaryView"
731 facet="branches"796 facet="branches"
732 permission="zope.Public"797 permission="zope.Public"
@@ -734,6 +799,7 @@
734 template="../templates/branch-count-summary.pt"/>799 template="../templates/branch-count-summary.pt"/>
735 <browser:page800 <browser:page
736 for="lp.registry.interfaces.distribution.IDistribution"801 for="lp.registry.interfaces.distribution.IDistribution"
802 layer="lp.code.publisher.CodeLayer"
737 class="lp.code.browser.branchlisting.DistributionBranchListingView"803 class="lp.code.browser.branchlisting.DistributionBranchListingView"
738 permission="zope.Public"804 permission="zope.Public"
739 facet="branches"805 facet="branches"
@@ -741,6 +807,7 @@
741 template="../templates/generic-branch-listing.pt"/>807 template="../templates/generic-branch-listing.pt"/>
742 <browser:page808 <browser:page
743 for="lp.registry.interfaces.distribution.IDistribution"809 for="lp.registry.interfaces.distribution.IDistribution"
810 layer="lp.code.publisher.CodeLayer"
744 class="lp.code.browser.summary.BranchCountSummaryView"811 class="lp.code.browser.summary.BranchCountSummaryView"
745 facet="branches"812 facet="branches"
746 permission="zope.Public"813 permission="zope.Public"
@@ -748,6 +815,7 @@
748 template="../templates/branch-count-summary.pt"/>815 template="../templates/branch-count-summary.pt"/>
749 <browser:page816 <browser:page
750 for="lp.registry.interfaces.distroseries.IDistroSeries"817 for="lp.registry.interfaces.distroseries.IDistroSeries"
818 layer="lp.code.publisher.CodeLayer"
751 class="lp.code.browser.branchlisting.DistroSeriesBranchListingView"819 class="lp.code.browser.branchlisting.DistroSeriesBranchListingView"
752 permission="zope.Public"820 permission="zope.Public"
753 facet="branches"821 facet="branches"
@@ -755,6 +823,7 @@
755 template="../templates/generic-branch-listing.pt"/>823 template="../templates/generic-branch-listing.pt"/>
756 <browser:page824 <browser:page
757 for="lp.registry.interfaces.distroseries.IDistroSeries"825 for="lp.registry.interfaces.distroseries.IDistroSeries"
826 layer="lp.code.publisher.CodeLayer"
758 class="lp.code.browser.summary.BranchCountSummaryView"827 class="lp.code.browser.summary.BranchCountSummaryView"
759 facet="branches"828 facet="branches"
760 permission="zope.Public"829 permission="zope.Public"
@@ -762,6 +831,7 @@
762 template="../templates/branch-count-summary.pt"/>831 template="../templates/branch-count-summary.pt"/>
763 <browser:page832 <browser:page
764 for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"833 for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
834 layer="lp.code.publisher.CodeLayer"
765 class="lp.code.browser.branchlisting.DistributionSourcePackageBranchesView"835 class="lp.code.browser.branchlisting.DistributionSourcePackageBranchesView"
766 permission="zope.Public"836 permission="zope.Public"
767 facet="branches"837 facet="branches"
@@ -769,6 +839,7 @@
769 template="../templates/generic-branch-listing.pt"/>839 template="../templates/generic-branch-listing.pt"/>
770 <browser:page840 <browser:page
771 for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"841 for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
842 layer="lp.code.publisher.CodeLayer"
772 class="lp.code.browser.branchlisting.GroupedDistributionSourcePackageBranchesView"843 class="lp.code.browser.branchlisting.GroupedDistributionSourcePackageBranchesView"
773 permission="zope.Public"844 permission="zope.Public"
774 facet="branches"845 facet="branches"
@@ -776,6 +847,7 @@
776 template="../templates/distributionsourcepackage-branches-grouped.pt"/>847 template="../templates/distributionsourcepackage-branches-grouped.pt"/>
777 <browser:page848 <browser:page
778 for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"849 for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
850 layer="lp.code.publisher.CodeLayer"
779 class="lp.code.browser.summary.BranchCountSummaryView"851 class="lp.code.browser.summary.BranchCountSummaryView"
780 facet="branches"852 facet="branches"
781 permission="zope.Public"853 permission="zope.Public"
@@ -783,6 +855,7 @@
783 template="../templates/branch-count-summary.pt"/>855 template="../templates/branch-count-summary.pt"/>
784 <browser:page856 <browser:page
785 for="lp.registry.interfaces.projectgroup.IProjectGroup"857 for="lp.registry.interfaces.projectgroup.IProjectGroup"
858 layer="lp.code.publisher.CodeLayer"
786 class="lp.code.browser.branchlisting.ProjectBranchesView"859 class="lp.code.browser.branchlisting.ProjectBranchesView"
787 facet="branches"860 facet="branches"
788 permission="zope.Public"861 permission="zope.Public"
@@ -790,6 +863,7 @@
790 template="../templates/project-branches.pt"/>863 template="../templates/project-branches.pt"/>
791 <browser:page864 <browser:page
792 for="lp.registry.interfaces.projectgroup.IProjectGroup"865 for="lp.registry.interfaces.projectgroup.IProjectGroup"
866 layer="lp.code.publisher.CodeLayer"
793 class="lp.code.browser.summary.BranchCountSummaryView"867 class="lp.code.browser.summary.BranchCountSummaryView"
794 facet="branches"868 facet="branches"
795 permission="zope.Public"869 permission="zope.Public"
@@ -809,6 +883,7 @@
809 <browser:page883 <browser:page
810 for="lp.registry.interfaces.person.IPerson"884 for="lp.registry.interfaces.person.IPerson"
811 class="lp.code.browser.branchlisting.PersonOwnedBranchesView"885 class="lp.code.browser.branchlisting.PersonOwnedBranchesView"
886 layer="lp.code.publisher.CodeLayer"
812 permission="zope.Public"887 permission="zope.Public"
813 facet="branches"888 facet="branches"
814 name="+branches"889 name="+branches"
@@ -816,6 +891,7 @@
816 <browser:page891 <browser:page
817 for="lp.registry.interfaces.person.IPerson"892 for="lp.registry.interfaces.person.IPerson"
818 class="lp.code.browser.branchlisting.PersonOwnedBranchesView"893 class="lp.code.browser.branchlisting.PersonOwnedBranchesView"
894 layer="lp.code.publisher.CodeLayer"
819 permission="zope.Public"895 permission="zope.Public"
820 facet="branches"896 facet="branches"
821 name="+ownedbranches"897 name="+ownedbranches"
@@ -823,12 +899,14 @@
823 <browser:page899 <browser:page
824 for="lp.registry.interfaces.person.IPerson"900 for="lp.registry.interfaces.person.IPerson"
825 class="lp.code.browser.branchlisting.PersonSubscribedBranchesView"901 class="lp.code.browser.branchlisting.PersonSubscribedBranchesView"
902 layer="lp.code.publisher.CodeLayer"
826 permission="zope.Public"903 permission="zope.Public"
827 facet="branches"904 facet="branches"
828 name="+subscribedbranches"905 name="+subscribedbranches"
829 template="../templates/person-branches.pt"/>906 template="../templates/person-branches.pt"/>
830 <browser:page907 <browser:page
831 for="lp.registry.interfaces.person.IPerson"908 for="lp.registry.interfaces.person.IPerson"
909 layer="lp.code.publisher.CodeLayer"
832 class="lp.code.browser.branchlisting.PersonRegisteredBranchesView"910 class="lp.code.browser.branchlisting.PersonRegisteredBranchesView"
833 permission="zope.Public"911 permission="zope.Public"
834 facet="branches"912 facet="branches"
@@ -836,6 +914,7 @@
836 template="../templates/person-branches.pt"/>914 template="../templates/person-branches.pt"/>
837 <browser:page915 <browser:page
838 for="lp.registry.interfaces.person.IPerson"916 for="lp.registry.interfaces.person.IPerson"
917 layer="lp.code.publisher.CodeLayer"
839 class="lp.code.browser.branchlisting.PersonCodeSummaryView"918 class="lp.code.browser.branchlisting.PersonCodeSummaryView"
840 permission="zope.Public"919 permission="zope.Public"
841 facet="branches"920 facet="branches"
@@ -843,6 +922,7 @@
843 template="../templates/person-codesummary.pt"/>922 template="../templates/person-codesummary.pt"/>
844 <browser:page923 <browser:page
845 for="lp.registry.interfaces.person.IPerson"924 for="lp.registry.interfaces.person.IPerson"
925 layer="lp.code.publisher.CodeLayer"
846 class="lp.code.browser.branchmergeproposallisting.PersonActiveReviewsView"926 class="lp.code.browser.branchmergeproposallisting.PersonActiveReviewsView"
847 permission="zope.Public"927 permission="zope.Public"
848 facet="branches"928 facet="branches"
@@ -851,12 +931,14 @@
851 <browser:page931 <browser:page
852 name="+addbranch"932 name="+addbranch"
853 for="lp.registry.interfaces.person.IPerson"933 for="lp.registry.interfaces.person.IPerson"
934 layer="lp.code.publisher.CodeLayer"
854 class="lp.code.browser.branch.BranchAddView"935 class="lp.code.browser.branch.BranchAddView"
855 facet="branches"936 facet="branches"
856 permission="launchpad.AnyPerson"937 permission="launchpad.AnyPerson"
857 template="../templates/branch-add.pt"/>938 template="../templates/branch-add.pt"/>
858 <browser:page939 <browser:page
859 for="lp.registry.interfaces.person.IPerson"940 for="lp.registry.interfaces.person.IPerson"
941 layer="lp.code.publisher.CodeLayer"
860 class="lp.code.browser.branchlisting.PersonTeamBranchesView"942 class="lp.code.browser.branchlisting.PersonTeamBranchesView"
861 name="+portlet-teambranches"943 name="+portlet-teambranches"
862 template="../templates/person-portlet-teambranches.pt"944 template="../templates/person-portlet-teambranches.pt"
@@ -865,6 +947,7 @@
865947
866 <browser:page948 <browser:page
867 for="lp.registry.interfaces.product.IProduct"949 for="lp.registry.interfaces.product.IProduct"
950 layer="lp.code.publisher.CodeLayer"
868 class="lp.code.browser.branchlisting.ProductBranchesView"951 class="lp.code.browser.branchlisting.ProductBranchesView"
869 facet="branches"952 facet="branches"
870 permission="zope.Public"953 permission="zope.Public"
@@ -872,6 +955,7 @@
872 template="../templates/product-branches.pt"/>955 template="../templates/product-branches.pt"/>
873 <browser:page956 <browser:page
874 for="lp.registry.interfaces.product.IProduct"957 for="lp.registry.interfaces.product.IProduct"
958 layer="lp.code.publisher.CodeLayer"
875 class="lp.code.browser.branchlisting.ProductCodeIndexView"959 class="lp.code.browser.branchlisting.ProductCodeIndexView"
876 facet="branches"960 facet="branches"
877 permission="zope.Public"961 permission="zope.Public"
@@ -879,6 +963,7 @@
879 template="../templates/product-branches.pt"/>963 template="../templates/product-branches.pt"/>
880 <browser:page964 <browser:page
881 for="lp.registry.interfaces.product.IProduct"965 for="lp.registry.interfaces.product.IProduct"
966 layer="lp.code.publisher.CodeLayer"
882 class="lp.code.browser.branchlisting.ProductCodeIndexView"967 class="lp.code.browser.branchlisting.ProductCodeIndexView"
883 facet="branches"968 facet="branches"
884 permission="zope.Public"969 permission="zope.Public"
@@ -886,6 +971,7 @@
886 template="../templates/product-branch-summary.pt"/>971 template="../templates/product-branch-summary.pt"/>
887 <browser:page972 <browser:page
888 for="lp.registry.interfaces.product.IProduct"973 for="lp.registry.interfaces.product.IProduct"
974 layer="lp.code.publisher.CodeLayer"
889 class="lp.code.browser.summary.BranchCountSummaryView"975 class="lp.code.browser.summary.BranchCountSummaryView"
890 facet="branches"976 facet="branches"
891 permission="zope.Public"977 permission="zope.Public"
@@ -895,6 +981,7 @@
895 <browser:page981 <browser:page
896 name="+addbranch"982 name="+addbranch"
897 for="lp.registry.interfaces.product.IProduct"983 for="lp.registry.interfaces.product.IProduct"
984 layer="lp.code.publisher.CodeLayer"
898 class="lp.code.browser.branch.BranchAddView"985 class="lp.code.browser.branch.BranchAddView"
899 facet="branches"986 facet="branches"
900 permission="launchpad.AnyPerson"987 permission="launchpad.AnyPerson"
@@ -903,6 +990,7 @@
903 <browser:page990 <browser:page
904 name="+addbranch"991 name="+addbranch"
905 for="lp.registry.interfaces.productseries.IProductSeries"992 for="lp.registry.interfaces.productseries.IProductSeries"
993 layer="lp.code.publisher.CodeLayer"
906 class="lp.code.browser.branch.BranchAddView"994 class="lp.code.browser.branch.BranchAddView"
907 facet="branches"995 facet="branches"
908 permission="launchpad.AnyPerson"996 permission="launchpad.AnyPerson"
@@ -940,8 +1028,7 @@
9401028
941 <browser:navigation1029 <browser:navigation
942 module="lp.code.browser.diff"1030 module="lp.code.browser.diff"
943 classes="1031 classes="PreviewDiffNavigation"/>
944 PreviewDiffNavigation"/>
9451032
946 <browser:page1033 <browser:page
947 name="+diff"1034 name="+diff"
@@ -961,6 +1048,7 @@
9611048
962 <browser:page1049 <browser:page
963 for="lp.registry.interfaces.personproduct.IPersonProduct"1050 for="lp.registry.interfaces.personproduct.IPersonProduct"
1051 layer="lp.code.publisher.CodeLayer"
964 class="lp.code.browser.branchlisting.PersonProductOwnedBranchesView"1052 class="lp.code.browser.branchlisting.PersonProductOwnedBranchesView"
965 permission="zope.Public"1053 permission="zope.Public"
966 facet="branches"1054 facet="branches"
@@ -969,6 +1057,7 @@
969 />1057 />
970 <browser:page1058 <browser:page
971 for="lp.registry.interfaces.personproduct.IPersonProduct"1059 for="lp.registry.interfaces.personproduct.IPersonProduct"
1060 layer="lp.code.publisher.CodeLayer"
972 class="lp.code.browser.branchlisting.PersonProductSubscribedBranchesView"1061 class="lp.code.browser.branchlisting.PersonProductSubscribedBranchesView"
973 permission="zope.Public"1062 permission="zope.Public"
974 facet="branches"1063 facet="branches"
@@ -977,6 +1066,7 @@
977 />1066 />
978 <browser:page1067 <browser:page
979 for="lp.registry.interfaces.personproduct.IPersonProduct"1068 for="lp.registry.interfaces.personproduct.IPersonProduct"
1069 layer="lp.code.publisher.CodeLayer"
980 class="lp.code.browser.branchlisting.PersonProductRegisteredBranchesView"1070 class="lp.code.browser.branchlisting.PersonProductRegisteredBranchesView"
981 permission="zope.Public"1071 permission="zope.Public"
982 facet="branches"1072 facet="branches"
@@ -985,6 +1075,7 @@
985 />1075 />
986 <browser:page1076 <browser:page
987 for="lp.registry.interfaces.personproduct.IPersonProduct"1077 for="lp.registry.interfaces.personproduct.IPersonProduct"
1078 layer="lp.code.publisher.CodeLayer"
988 class="lp.code.browser.branchmergeproposallisting.PersonProductActiveReviewsView"1079 class="lp.code.browser.branchmergeproposallisting.PersonProductActiveReviewsView"
989 permission="zope.Public"1080 permission="zope.Public"
990 facet="branches"1081 facet="branches"
@@ -993,6 +1084,7 @@
9931084
994 <browser:page1085 <browser:page
995 for="lp.registry.interfaces.personproduct.IPersonProduct"1086 for="lp.registry.interfaces.personproduct.IPersonProduct"
1087 layer="lp.code.publisher.CodeLayer"
996 class="lp.code.browser.branchlisting.PersonProductTeamBranchesView"1088 class="lp.code.browser.branchlisting.PersonProductTeamBranchesView"
997 facet="branches"1089 facet="branches"
998 name="+portlet-teambranches"1090 name="+portlet-teambranches"
@@ -1002,6 +1094,7 @@
10021094
1003 <browser:page1095 <browser:page
1004 for="lp.registry.interfaces.personproduct.IPersonProduct"1096 for="lp.registry.interfaces.personproduct.IPersonProduct"
1097 layer="lp.code.publisher.CodeLayer"
1005 class="lp.code.browser.branchlisting.PersonProductCodeSummaryView"1098 class="lp.code.browser.branchlisting.PersonProductCodeSummaryView"
1006 facet="branches"1099 facet="branches"
1007 name="+codesummary"1100 name="+codesummary"
@@ -1011,6 +1104,7 @@
10111104
1012 <browser:page1105 <browser:page
1013 for="lp.code.interfaces.hasbranches.IHasMergeProposals"1106 for="lp.code.interfaces.hasbranches.IHasMergeProposals"
1107 layer="lp.code.publisher.CodeLayer"
1014 class="lp.code.browser.branchmergeproposallisting.BranchMergeProposalListingView"1108 class="lp.code.browser.branchmergeproposallisting.BranchMergeProposalListingView"
1015 facet="branches"1109 facet="branches"
1016 permission="zope.Public"1110 permission="zope.Public"
@@ -1019,6 +1113,7 @@
10191113
1020 <browser:page1114 <browser:page
1021 for="lp.code.interfaces.hasbranches.IHasMergeProposals"1115 for="lp.code.interfaces.hasbranches.IHasMergeProposals"
1116 layer="lp.code.publisher.CodeLayer"
1022 class="lp.code.browser.branchmergeproposallisting.ActiveReviewsView"1117 class="lp.code.browser.branchmergeproposallisting.ActiveReviewsView"
1023 permission="zope.Public"1118 permission="zope.Public"
1024 facet="branches"1119 facet="branches"
@@ -1102,12 +1197,14 @@
1102 layer="lp.code.publisher.CodeLayer"/>1197 layer="lp.code.publisher.CodeLayer"/>
1103 <browser:page1198 <browser:page
1104 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"1199 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"
1200 layer="lp.code.publisher.CodeLayer"
1105 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeView"1201 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeView"
1106 name="+index"1202 name="+index"
1107 template="../templates/sourcepackagerecipe-index.pt"1203 template="../templates/sourcepackagerecipe-index.pt"
1108 permission="launchpad.View"/>1204 permission="launchpad.View"/>
1109 <browser:page1205 <browser:page
1110 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"1206 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"
1207 layer="lp.code.publisher.CodeLayer"
1111 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeRequestBuildsView"1208 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeRequestBuildsView"
1112 name="+request-builds"1209 name="+request-builds"
1113 template="../templates/sourcepackagerecipe-request-builds.pt"1210 template="../templates/sourcepackagerecipe-request-builds.pt"
@@ -1120,18 +1217,21 @@
1120 layer="lp.code.publisher.CodeLayer"/>1217 layer="lp.code.publisher.CodeLayer"/>
1121 <browser:page1218 <browser:page
1122 for="lp.code.interfaces.sourcepackagerecipebuild.ISourcePackageRecipeBuild"1219 for="lp.code.interfaces.sourcepackagerecipebuild.ISourcePackageRecipeBuild"
1220 layer="lp.code.publisher.CodeLayer"
1123 class="lp.code.browser.sourcepackagerecipebuild.SourcePackageRecipeBuildView"1221 class="lp.code.browser.sourcepackagerecipebuild.SourcePackageRecipeBuildView"
1124 name="+index"1222 name="+index"
1125 template="../templates/sourcepackagerecipebuild-index.pt"1223 template="../templates/sourcepackagerecipebuild-index.pt"
1126 permission="launchpad.View"/>1224 permission="launchpad.View"/>
1127 <browser:page1225 <browser:page
1128 for="lp.code.interfaces.sourcepackagerecipebuild.ISourcePackageRecipeBuild"1226 for="lp.code.interfaces.sourcepackagerecipebuild.ISourcePackageRecipeBuild"
1227 layer="lp.code.publisher.CodeLayer"
1129 class="lp.code.browser.sourcepackagerecipebuild.SourcePackageRecipeBuildCancelView"1228 class="lp.code.browser.sourcepackagerecipebuild.SourcePackageRecipeBuildCancelView"
1130 name="+cancel"1229 name="+cancel"
1131 template="../../app/templates/generic-edit.pt"1230 template="../../app/templates/generic-edit.pt"
1132 permission="launchpad.Admin"/>1231 permission="launchpad.Admin"/>
1133 <browser:page1232 <browser:page
1134 for="lp.code.interfaces.sourcepackagerecipebuild.ISourcePackageRecipeBuild"1233 for="lp.code.interfaces.sourcepackagerecipebuild.ISourcePackageRecipeBuild"
1234 layer="lp.code.publisher.CodeLayer"
1135 class="lp.code.browser.sourcepackagerecipebuild.SourcePackageRecipeBuildRescoreView"1235 class="lp.code.browser.sourcepackagerecipebuild.SourcePackageRecipeBuildRescoreView"
1136 name="+rescore"1236 name="+rescore"
1137 template="../../app/templates/generic-edit.pt"1237 template="../../app/templates/generic-edit.pt"
@@ -1144,6 +1244,7 @@
11441244
1145 <browser:page1245 <browser:page
1146 for="lp.code.interfaces.branch.IBranch"1246 for="lp.code.interfaces.branch.IBranch"
1247 layer="lp.code.publisher.CodeLayer"
1147 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeAddView"1248 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeAddView"
1148 permission="launchpad.AnyPerson"1249 permission="launchpad.AnyPerson"
1149 facet="branches"1250 facet="branches"
@@ -1151,6 +1252,7 @@
1151 template="../../app/templates/generic-edit.pt"/>1252 template="../../app/templates/generic-edit.pt"/>
1152 <browser:page1253 <browser:page
1153 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"1254 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"
1255 layer="lp.code.publisher.CodeLayer"
1154 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeEditView"1256 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeEditView"
1155 permission="launchpad.Edit"1257 permission="launchpad.Edit"
1156 facet="branches"1258 facet="branches"
@@ -1158,6 +1260,7 @@
1158 template="../../app/templates/generic-edit.pt"/>1260 template="../../app/templates/generic-edit.pt"/>
1159 <browser:page1261 <browser:page
1160 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"1262 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"
1263 layer="lp.code.publisher.CodeLayer"
1161 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeDeleteView"1264 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeDeleteView"
1162 permission="launchpad.Edit"1265 permission="launchpad.Edit"
1163 facet="branches"1266 facet="branches"
@@ -1166,6 +1269,7 @@
11661269
1167 <browser:page1270 <browser:page
1168 for="lp.code.interfaces.branch.IBranch"1271 for="lp.code.interfaces.branch.IBranch"
1272 layer="lp.code.publisher.CodeLayer"
1169 class="lp.code.browser.sourcepackagerecipelisting.BranchRecipeListingView"1273 class="lp.code.browser.sourcepackagerecipelisting.BranchRecipeListingView"
1170 permission="zope.Public"1274 permission="zope.Public"
1171 facet="branches"1275 facet="branches"
@@ -1173,6 +1277,7 @@
1173 template="../templates/sourcepackagerecipe-listing.pt"/>1277 template="../templates/sourcepackagerecipe-listing.pt"/>
1174 <browser:page1278 <browser:page
1175 for="lp.registry.interfaces.product.IProduct"1279 for="lp.registry.interfaces.product.IProduct"
1280 layer="lp.code.publisher.CodeLayer"
1176 class="lp.code.browser.sourcepackagerecipelisting.ProductRecipeListingView"1281 class="lp.code.browser.sourcepackagerecipelisting.ProductRecipeListingView"
1177 permission="zope.Public"1282 permission="zope.Public"
1178 facet="branches"1283 facet="branches"
@@ -1180,6 +1285,7 @@
1180 template="../templates/sourcepackagerecipe-listing.pt"/>1285 template="../templates/sourcepackagerecipe-listing.pt"/>
1181 <browser:page1286 <browser:page
1182 for="lp.registry.interfaces.person.IPerson"1287 for="lp.registry.interfaces.person.IPerson"
1288 layer="lp.code.publisher.CodeLayer"
1183 class="lp.code.browser.sourcepackagerecipelisting.PersonRecipeListingView"1289 class="lp.code.browser.sourcepackagerecipelisting.PersonRecipeListingView"
1184 permission="zope.Public"1290 permission="zope.Public"
1185 facet="branches"1291 facet="branches"
@@ -1188,6 +1294,7 @@
11881294
1189 <browser:page1295 <browser:page
1190 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"1296 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"
1297 layer="lp.code.publisher.CodeLayer"
1191 name="+hierarchy"1298 name="+hierarchy"
1192 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeHierarchy"1299 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeHierarchy"
1193 template="../../app/templates/launchpad-hierarchy.pt"1300 template="../../app/templates/launchpad-hierarchy.pt"
11941301
=== modified file 'lib/lp/code/browser/sourcepackagerecipe.py'
--- lib/lp/code/browser/sourcepackagerecipe.py 2010-08-20 20:31:18 +0000
+++ lib/lp/code/browser/sourcepackagerecipe.py 2010-08-24 02:26:48 +0000
@@ -94,7 +94,8 @@
9494
95 @property95 @property
96 def url(self):96 def url(self):
97 return canonical_url(self.context, view_name="+recipes")97 return canonical_url(
98 self.context, view_name="+recipes", rootsite='code')
9899
99100
100class SourcePackageRecipeHierarchy(Hierarchy):101class SourcePackageRecipeHierarchy(Hierarchy):
101102
=== modified file 'lib/lp/code/browser/sourcepackagerecipelisting.py'
--- lib/lp/code/browser/sourcepackagerecipelisting.py 2010-08-20 20:31:18 +0000
+++ lib/lp/code/browser/sourcepackagerecipelisting.py 2010-08-24 02:26:48 +0000
@@ -35,7 +35,7 @@
35 if not config.build_from_branch.enabled:35 if not config.build_from_branch.enabled:
36 enabled = False36 enabled = False
37 return Link(37 return Link(
38 '+recipes', text, icon='info', enabled=enabled)38 '+recipes', text, icon='info', enabled=enabled, site='code')
3939
4040
41class RecipeListingView(LaunchpadView, FeedsMixin):41class RecipeListingView(LaunchpadView, FeedsMixin):
4242
=== modified file 'lib/lp/code/browser/tests/test_branchlisting.py'
--- lib/lp/code/browser/tests/test_branchlisting.py 2010-08-20 20:31:18 +0000
+++ lib/lp/code/browser/tests/test_branchlisting.py 2010-08-24 02:26:48 +0000
@@ -141,7 +141,8 @@
141 # the current batch.141 # the current batch.
142 branch_ids = set([self.branches[0].id])142 branch_ids = set([self.branches[0].id])
143143
144 view = create_initialized_view(self.barney, name="+branches")144 view = create_initialized_view(
145 self.barney, name="+branches", rootsite='code')
145 self.assertEqual(146 self.assertEqual(
146 view.branches().branch_ids_with_bug_links,147 view.branches().branch_ids_with_bug_links,
147 branch_ids)148 branch_ids)
@@ -151,7 +152,8 @@
151 # the current batch.152 # the current batch.
152 branch_ids = set([self.branches[1].id])153 branch_ids = set([self.branches[1].id])
153154
154 view = create_initialized_view(self.barney, name="+branches")155 view = create_initialized_view(
156 self.barney, name="+branches", rootsite='code')
155 self.assertEqual(157 self.assertEqual(
156 view.branches().branch_ids_with_spec_links,158 view.branches().branch_ids_with_spec_links,
157 branch_ids)159 branch_ids)
@@ -160,7 +162,8 @@
160 # _branches_for_current_batch should return a list of all branches in162 # _branches_for_current_batch should return a list of all branches in
161 # the current batch.163 # the current batch.
162 branch_ids = set([])164 branch_ids = set([])
163 view = create_initialized_view(self.barney, name="+branches")165 view = create_initialized_view(
166 self.barney, name="+branches", rootsite='code')
164 self.assertEqual(167 self.assertEqual(
165 view.branches().branch_ids_with_merge_proposals,168 view.branches().branch_ids_with_merge_proposals,
166 branch_ids)169 branch_ids)
@@ -173,7 +176,8 @@
173 for branch_id in branch_ids:176 for branch_id in branch_ids:
174 tip_revisions[branch_id] = None177 tip_revisions[branch_id] = None
175178
176 view = create_initialized_view(self.barney, name="+branches")179 view = create_initialized_view(
180 self.barney, name="+branches", rootsite='code')
177 self.assertEqual(181 self.assertEqual(
178 view.branches().tip_revisions,182 view.branches().tip_revisions,
179 tip_revisions)183 tip_revisions)
@@ -351,7 +355,8 @@
351 branch.distribution.name, branch.sourcepackagename.name)355 branch.distribution.name, branch.sourcepackagename.name)
352 self.assertEqual(identity, branch.bzr_identity)356 self.assertEqual(identity, branch.bzr_identity)
353 # Now confirm that we get the same through the view.357 # Now confirm that we get the same through the view.
354 view = create_initialized_view(branch.distribution, name='+branches')358 view = create_initialized_view(
359 branch.distribution, name='+branches', rootsite='code')
355 # There is only one branch.360 # There is only one branch.
356 batch = view.branches()361 batch = view.branches()
357 [view_branch] = batch.branches362 [view_branch] = batch.branches
358363
=== modified file 'lib/lp/code/browser/tests/test_branchmergeproposal.py'
--- lib/lp/code/browser/tests/test_branchmergeproposal.py 2010-08-20 20:31:18 +0000
+++ lib/lp/code/browser/tests/test_branchmergeproposal.py 2010-08-24 02:26:48 +0000
@@ -60,11 +60,6 @@
6060
61 layer = DatabaseFunctionalLayer61 layer = DatabaseFunctionalLayer
6262
63 def setUp(self):
64 # Use an admin so we don't have to worry about launchpad.Edit
65 # permissions on the merge proposals.
66 TestCaseWithFactory.setUp(self, user="admin@canonical.com")
67
68 def testPrimaryContext(self):63 def testPrimaryContext(self):
69 # The primary context of a merge proposal is the same as the primary64 # The primary context of a merge proposal is the same as the primary
70 # context of the source_branch.65 # context of the source_branch.
@@ -84,7 +79,6 @@
84 set_state=BranchMergeProposalStatus.REJECTED)79 set_state=BranchMergeProposalStatus.REJECTED)
85 login_person(bmp.registrant)80 login_person(bmp.registrant)
86 menu = BranchMergeProposalContextMenu(bmp)81 menu = BranchMergeProposalContextMenu(bmp)
87 link = menu.add_comment()
88 self.assertTrue(menu.add_comment().enabled)82 self.assertTrue(menu.add_comment().enabled)
8983
9084
@@ -272,9 +266,6 @@
272 albert = self.factory.makePerson(name='albert')266 albert = self.factory.makePerson(name='albert')
273 bob = self.factory.makePerson(name='bob')267 bob = self.factory.makePerson(name='bob')
274 charles = self.factory.makePerson(name='charles')268 charles = self.factory.makePerson(name='charles')
275
276 owner = self.bmp.source_branch.owner
277
278 self._createComment(albert, CodeReviewVote.APPROVE)269 self._createComment(albert, CodeReviewVote.APPROVE)
279 self._createComment(bob, CodeReviewVote.ABSTAIN)270 self._createComment(bob, CodeReviewVote.ABSTAIN)
280 self._createComment(charles, CodeReviewVote.DISAPPROVE)271 self._createComment(charles, CodeReviewVote.DISAPPROVE)
@@ -290,9 +281,6 @@
290 # Request three reviews.281 # Request three reviews.
291 albert = self.factory.makePerson(name='albert')282 albert = self.factory.makePerson(name='albert')
292 bob = self.factory.makePerson(name='bob')283 bob = self.factory.makePerson(name='bob')
293
294 owner = self.bmp.source_branch.owner
295
296 self._createComment(albert, CodeReviewVote.ABSTAIN)284 self._createComment(albert, CodeReviewVote.ABSTAIN)
297 self._createComment(bob, CodeReviewVote.APPROVE)285 self._createComment(bob, CodeReviewVote.APPROVE)
298 self._createComment(albert, CodeReviewVote.APPROVE)286 self._createComment(albert, CodeReviewVote.APPROVE)
@@ -305,7 +293,6 @@
305293
306 def addReviewTeam(self):294 def addReviewTeam(self):
307 review_team = self.factory.makeTeam(name='reviewteam')295 review_team = self.factory.makeTeam(name='reviewteam')
308 target_branch = self.factory.makeAnyBranch()
309 self.bmp.target_branch.reviewer = review_team296 self.bmp.target_branch.reviewer = review_team
310297
311 def test_review_team_members_trusted(self):298 def test_review_team_members_trusted(self):
312299
=== modified file 'lib/lp/code/browser/tests/test_branchmergeproposallisting.py'
--- lib/lp/code/browser/tests/test_branchmergeproposallisting.py 2010-08-20 20:31:18 +0000
+++ lib/lp/code/browser/tests/test_branchmergeproposallisting.py 2010-08-24 02:26:48 +0000
@@ -335,7 +335,8 @@
335 login_person(bmp3.source_branch.owner)335 login_person(bmp3.source_branch.owner)
336 bmp3.requestReview(datetime(2009,1,1,tzinfo=pytz.UTC))336 bmp3.requestReview(datetime(2009,1,1,tzinfo=pytz.UTC))
337 login(ANONYMOUS)337 login(ANONYMOUS)
338 view = create_initialized_view(product, name='+activereviews')338 view = create_initialized_view(
339 product, name='+activereviews', rootsite='code')
339 self.assertEqual(340 self.assertEqual(
340 [bmp3, bmp2, bmp1],341 [bmp3, bmp2, bmp1],
341 [item.context for item in view.review_groups[view.OTHER]])342 [item.context for item in view.review_groups[view.OTHER]])
342343
=== modified file 'lib/lp/code/browser/tests/test_product.py'
--- lib/lp/code/browser/tests/test_product.py 2010-08-20 20:31:18 +0000
+++ lib/lp/code/browser/tests/test_product.py 2010-08-24 02:26:48 +0000
@@ -29,6 +29,7 @@
29 TestCaseWithFactory,29 TestCaseWithFactory,
30 time_counter,30 time_counter,
31 )31 )
32from lp.testing.views import create_initialized_view
3233
3334
34class TestProductCodeIndexView(TestCaseWithFactory):35class TestProductCodeIndexView(TestCaseWithFactory):
@@ -53,7 +54,6 @@
5354
54 :raises Something: if the branch is not found.55 :raises Something: if the branch is not found.
55 """56 """
56 url = canonical_url(product, rootsite='code')
57 browser = self.getUserBrowser(canonical_url(product, rootsite='code'))57 browser = self.getUserBrowser(canonical_url(product, rootsite='code'))
58 return browser.getLink('browse the source code')58 return browser.getLink('browse the source code')
5959
@@ -92,30 +92,25 @@
92 # +code-index page.92 # +code-index page.
93 product, branch = self.makeProductAndDevelopmentFocusBranch(93 product, branch = self.makeProductAndDevelopmentFocusBranch(
94 private=True)94 private=True)
95 url = canonical_url(product, rootsite='code')
96 self.factory.makeProductBranch(product=product)95 self.factory.makeProductBranch(product=product)
97 # This is just "assertNotRaises"96 # This is just "assertNotRaises"
98 self.getUserBrowser(canonical_url(product, rootsite='code'))97 self.getUserBrowser(canonical_url(product, rootsite='code'))
9998
100 def test_initial_branches_contains_dev_focus_branch(self):99 def test_initial_branches_contains_dev_focus_branch(self):
101 product, branch = self.makeProductAndDevelopmentFocusBranch()100 product, branch = self.makeProductAndDevelopmentFocusBranch()
102 view = getMultiAdapter(101 view = create_initialized_view(product, '+code-index', rootsite='code')
103 (product, LaunchpadTestRequest()), name='+code-index')
104 view.initialize()
105 self.assertIn(branch, view.initial_branches)102 self.assertIn(branch, view.initial_branches)
106103
107 def test_initial_branches_does_not_contain_private_dev_focus_branch(self):104 def test_initial_branches_does_not_contain_private_dev_focus_branch(self):
108 product, branch = self.makeProductAndDevelopmentFocusBranch(105 product, branch = self.makeProductAndDevelopmentFocusBranch(
109 private=True)106 private=True)
110 view = getMultiAdapter(107 view = create_initialized_view(product, '+code-index', rootsite='code')
111 (product, LaunchpadTestRequest()), name='+code-index')
112 view.initialize()
113 self.assertNotIn(branch, view.initial_branches)108 self.assertNotIn(branch, view.initial_branches)
114109
115 def test_committer_count_with_revision_authors(self):110 def test_committer_count_with_revision_authors(self):
116 # Test that the code pathing for calling committer_count with111 # Test that the code pathing for calling committer_count with
117 # valid revision authors is truly tested.112 # valid revision authors is truly tested.
118 cthulu = self.factory.makePerson(email='cthulu@example.com')113 self.factory.makePerson(email='cthulu@example.com')
119 product, branch = self.makeProductAndDevelopmentFocusBranch()114 product, branch = self.makeProductAndDevelopmentFocusBranch()
120 date_generator = time_counter(115 date_generator = time_counter(
121 datetime.now(pytz.UTC) - timedelta(days=30),116 datetime.now(pytz.UTC) - timedelta(days=30),
@@ -125,9 +120,7 @@
125 date_generator=date_generator)120 date_generator=date_generator)
126 getUtility(IRevisionSet).updateRevisionCacheForBranch(branch)121 getUtility(IRevisionSet).updateRevisionCacheForBranch(branch)
127122
128 view = getMultiAdapter(123 view = create_initialized_view(product, '+code-index', rootsite='code')
129 (product, LaunchpadTestRequest()), name='+code-index')
130 view.initialize()
131 self.assertEqual(view.committer_count, 1)124 self.assertEqual(view.committer_count, 1)
132125
133 def test_committers_count_private_branch(self):126 def test_committers_count_private_branch(self):
@@ -145,9 +138,7 @@
145 date_generator=date_generator)138 date_generator=date_generator)
146 getUtility(IRevisionSet).updateRevisionCacheForBranch(branch)139 getUtility(IRevisionSet).updateRevisionCacheForBranch(branch)
147140
148 view = getMultiAdapter(141 view = create_initialized_view(product, '+code-index', rootsite='code')
149 (product, LaunchpadTestRequest()), name='+code-index')
150 view.initialize()
151 self.assertEqual(view.committer_count, 1)142 self.assertEqual(view.committer_count, 1)
152143
153144
154145
=== modified file 'lib/lp/code/stories/branches/xx-branch-edit.txt'
--- lib/lp/code/stories/branches/xx-branch-edit.txt 2010-05-30 04:06:48 +0000
+++ lib/lp/code/stories/branches/xx-branch-edit.txt 2010-08-24 02:26:48 +0000
@@ -17,26 +17,26 @@
17Launchpad administrators or members of the Bazaar Experts team.17Launchpad administrators or members of the Bazaar Experts team.
1818
19 >>> admin_browser.open(19 >>> admin_browser.open(
20 ... 'http://launchpad.dev/~name12/gnome-terminal/klingon')20 ... 'http://code.launchpad.dev/~name12/gnome-terminal/klingon')
21 >>> link = admin_browser.getLink('Change branch details')21 >>> link = admin_browser.getLink('Change branch details')
2222
23 >>> bazaar_expert_browser = setupBrowser(23 >>> bazaar_expert_browser = setupBrowser(
24 ... auth='Basic tim@canonical.com:test')24 ... auth='Basic tim@canonical.com:test')
25 >>> bazaar_expert_browser.open(25 >>> bazaar_expert_browser.open(
26 ... 'http://launchpad.dev/~name12/gnome-terminal/klingon')26 ... 'http://code.launchpad.dev/~name12/gnome-terminal/klingon')
27 >>> link = bazaar_expert_browser.getLink('Change branch details')27 >>> link = bazaar_expert_browser.getLink('Change branch details')
2828
29 >>> nopriv_browser = setupBrowser(29 >>> nopriv_browser = setupBrowser(
30 ... auth='Basic nopriv@canonical.com:test')30 ... auth='Basic nopriv@canonical.com:test')
31 >>> nopriv_browser.open(31 >>> nopriv_browser.open(
32 ... 'http://launchpad.dev/~name12/gnome-terminal/klingon')32 ... 'http://code.launchpad.dev/~name12/gnome-terminal/klingon')
33 >>> link = nopriv_browser.getLink('Change branch details')33 >>> link = nopriv_browser.getLink('Change branch details')
34 Traceback (most recent call last):34 Traceback (most recent call last):
35 LinkNotFoundError35 LinkNotFoundError
3636
37 >>> browser = setupBrowser(auth='Basic test@canonical.com:test')37 >>> browser = setupBrowser(auth='Basic test@canonical.com:test')
38 >>> browser.open(38 >>> browser.open(
39 ... 'http://launchpad.dev/~name12/gnome-terminal/klingon')39 ... 'http://code.launchpad.dev/~name12/gnome-terminal/klingon')
40 >>> browser.getLink('Change branch details').click()40 >>> browser.getLink('Change branch details').click()
41 >>> browser.url41 >>> browser.url
42 'http://code.launchpad.dev/~name12/gnome-terminal/klingon/+edit'42 'http://code.launchpad.dev/~name12/gnome-terminal/klingon/+edit'
@@ -84,7 +84,7 @@
8484
85To change the branch status, the +edit page is also used:85To change the branch status, the +edit page is also used:
8686
87 >>> browser.open('http://launchpad.dev'87 >>> browser.open('http://code.launchpad.dev'
88 ... '/~name12/gnome-terminal/klingon/+edit')88 ... '/~name12/gnome-terminal/klingon/+edit')
8989
90The form displays the branch current status.90The form displays the branch current status.
@@ -112,7 +112,7 @@
112112
113Set the branch status back to its initial state.113Set the branch status back to its initial state.
114114
115 >>> browser.open('http://launchpad.dev'115 >>> browser.open('http://code.launchpad.dev'
116 ... '/~name12/gnome-terminal/klingon/+edit')116 ... '/~name12/gnome-terminal/klingon/+edit')
117 >>> browser.getControl('Experimental').click()117 >>> browser.getControl('Experimental').click()
118 >>> browser.getControl('Change Branch').click()118 >>> browser.getControl('Change Branch').click()
@@ -162,12 +162,12 @@
162Let's try to change the name of the branch to the name of some branch we162Let's try to change the name of the branch to the name of some branch we
163already own in the same product.163already own in the same product.
164164
165 >>> browser.open('http://launchpad.dev'165 >>> browser.open('http://code.launchpad.dev'
166 ... '/~name12/gnome-terminal/main/+edit')166 ... '/~name12/gnome-terminal/main/+edit')
167 >>> browser.getControl('Name').value = '2.6'167 >>> browser.getControl('Name').value = '2.6'
168 >>> browser.getControl('Change Branch').click()168 >>> browser.getControl('Change Branch').click()
169 >>> browser.url169 >>> browser.url
170 'http://launchpad.dev/%7Ename12/gnome-terminal/main/+edit'170 'http://code.launchpad.dev/%7Ename12/gnome-terminal/main/+edit'
171 >>> for msg in get_feedback_messages(browser.contents):171 >>> for msg in get_feedback_messages(browser.contents):
172 ... print msg172 ... print msg
173 There is 1 error.173 There is 1 error.
@@ -178,7 +178,7 @@
178178
179Edit forms do the same URL validation checks as the add forms.179Edit forms do the same URL validation checks as the add forms.
180180
181 >>> browser.open('http://launchpad.dev/~name12/gnome-terminal/main')181 >>> browser.open('http://code.launchpad.dev/~name12/gnome-terminal/main')
182 >>> browser.getLink('Change branch details').click()182 >>> browser.getLink('Change branch details').click()
183 >>> browser.getControl('Branch URL').value = (183 >>> browser.getControl('Branch URL').value = (
184 ... 'http://bazaar.launchpad.dev/~foo/bar/baz')184 ... 'http://bazaar.launchpad.dev/~foo/bar/baz')
@@ -192,7 +192,8 @@
192192
193Check that when editing a hosted branch the URL field is not shown.193Check that when editing a hosted branch the URL field is not shown.
194194
195 >>> browser.open('http://launchpad.dev/~name12/gnome-terminal/scanned')195 >>> browser.open(
196 ... 'http://code.launchpad.dev/~name12/gnome-terminal/scanned')
196 >>> browser.getLink('Change branch details').click()197 >>> browser.getLink('Change branch details').click()
197 >>> browser.getControl('Branch URL').value = (198 >>> browser.getControl('Branch URL').value = (
198 ... 'http://acme.example.com/~foo/bar/baz')199 ... 'http://acme.example.com/~foo/bar/baz')
@@ -227,7 +228,7 @@
227 >>> logout()228 >>> logout()
228229
229 >>> nopriv_browser = setupBrowser(auth='Basic no-priv@canonical.com:test')230 >>> nopriv_browser = setupBrowser(auth='Basic no-priv@canonical.com:test')
230 >>> nopriv_browser.open('http://launchpad.dev'231 >>> nopriv_browser.open('http://code.launchpad.dev'
231 ... '/~name12/foogoo/foogoo-svn')232 ... '/~name12/foogoo/foogoo-svn')
232 >>> whiteboard_tag = find_tag_by_id(233 >>> whiteboard_tag = find_tag_by_id(
233 ... nopriv_browser.contents, 'branch-whiteboard-value')234 ... nopriv_browser.contents, 'branch-whiteboard-value')
@@ -280,7 +281,7 @@
280The user is able to change the owner of the branch using the edit details281The user is able to change the owner of the branch using the edit details
281page.282page.
282283
283 >>> browser.open('http://launchpad.dev/~name12/gnome-terminal/main')284 >>> browser.open('http://code.launchpad.dev/~name12/gnome-terminal/main')
284 >>> browser.getLink('Change branch details').click()285 >>> browser.getLink('Change branch details').click()
285 >>> browser.getControl('Owner').displayValue = ['Landscape Developers']286 >>> browser.getControl('Owner').displayValue = ['Landscape Developers']
286 >>> browser.getControl('Change Branch').click()287 >>> browser.getControl('Change Branch').click()
@@ -297,7 +298,7 @@
297Bazaar Experts and Launchpad administrators are able to reassign a branch298Bazaar Experts and Launchpad administrators are able to reassign a branch
298to any valid person or team.299to any valid person or team.
299300
300 >>> admin_browser.open('http://launchpad.dev/~name12/firefox/main')301 >>> admin_browser.open('http://code.launchpad.dev/~name12/firefox/main')
301 >>> admin_browser.getLink('Change branch details').click()302 >>> admin_browser.getLink('Change branch details').click()
302 >>> admin_browser.getControl('Owner').value = 'mark'303 >>> admin_browser.getControl('Owner').value = 'mark'
303 >>> admin_browser.getControl('Change Branch').click()304 >>> admin_browser.getControl('Change Branch').click()
304305
=== modified file 'lib/lp/code/stories/branches/xx-branch-listings.txt'
--- lib/lp/code/stories/branches/xx-branch-listings.txt 2010-04-11 22:45:09 +0000
+++ lib/lp/code/stories/branches/xx-branch-listings.txt 2010-08-24 02:26:48 +0000
@@ -154,7 +154,7 @@
154status value, it will default to current branches.154status value, it will default to current branches.
155155
156 >>> browser.open(156 >>> browser.open(
157 ... 'http://launchpad.dev/~name12/+branches?field.lifecycle=Fubar')157 ... 'http://code.launchpad.dev/~name12/+branches?field.lifecycle=Fubar')
158 >>> browser.getControl(name='field.lifecycle').displayValue158 >>> browser.getControl(name='field.lifecycle').displayValue
159 ['Any active status']159 ['Any active status']
160 >>> table = find_tag_by_id(browser.contents, 'branchtable')160 >>> table = find_tag_by_id(browser.contents, 'branchtable')
161161
=== modified file 'lib/lp/code/stories/branches/xx-branch-url-validation.txt'
--- lib/lp/code/stories/branches/xx-branch-url-validation.txt 2009-06-02 08:20:49 +0000
+++ lib/lp/code/stories/branches/xx-branch-url-validation.txt 2010-08-24 02:26:48 +0000
@@ -3,7 +3,8 @@
3First, let's define a helper to post to the Person +addbranch form.3First, let's define a helper to post to the Person +addbranch form.
44
5 >>> def add_branch(url):5 >>> def add_branch(url):
6 ... user_browser.open('http://launchpad.dev/~lifeless/+addbranch')6 ... user_browser.open(
7 ... 'http://code.launchpad.dev/~lifeless/+addbranch')
7 ... user_browser.getControl('Name').value = 'pyresources'8 ... user_browser.getControl('Name').value = 'pyresources'
8 ... user_browser.getControl('Branch URL').value = url9 ... user_browser.getControl('Branch URL').value = url
9 ... user_browser.getControl('Register Branch').click()10 ... user_browser.getControl('Register Branch').click()
@@ -57,7 +58,7 @@
57 There is 1 error.58 There is 1 error.
58 Branch URLs are required for Mirrored branches.59 Branch URLs are required for Mirrored branches.
5960
60Try to create a branch using the bzr+ssh URL scheme. Bug 76854 (see also 5573)61Try to create a branch using the bzr+ssh URL scheme.
6162
62 >>> add_branch('bzr+ssh://example.com/code/branch')63 >>> add_branch('bzr+ssh://example.com/code/branch')
63 >>> print user_browser.url64 >>> print user_browser.url
6465
=== modified file 'lib/lp/code/stories/branches/xx-creating-branches.txt'
--- lib/lp/code/stories/branches/xx-creating-branches.txt 2010-05-13 16:22:19 +0000
+++ lib/lp/code/stories/branches/xx-creating-branches.txt 2010-08-24 02:26:48 +0000
@@ -125,7 +125,7 @@
125125
126Now, post the branch creation form for the product.126Now, post the branch creation form for the product.
127127
128 >>> user_browser.open('http://launchpad.dev/applets/+addbranch')128 >>> user_browser.open('http://code.launchpad.dev/applets/+addbranch')
129129
130The specified URL has a trailing slash. In the next test, we will check that it130The specified URL has a trailing slash. In the next test, we will check that it
131has been stripped.131has been stripped.
@@ -175,7 +175,7 @@
175 >>> browser.open('http://launchpad.dev/gnome-terminal/trunk')175 >>> browser.open('http://launchpad.dev/gnome-terminal/trunk')
176 >>> browser.getLink('registering a mirrored branch').click()176 >>> browser.getLink('registering a mirrored branch').click()
177 >>> print browser.title177 >>> print browser.title
178 Register a branch : GNOME Terminal178 Register a branch : Code : GNOME Terminal
179179
180The user sees that he is registering a branch for the series' project.180The user sees that he is registering a branch for the series' project.
181181
@@ -241,7 +241,7 @@
241241
242Try a adding a conflicting branch from the product/+addbranch form.242Try a adding a conflicting branch from the product/+addbranch form.
243243
244 >>> browser.open('http://launchpad.dev/gnome-terminal/+addbranch')244 >>> browser.open('http://code.launchpad.dev/gnome-terminal/+addbranch')
245 >>> browser.getControl('Branch URL').value = (245 >>> browser.getControl('Branch URL').value = (
246 ... 'http://example.com/gnome-terminal/main-dup')246 ... 'http://example.com/gnome-terminal/main-dup')
247247
@@ -249,7 +249,7 @@
249249
250 >>> browser.getControl('Register Branch').click()250 >>> browser.getControl('Register Branch').click()
251 >>> browser.url251 >>> browser.url
252 'http://launchpad.dev/gnome-terminal/+addbranch'252 'http://code.launchpad.dev/gnome-terminal/+addbranch'
253253
254Now, complete the form, but give a name that is alredy in use for that owner254Now, complete the form, but give a name that is alredy in use for that owner
255and product.255and product.
@@ -260,7 +260,7 @@
260That should give us the form back with an error message.260That should give us the form back with an error message.
261261
262 >>> browser.url262 >>> browser.url
263 'http://launchpad.dev/gnome-terminal/+addbranch'263 'http://code.launchpad.dev/gnome-terminal/+addbranch'
264 >>> for message in get_feedback_messages(browser.contents):264 >>> for message in get_feedback_messages(browser.contents):
265 ... print extract_text(message)265 ... print extract_text(message)
266 There is 1 error.266 There is 1 error.
@@ -269,7 +269,7 @@
269If the user is trying to add a branch for a team that conflicts,269If the user is trying to add a branch for a team that conflicts,
270then the team name is given in the error message.270then the team name is given in the error message.
271271
272 >>> browser.open('http://launchpad.dev/gnome-terminal/+addbranch')272 >>> browser.open('http://code.launchpad.dev/gnome-terminal/+addbranch')
273 >>> browser.getControl('Owner').displayValue = [273 >>> browser.getControl('Owner').displayValue = [
274 ... 'Landscape Developers']274 ... 'Landscape Developers']
275 >>> browser.getControl('Name').value = 'main'275 >>> browser.getControl('Name').value = 'main'
@@ -282,7 +282,7 @@
282282
283Now registering again with the same name.283Now registering again with the same name.
284284
285 >>> browser.open('http://launchpad.dev/gnome-terminal/+addbranch')285 >>> browser.open('http://code.launchpad.dev/gnome-terminal/+addbranch')
286 >>> browser.getControl('Owner').displayValue = [286 >>> browser.getControl('Owner').displayValue = [
287 ... 'Landscape Developers']287 ... 'Landscape Developers']
288 >>> browser.getControl('Name').value = 'main'288 >>> browser.getControl('Name').value = 'main'
289289
=== modified file 'lib/lp/code/stories/branches/xx-source-package-branches-listing.txt'
--- lib/lp/code/stories/branches/xx-source-package-branches-listing.txt 2010-04-12 16:02:18 +0000
+++ lib/lp/code/stories/branches/xx-source-package-branches-listing.txt 2010-08-24 02:26:48 +0000
@@ -60,7 +60,7 @@
60 ... distribution=distro, sourcepackagename=branch1.sourcepackagename)60 ... distribution=distro, sourcepackagename=branch1.sourcepackagename)
61 >>> transaction.commit()61 >>> transaction.commit()
62 >>> distro_source_package_listing = canonical_url(62 >>> distro_source_package_listing = canonical_url(
63 ... distro_source_package, view_name="+branches")63 ... distro_source_package, view_name="+branches", rootsite='code')
64 >>> logout()64 >>> logout()
6565
66 >>> browser.open(distro_source_package_listing)66 >>> browser.open(distro_source_package_listing)
6767
=== modified file 'lib/lp/code/stories/branches/xx-subscribing-branches.txt'
--- lib/lp/code/stories/branches/xx-subscribing-branches.txt 2010-05-27 04:44:39 +0000
+++ lib/lp/code/stories/branches/xx-subscribing-branches.txt 2010-08-24 02:26:48 +0000
@@ -36,7 +36,7 @@
36link "Subscribe" from a branch's page.36link "Subscribe" from a branch's page.
3737
38 >>> browser = setupBrowser(auth='Basic no-priv@canonical.com:test')38 >>> browser = setupBrowser(auth='Basic no-priv@canonical.com:test')
39 >>> browser.open('http://launchpad.dev/~name12/gnome-terminal/main')39 >>> browser.open('http://code.launchpad.dev/~name12/gnome-terminal/main')
4040
41Initially there should be no subscribers.41Initially there should be no subscribers.
4242
@@ -149,7 +149,7 @@
149149
150Any logged in user is able to subscribe others to a branch.150Any logged in user is able to subscribe others to a branch.
151151
152 >>> browser.open('http://launchpad.dev/~name12/gnome-terminal/main')152 >>> browser.open('http://code.launchpad.dev/~name12/gnome-terminal/main')
153 >>> browser.getLink('Subscribe someone else').click()153 >>> browser.getLink('Subscribe someone else').click()
154154
155The process of subscribing others is the same as subscribing the155The process of subscribing others is the same as subscribing the
156156
=== modified file 'lib/lp/code/stories/sourcepackagerecipes/xx-recipe-listings.txt'
--- lib/lp/code/stories/sourcepackagerecipes/xx-recipe-listings.txt 2010-06-15 19:53:21 +0000
+++ lib/lp/code/stories/sourcepackagerecipes/xx-recipe-listings.txt 2010-08-24 02:26:48 +0000
@@ -86,7 +86,7 @@
86 >>> nopriv_browser.open(product_url)86 >>> nopriv_browser.open(product_url)
87 >>> nopriv_browser.getLink('View source package recipes').click()87 >>> nopriv_browser.getLink('View source package recipes').click()
88 >>> print nopriv_browser.url88 >>> print nopriv_browser.url
89 http://launchpad.dev/product-name.../+recipes89 http://code.launchpad.dev/product-name.../+recipes
9090
91 >>> print_recipe_listing_head(nopriv_browser)91 >>> print_recipe_listing_head(nopriv_browser)
92 Name92 Name
@@ -119,7 +119,7 @@
119 >>> nopriv_browser.open(person_url)119 >>> nopriv_browser.open(person_url)
120 >>> nopriv_browser.getLink('View source package recipes').click()120 >>> nopriv_browser.getLink('View source package recipes').click()
121 >>> print nopriv_browser.url121 >>> print nopriv_browser.url
122 http://launchpad.dev/~person-name.../+recipes122 http://code.launchpad.dev/~person-name.../+recipes
123123
124The "Owner" section should be missing.124The "Owner" section should be missing.
125125
126126
=== modified file 'lib/lp/code/templates/branch-summary-listing.pt'
--- lib/lp/code/templates/branch-summary-listing.pt 2009-07-17 17:59:07 +0000
+++ lib/lp/code/templates/branch-summary-listing.pt 2010-08-24 02:26:48 +0000
@@ -4,10 +4,10 @@
4 tal:content="context/bzr_identity"4 tal:content="context/bzr_identity"
5 class="sprite branch" >Mozilla Thunderbird 0.9.1</a>5 class="sprite branch" >Mozilla Thunderbird 0.9.1</a>
6 <tal:person-link condition="view/show_person_link">6 <tal:person-link condition="view/show_person_link">
7 - <a tal:replace="structure context/owner/fmt:link/+ownedbranches" />7 - <a tal:replace="structure context/owner/fmt:link:code/+ownedbranches" />
8 </tal:person-link>8 </tal:person-link>
9 <tal:product-link condition="view/show_product_link">9 <tal:product-link condition="view/show_product_link">
10 - <a tal:attributes="href string:${context/product/fmt:url}/+branches"10 - <a tal:attributes="href context/product/fmt:url:code/+branches"
11 tal:content="context/product/displayname"11 tal:content="context/product/displayname"
12 class="sprite product">Project</a>12 class="sprite product">Project</a>
13 </tal:product-link>13 </tal:product-link>
1414
=== modified file 'lib/lp/code/templates/distributionsourcepackage-branches-grouped.pt'
--- lib/lp/code/templates/distributionsourcepackage-branches-grouped.pt 2009-09-17 02:17:15 +0000
+++ lib/lp/code/templates/distributionsourcepackage-branches-grouped.pt 2010-08-24 02:26:48 +0000
@@ -85,7 +85,7 @@
85 </li>85 </li>
86 </tal:series-branches>86 </tal:series-branches>
87 </tal:distro-series>87 </tal:distro-series>
88 <li><a tal:attributes="href context/fmt:url/+branches">88 <li><a tal:attributes="href context/fmt:url:code/+branches">
89 All branches for the <tal:name replace="context/title"/>89 All branches for the <tal:name replace="context/title"/>
90 </a></li>90 </a></li>
91 </ul>91 </ul>
9292
=== modified file 'lib/lp/registry/browser/product.py'
--- lib/lp/registry/browser/product.py 2010-08-23 03:25:20 +0000
+++ lib/lp/registry/browser/product.py 2010-08-24 02:26:48 +0000
@@ -671,7 +671,7 @@
671 def branch_add(self):671 def branch_add(self):
672 text = 'Register a branch'672 text = 'Register a branch'
673 summary = "Register a new Bazaar branch for this project"673 summary = "Register a new Bazaar branch for this project"
674 return Link('+addbranch', text, summary, icon='add')674 return Link('+addbranch', text, summary, icon='add', site='code')
675675
676676
677class ProductBugsMenu(PillarBugsMenu,677class ProductBugsMenu(PillarBugsMenu,
678678
=== modified file 'lib/lp/registry/browser/productseries.py'
--- lib/lp/registry/browser/productseries.py 2010-08-20 20:31:18 +0000
+++ lib/lp/registry/browser/productseries.py 2010-08-24 02:26:48 +0000
@@ -428,7 +428,8 @@
428 @property428 @property
429 def request_import_link(self):429 def request_import_link(self):
430 """A link to the page for requesting a new code import."""430 """A link to the page for requesting a new code import."""
431 return canonical_url(self.context.product, view_name='+new-import')431 return canonical_url(
432 self.context.product, view_name='+new-import', rootsite='code')
432433
433 @property434 @property
434 def user_branch_visible(self):435 def user_branch_visible(self):
435436
=== modified file 'lib/lp/registry/browser/tests/productseries-views.txt'
--- lib/lp/registry/browser/tests/productseries-views.txt 2010-07-30 20:00:59 +0000
+++ lib/lp/registry/browser/tests/productseries-views.txt 2010-08-24 02:26:48 +0000
@@ -158,7 +158,7 @@
158The view also provides a link to register a new code import.158The view also provides a link to register a new code import.
159159
160 >>> print view.request_import_link160 >>> print view.request_import_link
161 http://launchpad.dev/firefox/+new-import161 http://code.launchpad.dev/firefox/+new-import
162162
163163
164Edit ProductSeries164Edit ProductSeries
165165
=== modified file 'lib/lp/registry/stories/productseries/xx-productseries-link-branch.txt'
--- lib/lp/registry/stories/productseries/xx-productseries-link-branch.txt 2009-10-06 21:58:56 +0000
+++ lib/lp/registry/stories/productseries/xx-productseries-link-branch.txt 2010-08-24 02:26:48 +0000
@@ -61,7 +61,7 @@
6161
62 >>> revisions = find_tag_by_id(sample_browser.contents, 'branch-revision-details')62 >>> revisions = find_tag_by_id(sample_browser.contents, 'branch-revision-details')
63 >>> print extract_text(revisions)63 >>> print extract_text(revisions)
64 15 revisions, 5 in the past month.64 15 revisions.
6565
66A helpful informational message is also shown to the user.66A helpful informational message is also shown to the user.
6767
6868
=== modified file 'lib/lp/registry/templates/productseries-codesummary.pt'
--- lib/lp/registry/templates/productseries-codesummary.pt 2010-04-12 23:10:39 +0000
+++ lib/lp/registry/templates/productseries-codesummary.pt 2010-08-24 02:26:48 +0000
@@ -84,13 +84,12 @@
84 <a id="series-branch" class="sprite branch"84 <a id="series-branch" class="sprite branch"
85 tal:attributes="href context/branch/fmt:url"85 tal:attributes="href context/branch/fmt:url"
86 tal:content="context/branch/bzr_identity">Mozilla Thunderbird 0.9.1</a>86 tal:content="context/branch/bzr_identity">Mozilla Thunderbird 0.9.1</a>
87 - <a tal:replace="structure context/branch/owner/fmt:link/+ownedbranches" />87 - <a tal:replace="structure context/branch/owner/fmt:link:code/+ownedbranches" />
88 <a88 <a
89 tal:replace="structure context/menu:overview/link_branch/fmt:icon" />89 tal:replace="structure context/menu:overview/link_branch/fmt:icon" />
90 </div>90 </div>
91 <div id="branch-revision-details" tal:condition="context/branch/revision_count">91 <div id="branch-revision-details" tal:condition="context/branch/revision_count">
92 <span tal:replace="context/branch/revision_count">35</span> revisions,92 <span tal:replace="context/branch/revision_count">35</span> revisions.
93 <span tal:replace="context/branch/@@+product-summary-listing/recent_revision_count">31</span> in the past month.
94 </div>93 </div>
95</tal:block>94</tal:block>
9695
9796
=== modified file 'lib/lp/testing/menu.py'
--- lib/lp/testing/menu.py 2010-08-20 20:31:18 +0000
+++ lib/lp/testing/menu.py 2010-08-24 02:26:48 +0000
@@ -5,10 +5,7 @@
55
6__metaclass__ = type6__metaclass__ = type
77
8from zope.component import getMultiAdapter
9
10from canonical.launchpad.webapp.publisher import canonical_url8from canonical.launchpad.webapp.publisher import canonical_url
11from canonical.lazr.testing.menus import make_fake_request
129
1310
14def check_menu_links(menu):11def check_menu_links(menu):
@@ -21,10 +18,10 @@
21 view_name, _args = link.target.split('?')18 view_name, _args = link.target.split('?')
22 else:19 else:
23 view_name = link.target20 view_name = link.target
24 url = canonical_url(context, view_name=view_name)21 if view_name == '':
25 request = make_fake_request(url)22 view_name = None
26 try:23 try:
27 view = getMultiAdapter((context, request), name=view_name)24 canonical_url(context, view_name=view_name, rootsite=link.site)
28 except:25 except:
29 return 'Bad link %s: %s' % (link.name, url)26 return 'Bad link %s: %s' % (link.name, canonical_url(context))
30 return True27 return True
3128
=== modified file 'lib/lp/testing/views.py'
--- lib/lp/testing/views.py 2010-08-20 20:31:18 +0000
+++ lib/lp/testing/views.py 2010-08-24 02:26:48 +0000
@@ -23,14 +23,19 @@
2323
24from canonical.config import config24from canonical.config import config
25from canonical.launchpad.layers import setFirstLayer25from canonical.launchpad.layers import setFirstLayer
26from canonical.launchpad.webapp.interfaces import IPlacelessAuthUtility26from canonical.launchpad.webapp.interfaces import (
27 ICanonicalUrlData,
28 IPlacelessAuthUtility,
29 )
30from canonical.launchpad.webapp.publisher import layer_for_rootsite
27from canonical.launchpad.webapp.servers import LaunchpadTestRequest31from canonical.launchpad.webapp.servers import LaunchpadTestRequest
28from canonical.lazr import ExportedFolder32from canonical.lazr import ExportedFolder
2933
3034
31def create_view(context, name, form=None, layer=None, server_url=None,35def create_view(context, name, form=None, layer=None, server_url=None,
32 method='GET', principal=None, query_string='', cookie='',36 method='GET', principal=None, query_string='', cookie='',
33 request=None, path_info='/', current_request=False, **kwargs):37 request=None, path_info='/', current_request=False,
38 rootsite=None, **kwargs):
34 """Return a view based on the given arguments.39 """Return a view based on the given arguments.
3540
36 :param context: The context for the view.41 :param context: The context for the view.
@@ -59,6 +64,16 @@
59 else:64 else:
60 request.setPrincipal(65 request.setPrincipal(
61 getUtility(IPlacelessAuthUtility).unauthenticatedPrincipal())66 getUtility(IPlacelessAuthUtility).unauthenticatedPrincipal())
67 if layer is None:
68 # If a layer hasn't been specified, try to get the layer for the
69 # rootsite.
70 if rootsite is None:
71 # If we haven't been told a site, try to get it from the canonical
72 # url data of the object.
73 obj_urldata = ICanonicalUrlData(context, None)
74 if obj_urldata is not None:
75 rootsite = obj_urldata.rootsite
76 layer = layer_for_rootsite(rootsite)
62 if layer is not None:77 if layer is not None:
63 setFirstLayer(request, layer)78 setFirstLayer(request, layer)
64 if current_request:79 if current_request:
@@ -70,7 +85,7 @@
70def create_initialized_view(context, name, form=None, layer=None,85def create_initialized_view(context, name, form=None, layer=None,
71 server_url=None, method=None, principal=None,86 server_url=None, method=None, principal=None,
72 query_string=None, cookie=None, request=None,87 query_string=None, cookie=None, request=None,
73 path_info='/'):88 path_info='/', rootsite=None):
74 """Return a view that has already been initialized."""89 """Return a view that has already been initialized."""
75 if method is None:90 if method is None:
76 if form is None:91 if form is None:
@@ -79,7 +94,7 @@
79 method = 'POST'94 method = 'POST'
80 view = create_view(95 view = create_view(
81 context, name, form, layer, server_url, method, principal,96 context, name, form, layer, server_url, method, principal,
82 query_string, cookie, request, path_info)97 query_string, cookie, request, path_info, rootsite=rootsite)
83 view.initialize()98 view.initialize()
84 return view99 return view
85100