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
1=== modified file 'lib/canonical/launchpad/doc/canonical_url_examples.txt'
2--- lib/canonical/launchpad/doc/canonical_url_examples.txt 2010-07-19 11:58:01 +0000
3+++ lib/canonical/launchpad/doc/canonical_url_examples.txt 2010-08-24 02:26:48 +0000
4@@ -39,7 +39,7 @@
5 The Bazaar homepage.
6
7 >>> canonical_url(getUtility(IBazaarApplication))
8- u'http://launchpad.dev/+code'
9+ u'http://code.launchpad.dev/+code'
10
11 The Answer Tracker
12
13
14=== modified file 'lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt'
15--- lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt 2010-01-22 22:29:42 +0000
16+++ lib/canonical/launchpad/pagetests/basics/notfound-traversals.txt 2010-08-24 02:26:48 +0000
17@@ -103,7 +103,6 @@
18 >>> check("/projectgroups/+all", auth=True)
19 >>> check("/mozilla")
20 >>> check("/mozilla/firefox")
21->>> check("/mozilla/+branches")
22 >>> check_redirect("/mozilla/+translations", status=301)
23 >>> check("/mozilla/+translations", host='translations.launchpad.dev')
24
25@@ -135,7 +134,6 @@
26
27 >>> check_not_found("/firefox/+milestone")
28 >>> check("/firefox/+milestone/1.0")
29->>> check("/firefox/+branches")
30
31 >>> check("/distros")
32 >>> check("/distros/+add", auth=True)
33@@ -378,13 +376,8 @@
34 And this is for a person:
35
36 >>> check("/~name16/+edit", auth=True)
37->>> check("/~name16/+branches")
38 >>> check_redirect("/~name12/+branch/gnome-terminal/pushed/", status=301)
39 >>> check_redirect("/~name12/+branch/gnome-terminal/pushed/+edit", auth=True, status=301)
40->>> check("/~name12/gnome-terminal/pushed/")
41->>> check_not_found("/~name12/+branch/gnome-terminal/fubared/")
42->>> check_not_found("/~name12/gnome-terminal/fubared/")
43->>> check("/~name12/gnome-terminal/pushed/+edit", auth=True)
44 >>> check_not_found("/~name16/+bugs/1")
45 >>> check("/~name16/+reportedbugs")
46 >>> check("/~name16/+assignedbugs")
47@@ -408,8 +401,6 @@
48 >>> check("/~mark/+packagebugs")
49 >>> check("/~mark/+related-software")
50
51->>> check("/+code")
52-
53 >>> check("/builders")
54 >>> check("/builders/bob/")
55 >>> check_redirect("/+builds", status=301)
56
57=== modified file 'lib/lp/blueprints/templates/specificationbranch-status.pt'
58--- lib/lp/blueprints/templates/specificationbranch-status.pt 2009-09-15 16:00:11 +0000
59+++ lib/lp/blueprints/templates/specificationbranch-status.pt 2010-08-24 02:26:48 +0000
60@@ -13,12 +13,6 @@
61
62 <div metal:use-macro="context/@@launchpad_form/form">
63
64- <div metal:fill-slot="extra_top">
65- <ul class="branch"
66- tal:content="structure context/branch/@@+product-summary-listing"
67- />
68- </div>
69-
70 </div>
71 </div>
72 </metal:main>
73
74=== modified file 'lib/lp/code/browser/branchlisting.py'
75--- lib/lp/code/browser/branchlisting.py 2010-08-20 20:31:18 +0000
76+++ lib/lp/code/browser/branchlisting.py 2010-08-24 02:26:48 +0000
77@@ -943,7 +943,9 @@
78 enabled = self.user.inTeam(self.context)
79 text = 'Register a branch'
80 summary = 'Register a new Bazaar branch'
81- return Link('+addbranch', text, summary, icon='add', enabled=enabled)
82+ return Link(
83+ '+addbranch', text, summary, icon='add', enabled=enabled,
84+ site='code')
85
86
87 class PersonProductBranchesMenu(PersonBranchesMenu):
88@@ -1104,12 +1106,12 @@
89 def branch_add(self):
90 text = 'Register a branch'
91 summary = 'Register a new Bazaar branch for this project'
92- return Link('+addbranch', text, summary, icon='add')
93+ return Link('+addbranch', text, summary, icon='add', site='code')
94
95 def list_branches(self):
96 text = 'List branches'
97 summary = 'List the branches for this project'
98- return Link('+branches', text, summary, icon='add')
99+ return Link('+branches', text, summary, icon='add', site='code')
100
101 @cachedproperty
102 def active_review_count(self):
103@@ -1122,7 +1124,7 @@
104 self.active_review_count,
105 'active review or unmerged proposal',
106 'active reviews or unmerged proposals')
107- return Link('+activereviews', text)
108+ return Link('+activereviews', text, site='code')
109
110 @enabled_with_permission('launchpad.Commercial')
111 def branch_visibility(self):
112@@ -1131,7 +1133,7 @@
113
114 def code_import(self):
115 text = 'Import a branch'
116- return Link('+new-import', text, icon='add')
117+ return Link('+new-import', text, icon='add', site='code')
118
119
120 class ProductBranchListingView(BranchListingView):
121
122=== modified file 'lib/lp/code/browser/branchvisibilitypolicy.py'
123--- lib/lp/code/browser/branchvisibilitypolicy.py 2010-08-20 20:31:18 +0000
124+++ lib/lp/code/browser/branchvisibilitypolicy.py 2010-08-24 02:26:48 +0000
125@@ -55,7 +55,7 @@
126
127 @property
128 def next_url(self):
129- return canonical_url(self.context) + '/+branchvisibility'
130+ return canonical_url(self.context, view_name='+branchvisibility')
131
132 cancel_url = next_url
133
134
135=== modified file 'lib/lp/code/browser/configure.zcml'
136--- lib/lp/code/browser/configure.zcml 2010-08-09 19:49:03 +0000
137+++ lib/lp/code/browser/configure.zcml 2010-08-24 02:26:48 +0000
138@@ -37,6 +37,7 @@
139 />
140 <browser:page
141 for="canonical.launchpad.webapp.interfaces.ILaunchpadApplication"
142+ layer="lp.code.publisher.CodeLayer"
143 name="+recently-registered-branches"
144 class="lp.code.browser.branchlisting.RecentlyRegisteredBranchesView"
145 template="../templates/branch-listing-cross-product.pt"
146@@ -44,6 +45,7 @@
147 />
148 <browser:page
149 for="canonical.launchpad.webapp.interfaces.ILaunchpadApplication"
150+ layer="lp.code.publisher.CodeLayer"
151 name="+recently-imported-branches"
152 class="lp.code.browser.branchlisting.RecentlyImportedBranchesView"
153 template="../templates/branch-listing-cross-product.pt"
154@@ -51,6 +53,7 @@
155 />
156 <browser:page
157 for="canonical.launchpad.webapp.interfaces.ILaunchpadApplication"
158+ layer="lp.code.publisher.CodeLayer"
159 name="+recently-changed-branches"
160 class="lp.code.browser.branchlisting.RecentlyChangedBranchesView"
161 template="../templates/branch-listing-cross-product.pt"
162@@ -72,6 +75,7 @@
163 rootsite="code"/>
164 <browser:page
165 for="lp.code.interfaces.codereviewvote.ICodeReviewVoteReference"
166+ layer="lp.code.publisher.CodeLayer"
167 name="+reassign"
168 class="lp.code.browser.codereviewvote.CodeReviewVoteReassign"
169 facet="branches"
170@@ -90,6 +94,7 @@
171 layer="lp.code.publisher.CodeLayer"/>
172 <browser:page
173 for="lp.code.interfaces.codeimportmachine.ICodeImportMachine"
174+ layer="lp.code.publisher.CodeLayer"
175 class="lp.code.browser.codeimportmachine.CodeImportMachineView"
176 name="+index"
177 template="../templates/codeimport-machine-index.pt"
178@@ -99,8 +104,7 @@
179 facet="branches">
180 <browser:navigation
181 module="lp.code.browser.codeimportmachine"
182- classes="
183- CodeImportMachineSetNavigation"/>
184+ classes="CodeImportMachineSetNavigation"/>
185 <browser:url
186 for="lp.code.interfaces.codeimportmachine.ICodeImportMachineSet"
187 path_expression="string:+machines"
188@@ -112,6 +116,7 @@
189 layer="lp.code.publisher.CodeLayer"/>
190 <browser:page
191 for="lp.code.interfaces.codeimportmachine.ICodeImportMachineSet"
192+ layer="lp.code.publisher.CodeLayer"
193 class="lp.code.browser.codeimportmachine.CodeImportMachineSetView"
194 name="+index"
195 template="../templates/codeimport-machines.pt"
196@@ -123,17 +128,19 @@
197 attribute_to_parent="branch"/>
198 <browser:navigation
199 module="lp.code.browser.branchref"
200- classes="
201- BranchRefNavigation"/>
202+ classes="BranchRefNavigation"/>
203 <browser:url
204 for="canonical.launchpad.interfaces.IBazaarApplication"
205 path_expression="string:+code"
206- parent_utility="canonical.launchpad.interfaces.ILaunchpadRoot"/>
207+ parent_utility="canonical.launchpad.interfaces.ILaunchpadRoot"
208+ rootsite="code"/>
209 <browser:defaultView
210 for="canonical.launchpad.interfaces.IBazaarApplication"
211+ layer="lp.code.publisher.CodeLayer"
212 name="+index"/>
213 <browser:pages
214 for="canonical.launchpad.interfaces.IBazaarApplication"
215+ layer="lp.code.publisher.CodeLayer"
216 permission="zope.Public"
217 class="lp.code.browser.bazaar.BazaarApplicationView"
218 facet="branches">
219@@ -143,16 +150,17 @@
220 </browser:pages>
221 <browser:page
222 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
223+ layer="lp.code.publisher.CodeLayer"
224 name="+hierarchy"
225 class="lp.code.browser.branch.BranchHierarchy"
226 template="../../app/templates/launchpad-hierarchy.pt"
227 permission="zope.Public"/>
228 <browser:navigation
229 module="lp.code.browser.branchmergeproposal"
230- classes="
231- BranchMergeProposalNavigation"/>
232+ classes="BranchMergeProposalNavigation"/>
233 <browser:defaultView
234 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
235+ layer="lp.code.publisher.CodeLayer"
236 name="+index"/>
237
238 <!-- No view needed -->
239@@ -170,6 +178,7 @@
240
241 <browser:pages
242 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
243+ layer="lp.code.publisher.CodeLayer"
244 class="lp.code.browser.branchmergeproposal.BranchMergeProposalView"
245 facet="branches"
246 permission="launchpad.View">
247@@ -197,6 +206,7 @@
248 </browser:pages>
249 <browser:pages
250 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
251+ layer="lp.code.publisher.CodeLayer"
252 class="lp.code.browser.branchmergeproposal.BranchMergeProposalEditView"
253 facet="branches"
254 permission="launchpad.Edit">
255@@ -207,6 +217,7 @@
256 <browser:page
257 name="+edit-commit-message"
258 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
259+ layer="lp.code.publisher.CodeLayer"
260 class="lp.code.browser.branchmergeproposal.BranchMergeProposalCommitMessageEditView"
261 facet="branches"
262 permission="launchpad.Edit"
263@@ -214,6 +225,7 @@
264 <browser:page
265 name="+edit-description"
266 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
267+ layer="lp.code.publisher.CodeLayer"
268 class="lp.code.browser.branchmergeproposal.BranchMergeProposalDescriptionEditView"
269 facet="branches"
270 permission="launchpad.Edit"
271@@ -221,6 +233,7 @@
272 <browser:page
273 name="+delete"
274 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
275+ layer="lp.code.publisher.CodeLayer"
276 class="lp.code.browser.branchmergeproposal.BranchMergeProposalDeleteView"
277 facet="branches"
278 permission="launchpad.Edit"
279@@ -228,6 +241,7 @@
280 <browser:page
281 name="+edit-status"
282 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
283+ layer="lp.code.publisher.CodeLayer"
284 class="lp.code.browser.branchmergeproposal.BranchMergeProposalChangeStatusView"
285 facet="branches"
286 permission="launchpad.Edit"
287@@ -235,6 +249,7 @@
288 <browser:page
289 name="+request-review"
290 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
291+ layer="lp.code.publisher.CodeLayer"
292 class="lp.code.browser.branchmergeproposal.BranchMergeProposalRequestReviewView"
293 facet="branches"
294 permission="launchpad.Edit"
295@@ -242,6 +257,7 @@
296 <browser:page
297 name="+resubmit"
298 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
299+ layer="lp.code.publisher.CodeLayer"
300 class="lp.code.browser.branchmergeproposal.BranchMergeProposalResubmitView"
301 facet="branches"
302 permission="launchpad.Edit"
303@@ -249,6 +265,7 @@
304 <browser:page
305 name="+enqueue"
306 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
307+ layer="lp.code.publisher.CodeLayer"
308 class="lp.code.browser.branchmergeproposal.BranchMergeProposalEnqueueView"
309 facet="branches"
310 permission="launchpad.Edit"
311@@ -256,6 +273,7 @@
312 <browser:page
313 name="+dequeue"
314 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
315+ layer="lp.code.publisher.CodeLayer"
316 class="lp.code.browser.branchmergeproposal.BranchMergeProposalDequeueView"
317 facet="branches"
318 permission="launchpad.Edit"
319@@ -263,6 +281,7 @@
320 <browser:page
321 name="+dequeue-inline"
322 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
323+ layer="lp.code.publisher.CodeLayer"
324 class="lp.code.browser.branchmergeproposal.BranchMergeProposalInlineDequeueView"
325 facet="branches"
326 permission="launchpad.Edit"
327@@ -270,6 +289,7 @@
328 <browser:page
329 name="+jump-queue"
330 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
331+ layer="lp.code.publisher.CodeLayer"
332 class="lp.code.browser.branchmergeproposal.BranchMergeProposalJumpQueueView"
333 facet="branches"
334 permission="launchpad.Edit"
335@@ -277,6 +297,7 @@
336 <browser:page
337 name="+merged"
338 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
339+ layer="lp.code.publisher.CodeLayer"
340 class="lp.code.browser.branchmergeproposal.BranchMergeProposalMergedView"
341 facet="branches"
342 permission="launchpad.Edit"
343@@ -291,6 +312,7 @@
344 <browser:page
345 name="+pagelet-subscribers"
346 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
347+ layer="lp.code.publisher.CodeLayer"
348 class="lp.code.browser.branchmergeproposal.BranchMergeProposalSubscribersView"
349 facet="branches"
350 permission="launchpad.View"
351@@ -298,6 +320,7 @@
352 <browser:page
353 name="+comment"
354 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
355+ layer="lp.code.publisher.CodeLayer"
356 class="lp.code.browser.codereviewcomment.CodeReviewCommentAddView"
357 facet="branches"
358 permission="launchpad.AnyPerson"
359@@ -305,6 +328,7 @@
360 <browser:page
361 name="+review"
362 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposal"
363+ layer="lp.code.publisher.CodeLayer"
364 class="lp.code.browser.branchmergeproposal.BranchMergeProposalAddVoteView"
365 facet="branches"
366 permission="launchpad.AnyPerson"
367@@ -316,11 +340,13 @@
368 rootsite="code"/>
369 <browser:page
370 for="lp.code.interfaces.branchmergeproposal.IBranchMergeProposalListingBatchNavigator"
371+ layer="lp.code.publisher.CodeLayer"
372 name="+listing"
373 template="../templates/branchmergeproposal-listing.pt"
374 permission="zope.Public"/>
375 <browser:page
376 for="*"
377+ layer="lp.code.publisher.CodeLayer"
378 name="+bmp-macros"
379 permission="zope.Public"
380 template="../templates/branchmergeproposal-macros.pt"/>
381@@ -332,16 +358,19 @@
382 module="lp.code.browser.branchmergeproposal"/>
383 <browser:page
384 for="lp.code.interfaces.branchsubscription.IBranchSubscription"
385+ layer="lp.code.publisher.CodeLayer"
386 name="+hierarchy"
387 class="lp.code.browser.branch.BranchHierarchy"
388 template="../../app/templates/launchpad-hierarchy.pt"
389 permission="zope.Public"/>
390 <browser:defaultView
391 for="lp.code.interfaces.branchsubscription.IBranchSubscription"
392+ layer="lp.code.publisher.CodeLayer"
393 name="+index"/>
394 <browser:page
395 name="+index"
396 for="lp.code.interfaces.branchsubscription.IBranchSubscription"
397+ layer="lp.code.publisher.CodeLayer"
398 class="lp.code.browser.branchsubscription.BranchSubscriptionEditView"
399 facet="branches"
400 permission="launchpad.Edit"
401@@ -353,22 +382,24 @@
402 rootsite="code"/>
403 <browser:page
404 for="lp.code.interfaces.branch.IBranch"
405+ layer="lp.code.publisher.CodeLayer"
406 name="+hierarchy"
407 class="lp.code.browser.branch.BranchHierarchy"
408 template="../../app/templates/launchpad-hierarchy.pt"
409 permission="zope.Public"/>
410 <browser:defaultView
411 for="lp.code.interfaces.branch.IBranch"
412+ layer="lp.code.publisher.CodeLayer"
413 name="+index"/>
414 <browser:url
415 for="lp.code.interfaces.branch.IBranch"
416 urldata="lp.code.browser.branch.BranchURL"/>
417 <browser:navigation
418 module="lp.code.browser.branch"
419- classes="
420- BranchNavigation"/>
421+ classes="BranchNavigation"/>
422 <browser:pages
423 for="lp.code.interfaces.branch.IBranch"
424+ layer="lp.code.publisher.CodeLayer"
425 facet="branches"
426 permission="zope.Public"
427 class="lp.code.browser.branch.BranchView">
428@@ -410,6 +441,7 @@
429 </browser:pages>
430 <browser:pages
431 for="lp.code.interfaces.branch.IBranch"
432+ layer="lp.code.publisher.CodeLayer"
433 permission="zope.Public">
434 <browser:page
435 name="+portlet-privacy"
436@@ -421,6 +453,7 @@
437 <browser:page
438 name="+portlet-subscribers"
439 for="lp.code.interfaces.branch.IBranch"
440+ layer="lp.code.publisher.CodeLayer"
441 class="lp.code.browser.branch.BranchSubscriptionsView"
442 facet="branches"
443 permission="zope.Public"
444@@ -428,11 +461,13 @@
445 <browser:page
446 name="+branch-portlet-subscriber-content"
447 for="lp.code.interfaces.branch.IBranch"
448+ layer="lp.code.publisher.CodeLayer"
449 class="lp.code.browser.branchsubscription.BranchPortletSubscribersContent"
450 template="../templates/branch-portlet-subscribers-content.pt"
451 permission="zope.Public" />
452 <browser:pages
453 for="lp.code.interfaces.branch.IBranch"
454+ layer="lp.code.publisher.CodeLayer"
455 facet="overview"
456 permission="zope.Public"
457 class="lp.code.browser.branch.BranchInProductView">
458@@ -442,11 +477,13 @@
459 </browser:pages>
460 <browser:page
461 for="lp.code.interfaces.branch.IBranch"
462+ layer="lp.code.publisher.CodeLayer"
463 name="+macros"
464 permission="zope.Public"
465 template="../templates/branch-macros.pt"/>
466 <browser:page
467 for="*"
468+ layer="lp.code.publisher.CodeLayer"
469 name="branch-form-macros"
470 permission="zope.Public"
471 template="../templates/branch-form-macros.pt"/>
472@@ -454,12 +491,14 @@
473 name="+whiteboard"
474 for="lp.code.interfaces.branch.IBranch"
475 class="lp.code.browser.branch.BranchEditWhiteboardView"
476+ layer="lp.code.publisher.CodeLayer"
477 facet="branches"
478 permission="launchpad.AnyPerson"
479 template="../../app/templates/generic-edit.pt"/>
480 <browser:page
481 name="+edit-status"
482 for="lp.code.interfaces.branch.IBranch"
483+ layer="lp.code.publisher.CodeLayer"
484 class="lp.code.browser.branch.BranchEditStatusView"
485 facet="branches"
486 permission="launchpad.Edit"
487@@ -467,6 +506,7 @@
488 <browser:page
489 name="+edit"
490 for="lp.code.interfaces.branch.IBranch"
491+ layer="lp.code.publisher.CodeLayer"
492 class="lp.code.browser.branch.BranchEditView"
493 facet="branches"
494 permission="launchpad.Edit"
495@@ -474,6 +514,7 @@
496 <browser:page
497 name="+upgrade"
498 for="lp.code.interfaces.branch.IBranch"
499+ layer="lp.code.publisher.CodeLayer"
500 class="lp.code.browser.branch.BranchUpgradeView"
501 facet="branches"
502 permission="launchpad.Edit"
503@@ -481,6 +522,7 @@
504 <browser:page
505 name="+reviewer"
506 for="lp.code.interfaces.branch.IBranch"
507+ layer="lp.code.publisher.CodeLayer"
508 class="lp.code.browser.branch.BranchReviewerEditView"
509 facet="branches"
510 permission="launchpad.Edit"
511@@ -488,6 +530,7 @@
512 <browser:page
513 name="+edit-import"
514 for="lp.code.interfaces.branch.IBranch"
515+ layer="lp.code.publisher.CodeLayer"
516 class="lp.code.browser.codeimport.CodeImportEditView"
517 facet="branches"
518 permission="launchpad.Edit"
519@@ -495,12 +538,14 @@
520 <browser:page
521 name="+delete"
522 for="lp.code.interfaces.branch.IBranch"
523+ layer="lp.code.publisher.CodeLayer"
524 class="lp.code.browser.branch.BranchDeletionView"
525 facet="branches"
526 permission="launchpad.Edit"
527 template="../templates/branch-delete.pt"/>
528 <browser:pages
529 for="lp.code.interfaces.branch.IBranch"
530+ layer="lp.code.publisher.CodeLayer"
531 class="lp.code.browser.branch.BranchMirrorStatusView"
532 facet="branches"
533 permission="launchpad.View">
534@@ -514,6 +559,7 @@
535 <browser:page
536 name="+subscribe"
537 for="lp.code.interfaces.branch.IBranch"
538+ layer="lp.code.publisher.CodeLayer"
539 class="lp.code.browser.branchsubscription.BranchSubscriptionAddView"
540 facet="branches"
541 permission="launchpad.AnyPerson"
542@@ -521,6 +567,7 @@
543 <browser:page
544 name="+register-merge"
545 for="lp.code.interfaces.branch.IBranch"
546+ layer="lp.code.publisher.CodeLayer"
547 class="lp.code.browser.branch.RegisterBranchMergeProposalView"
548 facet="branches"
549 permission="launchpad.AnyPerson"
550@@ -528,6 +575,7 @@
551 <browser:page
552 name="+linkbug"
553 for="lp.code.interfaces.branch.IBranch"
554+ layer="lp.code.publisher.CodeLayer"
555 class="lp.bugs.browser.bugbranch.BranchLinkToBugView"
556 facet="branches"
557 permission="launchpad.AnyPerson"
558@@ -535,6 +583,7 @@
559 <browser:page
560 name="+linkblueprint"
561 for="lp.code.interfaces.branch.IBranch"
562+ layer="lp.code.publisher.CodeLayer"
563 class="lp.blueprints.browser.specificationbranch.BranchLinkToSpecificationView"
564 facet="branches"
565 permission="launchpad.AnyPerson"
566@@ -542,6 +591,7 @@
567 <browser:page
568 name="+addsubscriber"
569 for="lp.code.interfaces.branch.IBranch"
570+ layer="lp.code.publisher.CodeLayer"
571 class="lp.code.browser.branchsubscription.BranchSubscriptionAddOtherView"
572 facet="branches"
573 permission="launchpad.AnyPerson"
574@@ -549,24 +599,28 @@
575 <browser:page
576 name="+edit-subscription"
577 for="lp.code.interfaces.branch.IBranch"
578+ layer="lp.code.publisher.CodeLayer"
579 class="lp.code.browser.branchsubscription.BranchSubscriptionEditOwnView"
580 facet="branches"
581 permission="launchpad.AnyPerson"
582 template="../templates/branch-edit-subscription.pt"/>
583 <browser:page
584 for="lp.code.interfaces.branch.IBranch"
585+ layer="lp.code.publisher.CodeLayer"
586 class="lp.code.browser.branch.BranchRequestImportView"
587 name="+request-import"
588 template="../templates/inline-form-only-buttons.pt"
589 permission="launchpad.AnyPerson"/>
590 <browser:page
591 for="lp.code.interfaces.branch.IBranch"
592+ layer="lp.code.publisher.CodeLayer"
593 class="lp.code.browser.branch.TryImportAgainView"
594 name="+try-again"
595 template="../templates/inline-form-only-buttons.pt"
596 permission="launchpad.AnyPerson"/>
597 <browser:page
598 for="lp.code.interfaces.branch.IBranch"
599+ layer="lp.code.publisher.CodeLayer"
600 class="lp.code.browser.branchmergeproposallisting.BranchActiveReviewsView"
601 permission="zope.Public"
602 name="+activereviews"
603@@ -574,6 +628,7 @@
604 template="../templates/active-reviews.pt"/>
605 <browser:page
606 for="lp.code.interfaces.branch.IBranchBatchNavigator"
607+ layer="lp.code.publisher.CodeLayer"
608 name="+branch-listing"
609 template="../templates/branch-listing.pt"
610 permission="zope.Public"/>
611@@ -601,6 +656,7 @@
612 <browser:page
613 name="+spark"
614 for="lp.code.interfaces.branch.IBranch"
615+ layer="lp.code.publisher.CodeLayer"
616 class="lp.code.browser.branch.BranchSparkView"
617 facet="branches"
618 permission="zope.Public"/>
619@@ -611,6 +667,7 @@
620 module="lp.code.browser.branch"/>
621 <browser:page
622 for="lp.code.interfaces.codereviewcomment.ICodeReviewComment"
623+ layer="lp.code.publisher.CodeLayer"
624 name="+hierarchy"
625 class="lp.code.browser.branch.BranchHierarchy"
626 template="../../app/templates/launchpad-hierarchy.pt"
627@@ -622,10 +679,12 @@
628 rootsite="code"/>
629 <browser:defaultView
630 for="lp.code.interfaces.codereviewcomment.ICodeReviewComment"
631+ layer="lp.code.publisher.CodeLayer"
632 name="+index"/>
633 <browser:pages
634 facet="branches"
635 for="lp.code.interfaces.codereviewcomment.ICodeReviewComment"
636+ layer="lp.code.publisher.CodeLayer"
637 class="lp.code.browser.codereviewcomment.CodeReviewCommentView"
638 permission="zope.Public">
639 <browser:page
640@@ -647,6 +706,7 @@
641 <browser:pages
642 facet="branches"
643 for="lp.code.browser.branchmergeproposal.ICodeReviewNewRevisions"
644+ layer="lp.code.publisher.CodeLayer"
645 class="lp.code.browser.branchmergeproposal.CodeReviewNewRevisionsView"
646 permission="zope.Public">
647 <browser:page
648@@ -660,17 +720,18 @@
649 name="+reply"
650 facet="branches"
651 for="lp.code.interfaces.codereviewcomment.ICodeReviewComment"
652+ layer="lp.code.publisher.CodeLayer"
653 class="lp.code.browser.codereviewcomment.CodeReviewCommentAddView"
654 permission="launchpad.AnyPerson"
655 template="../templates/codereviewcomment-reply.pt"/>
656 <browser:menus
657- classes="
658- CodeReviewCommentContextMenu"
659+ classes="CodeReviewCommentContextMenu"
660 module="lp.code.browser.codereviewcomment"/>
661 <facet
662 facet="branches">
663 <browser:page
664 for="lp.code.interfaces.codeimport.ICodeImport"
665+ layer="lp.code.publisher.CodeLayer"
666 name="+macros"
667 permission="zope.Public"
668 template="../templates/codeimport-macros.pt"/>
669@@ -688,18 +749,21 @@
670 layer="lp.code.publisher.CodeLayer"/>
671 <browser:page
672 for="lp.code.interfaces.codeimport.ICodeImportSet"
673+ layer="lp.code.publisher.CodeLayer"
674 class="lp.code.browser.codeimport.CodeImportSetView"
675 name="+index"
676 template="../templates/codeimport-list.pt"
677 permission="zope.Public"/>
678 <browser:page
679 for="lp.code.interfaces.codeimport.ICodeImportSet"
680+ layer="lp.code.publisher.CodeLayer"
681 class="lp.code.browser.codeimport.CodeImportNewView"
682 name="+new"
683 template="../templates/codeimport-new.pt"
684 permission="launchpad.AnyPerson"/>
685 <browser:page
686 for="lp.registry.interfaces.product.IProduct"
687+ layer="lp.code.publisher.CodeLayer"
688 class="lp.code.browser.codeimport.CodeImportNewView"
689 name="+new-import"
690 template="../templates/codeimport-new.pt"
691@@ -712,14 +776,14 @@
692 rootsite="code"/>
693 <browser:navigation
694 module="lp.code.browser.codeimport"
695- classes="
696- CodeImportSetNavigation"/>
697+ classes="CodeImportSetNavigation"/>
698 <browser:defaultView
699 for="lp.registry.interfaces.projectgroup.IProjectGroup"
700 name="+branches"
701 layer="lp.code.publisher.CodeLayer"/>
702 <browser:page
703 for="lp.registry.interfaces.sourcepackage.ISourcePackage"
704+ layer="lp.code.publisher.CodeLayer"
705 class="lp.code.browser.branchlisting.SourcePackageBranchesView"
706 permission="zope.Public"
707 facet="branches"
708@@ -727,6 +791,7 @@
709 template="../templates/sourcepackage-branches.pt"/>
710 <browser:page
711 for="lp.registry.interfaces.sourcepackage.ISourcePackage"
712+ layer="lp.code.publisher.CodeLayer"
713 class="lp.code.browser.summary.BranchCountSummaryView"
714 facet="branches"
715 permission="zope.Public"
716@@ -734,6 +799,7 @@
717 template="../templates/branch-count-summary.pt"/>
718 <browser:page
719 for="lp.registry.interfaces.distribution.IDistribution"
720+ layer="lp.code.publisher.CodeLayer"
721 class="lp.code.browser.branchlisting.DistributionBranchListingView"
722 permission="zope.Public"
723 facet="branches"
724@@ -741,6 +807,7 @@
725 template="../templates/generic-branch-listing.pt"/>
726 <browser:page
727 for="lp.registry.interfaces.distribution.IDistribution"
728+ layer="lp.code.publisher.CodeLayer"
729 class="lp.code.browser.summary.BranchCountSummaryView"
730 facet="branches"
731 permission="zope.Public"
732@@ -748,6 +815,7 @@
733 template="../templates/branch-count-summary.pt"/>
734 <browser:page
735 for="lp.registry.interfaces.distroseries.IDistroSeries"
736+ layer="lp.code.publisher.CodeLayer"
737 class="lp.code.browser.branchlisting.DistroSeriesBranchListingView"
738 permission="zope.Public"
739 facet="branches"
740@@ -755,6 +823,7 @@
741 template="../templates/generic-branch-listing.pt"/>
742 <browser:page
743 for="lp.registry.interfaces.distroseries.IDistroSeries"
744+ layer="lp.code.publisher.CodeLayer"
745 class="lp.code.browser.summary.BranchCountSummaryView"
746 facet="branches"
747 permission="zope.Public"
748@@ -762,6 +831,7 @@
749 template="../templates/branch-count-summary.pt"/>
750 <browser:page
751 for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
752+ layer="lp.code.publisher.CodeLayer"
753 class="lp.code.browser.branchlisting.DistributionSourcePackageBranchesView"
754 permission="zope.Public"
755 facet="branches"
756@@ -769,6 +839,7 @@
757 template="../templates/generic-branch-listing.pt"/>
758 <browser:page
759 for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
760+ layer="lp.code.publisher.CodeLayer"
761 class="lp.code.browser.branchlisting.GroupedDistributionSourcePackageBranchesView"
762 permission="zope.Public"
763 facet="branches"
764@@ -776,6 +847,7 @@
765 template="../templates/distributionsourcepackage-branches-grouped.pt"/>
766 <browser:page
767 for="lp.registry.interfaces.distributionsourcepackage.IDistributionSourcePackage"
768+ layer="lp.code.publisher.CodeLayer"
769 class="lp.code.browser.summary.BranchCountSummaryView"
770 facet="branches"
771 permission="zope.Public"
772@@ -783,6 +855,7 @@
773 template="../templates/branch-count-summary.pt"/>
774 <browser:page
775 for="lp.registry.interfaces.projectgroup.IProjectGroup"
776+ layer="lp.code.publisher.CodeLayer"
777 class="lp.code.browser.branchlisting.ProjectBranchesView"
778 facet="branches"
779 permission="zope.Public"
780@@ -790,6 +863,7 @@
781 template="../templates/project-branches.pt"/>
782 <browser:page
783 for="lp.registry.interfaces.projectgroup.IProjectGroup"
784+ layer="lp.code.publisher.CodeLayer"
785 class="lp.code.browser.summary.BranchCountSummaryView"
786 facet="branches"
787 permission="zope.Public"
788@@ -809,6 +883,7 @@
789 <browser:page
790 for="lp.registry.interfaces.person.IPerson"
791 class="lp.code.browser.branchlisting.PersonOwnedBranchesView"
792+ layer="lp.code.publisher.CodeLayer"
793 permission="zope.Public"
794 facet="branches"
795 name="+branches"
796@@ -816,6 +891,7 @@
797 <browser:page
798 for="lp.registry.interfaces.person.IPerson"
799 class="lp.code.browser.branchlisting.PersonOwnedBranchesView"
800+ layer="lp.code.publisher.CodeLayer"
801 permission="zope.Public"
802 facet="branches"
803 name="+ownedbranches"
804@@ -823,12 +899,14 @@
805 <browser:page
806 for="lp.registry.interfaces.person.IPerson"
807 class="lp.code.browser.branchlisting.PersonSubscribedBranchesView"
808+ layer="lp.code.publisher.CodeLayer"
809 permission="zope.Public"
810 facet="branches"
811 name="+subscribedbranches"
812 template="../templates/person-branches.pt"/>
813 <browser:page
814 for="lp.registry.interfaces.person.IPerson"
815+ layer="lp.code.publisher.CodeLayer"
816 class="lp.code.browser.branchlisting.PersonRegisteredBranchesView"
817 permission="zope.Public"
818 facet="branches"
819@@ -836,6 +914,7 @@
820 template="../templates/person-branches.pt"/>
821 <browser:page
822 for="lp.registry.interfaces.person.IPerson"
823+ layer="lp.code.publisher.CodeLayer"
824 class="lp.code.browser.branchlisting.PersonCodeSummaryView"
825 permission="zope.Public"
826 facet="branches"
827@@ -843,6 +922,7 @@
828 template="../templates/person-codesummary.pt"/>
829 <browser:page
830 for="lp.registry.interfaces.person.IPerson"
831+ layer="lp.code.publisher.CodeLayer"
832 class="lp.code.browser.branchmergeproposallisting.PersonActiveReviewsView"
833 permission="zope.Public"
834 facet="branches"
835@@ -851,12 +931,14 @@
836 <browser:page
837 name="+addbranch"
838 for="lp.registry.interfaces.person.IPerson"
839+ layer="lp.code.publisher.CodeLayer"
840 class="lp.code.browser.branch.BranchAddView"
841 facet="branches"
842 permission="launchpad.AnyPerson"
843 template="../templates/branch-add.pt"/>
844 <browser:page
845 for="lp.registry.interfaces.person.IPerson"
846+ layer="lp.code.publisher.CodeLayer"
847 class="lp.code.browser.branchlisting.PersonTeamBranchesView"
848 name="+portlet-teambranches"
849 template="../templates/person-portlet-teambranches.pt"
850@@ -865,6 +947,7 @@
851
852 <browser:page
853 for="lp.registry.interfaces.product.IProduct"
854+ layer="lp.code.publisher.CodeLayer"
855 class="lp.code.browser.branchlisting.ProductBranchesView"
856 facet="branches"
857 permission="zope.Public"
858@@ -872,6 +955,7 @@
859 template="../templates/product-branches.pt"/>
860 <browser:page
861 for="lp.registry.interfaces.product.IProduct"
862+ layer="lp.code.publisher.CodeLayer"
863 class="lp.code.browser.branchlisting.ProductCodeIndexView"
864 facet="branches"
865 permission="zope.Public"
866@@ -879,6 +963,7 @@
867 template="../templates/product-branches.pt"/>
868 <browser:page
869 for="lp.registry.interfaces.product.IProduct"
870+ layer="lp.code.publisher.CodeLayer"
871 class="lp.code.browser.branchlisting.ProductCodeIndexView"
872 facet="branches"
873 permission="zope.Public"
874@@ -886,6 +971,7 @@
875 template="../templates/product-branch-summary.pt"/>
876 <browser:page
877 for="lp.registry.interfaces.product.IProduct"
878+ layer="lp.code.publisher.CodeLayer"
879 class="lp.code.browser.summary.BranchCountSummaryView"
880 facet="branches"
881 permission="zope.Public"
882@@ -895,6 +981,7 @@
883 <browser:page
884 name="+addbranch"
885 for="lp.registry.interfaces.product.IProduct"
886+ layer="lp.code.publisher.CodeLayer"
887 class="lp.code.browser.branch.BranchAddView"
888 facet="branches"
889 permission="launchpad.AnyPerson"
890@@ -903,6 +990,7 @@
891 <browser:page
892 name="+addbranch"
893 for="lp.registry.interfaces.productseries.IProductSeries"
894+ layer="lp.code.publisher.CodeLayer"
895 class="lp.code.browser.branch.BranchAddView"
896 facet="branches"
897 permission="launchpad.AnyPerson"
898@@ -940,8 +1028,7 @@
899
900 <browser:navigation
901 module="lp.code.browser.diff"
902- classes="
903- PreviewDiffNavigation"/>
904+ classes="PreviewDiffNavigation"/>
905
906 <browser:page
907 name="+diff"
908@@ -961,6 +1048,7 @@
909
910 <browser:page
911 for="lp.registry.interfaces.personproduct.IPersonProduct"
912+ layer="lp.code.publisher.CodeLayer"
913 class="lp.code.browser.branchlisting.PersonProductOwnedBranchesView"
914 permission="zope.Public"
915 facet="branches"
916@@ -969,6 +1057,7 @@
917 />
918 <browser:page
919 for="lp.registry.interfaces.personproduct.IPersonProduct"
920+ layer="lp.code.publisher.CodeLayer"
921 class="lp.code.browser.branchlisting.PersonProductSubscribedBranchesView"
922 permission="zope.Public"
923 facet="branches"
924@@ -977,6 +1066,7 @@
925 />
926 <browser:page
927 for="lp.registry.interfaces.personproduct.IPersonProduct"
928+ layer="lp.code.publisher.CodeLayer"
929 class="lp.code.browser.branchlisting.PersonProductRegisteredBranchesView"
930 permission="zope.Public"
931 facet="branches"
932@@ -985,6 +1075,7 @@
933 />
934 <browser:page
935 for="lp.registry.interfaces.personproduct.IPersonProduct"
936+ layer="lp.code.publisher.CodeLayer"
937 class="lp.code.browser.branchmergeproposallisting.PersonProductActiveReviewsView"
938 permission="zope.Public"
939 facet="branches"
940@@ -993,6 +1084,7 @@
941
942 <browser:page
943 for="lp.registry.interfaces.personproduct.IPersonProduct"
944+ layer="lp.code.publisher.CodeLayer"
945 class="lp.code.browser.branchlisting.PersonProductTeamBranchesView"
946 facet="branches"
947 name="+portlet-teambranches"
948@@ -1002,6 +1094,7 @@
949
950 <browser:page
951 for="lp.registry.interfaces.personproduct.IPersonProduct"
952+ layer="lp.code.publisher.CodeLayer"
953 class="lp.code.browser.branchlisting.PersonProductCodeSummaryView"
954 facet="branches"
955 name="+codesummary"
956@@ -1011,6 +1104,7 @@
957
958 <browser:page
959 for="lp.code.interfaces.hasbranches.IHasMergeProposals"
960+ layer="lp.code.publisher.CodeLayer"
961 class="lp.code.browser.branchmergeproposallisting.BranchMergeProposalListingView"
962 facet="branches"
963 permission="zope.Public"
964@@ -1019,6 +1113,7 @@
965
966 <browser:page
967 for="lp.code.interfaces.hasbranches.IHasMergeProposals"
968+ layer="lp.code.publisher.CodeLayer"
969 class="lp.code.browser.branchmergeproposallisting.ActiveReviewsView"
970 permission="zope.Public"
971 facet="branches"
972@@ -1102,12 +1197,14 @@
973 layer="lp.code.publisher.CodeLayer"/>
974 <browser:page
975 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"
976+ layer="lp.code.publisher.CodeLayer"
977 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeView"
978 name="+index"
979 template="../templates/sourcepackagerecipe-index.pt"
980 permission="launchpad.View"/>
981 <browser:page
982 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"
983+ layer="lp.code.publisher.CodeLayer"
984 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeRequestBuildsView"
985 name="+request-builds"
986 template="../templates/sourcepackagerecipe-request-builds.pt"
987@@ -1120,18 +1217,21 @@
988 layer="lp.code.publisher.CodeLayer"/>
989 <browser:page
990 for="lp.code.interfaces.sourcepackagerecipebuild.ISourcePackageRecipeBuild"
991+ layer="lp.code.publisher.CodeLayer"
992 class="lp.code.browser.sourcepackagerecipebuild.SourcePackageRecipeBuildView"
993 name="+index"
994 template="../templates/sourcepackagerecipebuild-index.pt"
995 permission="launchpad.View"/>
996 <browser:page
997 for="lp.code.interfaces.sourcepackagerecipebuild.ISourcePackageRecipeBuild"
998+ layer="lp.code.publisher.CodeLayer"
999 class="lp.code.browser.sourcepackagerecipebuild.SourcePackageRecipeBuildCancelView"
1000 name="+cancel"
1001 template="../../app/templates/generic-edit.pt"
1002 permission="launchpad.Admin"/>
1003 <browser:page
1004 for="lp.code.interfaces.sourcepackagerecipebuild.ISourcePackageRecipeBuild"
1005+ layer="lp.code.publisher.CodeLayer"
1006 class="lp.code.browser.sourcepackagerecipebuild.SourcePackageRecipeBuildRescoreView"
1007 name="+rescore"
1008 template="../../app/templates/generic-edit.pt"
1009@@ -1144,6 +1244,7 @@
1010
1011 <browser:page
1012 for="lp.code.interfaces.branch.IBranch"
1013+ layer="lp.code.publisher.CodeLayer"
1014 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeAddView"
1015 permission="launchpad.AnyPerson"
1016 facet="branches"
1017@@ -1151,6 +1252,7 @@
1018 template="../../app/templates/generic-edit.pt"/>
1019 <browser:page
1020 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"
1021+ layer="lp.code.publisher.CodeLayer"
1022 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeEditView"
1023 permission="launchpad.Edit"
1024 facet="branches"
1025@@ -1158,6 +1260,7 @@
1026 template="../../app/templates/generic-edit.pt"/>
1027 <browser:page
1028 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"
1029+ layer="lp.code.publisher.CodeLayer"
1030 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeDeleteView"
1031 permission="launchpad.Edit"
1032 facet="branches"
1033@@ -1166,6 +1269,7 @@
1034
1035 <browser:page
1036 for="lp.code.interfaces.branch.IBranch"
1037+ layer="lp.code.publisher.CodeLayer"
1038 class="lp.code.browser.sourcepackagerecipelisting.BranchRecipeListingView"
1039 permission="zope.Public"
1040 facet="branches"
1041@@ -1173,6 +1277,7 @@
1042 template="../templates/sourcepackagerecipe-listing.pt"/>
1043 <browser:page
1044 for="lp.registry.interfaces.product.IProduct"
1045+ layer="lp.code.publisher.CodeLayer"
1046 class="lp.code.browser.sourcepackagerecipelisting.ProductRecipeListingView"
1047 permission="zope.Public"
1048 facet="branches"
1049@@ -1180,6 +1285,7 @@
1050 template="../templates/sourcepackagerecipe-listing.pt"/>
1051 <browser:page
1052 for="lp.registry.interfaces.person.IPerson"
1053+ layer="lp.code.publisher.CodeLayer"
1054 class="lp.code.browser.sourcepackagerecipelisting.PersonRecipeListingView"
1055 permission="zope.Public"
1056 facet="branches"
1057@@ -1188,6 +1294,7 @@
1058
1059 <browser:page
1060 for="lp.code.interfaces.sourcepackagerecipe.ISourcePackageRecipe"
1061+ layer="lp.code.publisher.CodeLayer"
1062 name="+hierarchy"
1063 class="lp.code.browser.sourcepackagerecipe.SourcePackageRecipeHierarchy"
1064 template="../../app/templates/launchpad-hierarchy.pt"
1065
1066=== modified file 'lib/lp/code/browser/sourcepackagerecipe.py'
1067--- lib/lp/code/browser/sourcepackagerecipe.py 2010-08-20 20:31:18 +0000
1068+++ lib/lp/code/browser/sourcepackagerecipe.py 2010-08-24 02:26:48 +0000
1069@@ -94,7 +94,8 @@
1070
1071 @property
1072 def url(self):
1073- return canonical_url(self.context, view_name="+recipes")
1074+ return canonical_url(
1075+ self.context, view_name="+recipes", rootsite='code')
1076
1077
1078 class SourcePackageRecipeHierarchy(Hierarchy):
1079
1080=== modified file 'lib/lp/code/browser/sourcepackagerecipelisting.py'
1081--- lib/lp/code/browser/sourcepackagerecipelisting.py 2010-08-20 20:31:18 +0000
1082+++ lib/lp/code/browser/sourcepackagerecipelisting.py 2010-08-24 02:26:48 +0000
1083@@ -35,7 +35,7 @@
1084 if not config.build_from_branch.enabled:
1085 enabled = False
1086 return Link(
1087- '+recipes', text, icon='info', enabled=enabled)
1088+ '+recipes', text, icon='info', enabled=enabled, site='code')
1089
1090
1091 class RecipeListingView(LaunchpadView, FeedsMixin):
1092
1093=== modified file 'lib/lp/code/browser/tests/test_branchlisting.py'
1094--- lib/lp/code/browser/tests/test_branchlisting.py 2010-08-20 20:31:18 +0000
1095+++ lib/lp/code/browser/tests/test_branchlisting.py 2010-08-24 02:26:48 +0000
1096@@ -141,7 +141,8 @@
1097 # the current batch.
1098 branch_ids = set([self.branches[0].id])
1099
1100- view = create_initialized_view(self.barney, name="+branches")
1101+ view = create_initialized_view(
1102+ self.barney, name="+branches", rootsite='code')
1103 self.assertEqual(
1104 view.branches().branch_ids_with_bug_links,
1105 branch_ids)
1106@@ -151,7 +152,8 @@
1107 # the current batch.
1108 branch_ids = set([self.branches[1].id])
1109
1110- view = create_initialized_view(self.barney, name="+branches")
1111+ view = create_initialized_view(
1112+ self.barney, name="+branches", rootsite='code')
1113 self.assertEqual(
1114 view.branches().branch_ids_with_spec_links,
1115 branch_ids)
1116@@ -160,7 +162,8 @@
1117 # _branches_for_current_batch should return a list of all branches in
1118 # the current batch.
1119 branch_ids = set([])
1120- view = create_initialized_view(self.barney, name="+branches")
1121+ view = create_initialized_view(
1122+ self.barney, name="+branches", rootsite='code')
1123 self.assertEqual(
1124 view.branches().branch_ids_with_merge_proposals,
1125 branch_ids)
1126@@ -173,7 +176,8 @@
1127 for branch_id in branch_ids:
1128 tip_revisions[branch_id] = None
1129
1130- view = create_initialized_view(self.barney, name="+branches")
1131+ view = create_initialized_view(
1132+ self.barney, name="+branches", rootsite='code')
1133 self.assertEqual(
1134 view.branches().tip_revisions,
1135 tip_revisions)
1136@@ -351,7 +355,8 @@
1137 branch.distribution.name, branch.sourcepackagename.name)
1138 self.assertEqual(identity, branch.bzr_identity)
1139 # Now confirm that we get the same through the view.
1140- view = create_initialized_view(branch.distribution, name='+branches')
1141+ view = create_initialized_view(
1142+ branch.distribution, name='+branches', rootsite='code')
1143 # There is only one branch.
1144 batch = view.branches()
1145 [view_branch] = batch.branches
1146
1147=== modified file 'lib/lp/code/browser/tests/test_branchmergeproposal.py'
1148--- lib/lp/code/browser/tests/test_branchmergeproposal.py 2010-08-20 20:31:18 +0000
1149+++ lib/lp/code/browser/tests/test_branchmergeproposal.py 2010-08-24 02:26:48 +0000
1150@@ -60,11 +60,6 @@
1151
1152 layer = DatabaseFunctionalLayer
1153
1154- def setUp(self):
1155- # Use an admin so we don't have to worry about launchpad.Edit
1156- # permissions on the merge proposals.
1157- TestCaseWithFactory.setUp(self, user="admin@canonical.com")
1158-
1159 def testPrimaryContext(self):
1160 # The primary context of a merge proposal is the same as the primary
1161 # context of the source_branch.
1162@@ -84,7 +79,6 @@
1163 set_state=BranchMergeProposalStatus.REJECTED)
1164 login_person(bmp.registrant)
1165 menu = BranchMergeProposalContextMenu(bmp)
1166- link = menu.add_comment()
1167 self.assertTrue(menu.add_comment().enabled)
1168
1169
1170@@ -272,9 +266,6 @@
1171 albert = self.factory.makePerson(name='albert')
1172 bob = self.factory.makePerson(name='bob')
1173 charles = self.factory.makePerson(name='charles')
1174-
1175- owner = self.bmp.source_branch.owner
1176-
1177 self._createComment(albert, CodeReviewVote.APPROVE)
1178 self._createComment(bob, CodeReviewVote.ABSTAIN)
1179 self._createComment(charles, CodeReviewVote.DISAPPROVE)
1180@@ -290,9 +281,6 @@
1181 # Request three reviews.
1182 albert = self.factory.makePerson(name='albert')
1183 bob = self.factory.makePerson(name='bob')
1184-
1185- owner = self.bmp.source_branch.owner
1186-
1187 self._createComment(albert, CodeReviewVote.ABSTAIN)
1188 self._createComment(bob, CodeReviewVote.APPROVE)
1189 self._createComment(albert, CodeReviewVote.APPROVE)
1190@@ -305,7 +293,6 @@
1191
1192 def addReviewTeam(self):
1193 review_team = self.factory.makeTeam(name='reviewteam')
1194- target_branch = self.factory.makeAnyBranch()
1195 self.bmp.target_branch.reviewer = review_team
1196
1197 def test_review_team_members_trusted(self):
1198
1199=== modified file 'lib/lp/code/browser/tests/test_branchmergeproposallisting.py'
1200--- lib/lp/code/browser/tests/test_branchmergeproposallisting.py 2010-08-20 20:31:18 +0000
1201+++ lib/lp/code/browser/tests/test_branchmergeproposallisting.py 2010-08-24 02:26:48 +0000
1202@@ -335,7 +335,8 @@
1203 login_person(bmp3.source_branch.owner)
1204 bmp3.requestReview(datetime(2009,1,1,tzinfo=pytz.UTC))
1205 login(ANONYMOUS)
1206- view = create_initialized_view(product, name='+activereviews')
1207+ view = create_initialized_view(
1208+ product, name='+activereviews', rootsite='code')
1209 self.assertEqual(
1210 [bmp3, bmp2, bmp1],
1211 [item.context for item in view.review_groups[view.OTHER]])
1212
1213=== modified file 'lib/lp/code/browser/tests/test_product.py'
1214--- lib/lp/code/browser/tests/test_product.py 2010-08-20 20:31:18 +0000
1215+++ lib/lp/code/browser/tests/test_product.py 2010-08-24 02:26:48 +0000
1216@@ -29,6 +29,7 @@
1217 TestCaseWithFactory,
1218 time_counter,
1219 )
1220+from lp.testing.views import create_initialized_view
1221
1222
1223 class TestProductCodeIndexView(TestCaseWithFactory):
1224@@ -53,7 +54,6 @@
1225
1226 :raises Something: if the branch is not found.
1227 """
1228- url = canonical_url(product, rootsite='code')
1229 browser = self.getUserBrowser(canonical_url(product, rootsite='code'))
1230 return browser.getLink('browse the source code')
1231
1232@@ -92,30 +92,25 @@
1233 # +code-index page.
1234 product, branch = self.makeProductAndDevelopmentFocusBranch(
1235 private=True)
1236- url = canonical_url(product, rootsite='code')
1237 self.factory.makeProductBranch(product=product)
1238 # This is just "assertNotRaises"
1239 self.getUserBrowser(canonical_url(product, rootsite='code'))
1240
1241 def test_initial_branches_contains_dev_focus_branch(self):
1242 product, branch = self.makeProductAndDevelopmentFocusBranch()
1243- view = getMultiAdapter(
1244- (product, LaunchpadTestRequest()), name='+code-index')
1245- view.initialize()
1246+ view = create_initialized_view(product, '+code-index', rootsite='code')
1247 self.assertIn(branch, view.initial_branches)
1248
1249 def test_initial_branches_does_not_contain_private_dev_focus_branch(self):
1250 product, branch = self.makeProductAndDevelopmentFocusBranch(
1251 private=True)
1252- view = getMultiAdapter(
1253- (product, LaunchpadTestRequest()), name='+code-index')
1254- view.initialize()
1255+ view = create_initialized_view(product, '+code-index', rootsite='code')
1256 self.assertNotIn(branch, view.initial_branches)
1257
1258 def test_committer_count_with_revision_authors(self):
1259 # Test that the code pathing for calling committer_count with
1260 # valid revision authors is truly tested.
1261- cthulu = self.factory.makePerson(email='cthulu@example.com')
1262+ self.factory.makePerson(email='cthulu@example.com')
1263 product, branch = self.makeProductAndDevelopmentFocusBranch()
1264 date_generator = time_counter(
1265 datetime.now(pytz.UTC) - timedelta(days=30),
1266@@ -125,9 +120,7 @@
1267 date_generator=date_generator)
1268 getUtility(IRevisionSet).updateRevisionCacheForBranch(branch)
1269
1270- view = getMultiAdapter(
1271- (product, LaunchpadTestRequest()), name='+code-index')
1272- view.initialize()
1273+ view = create_initialized_view(product, '+code-index', rootsite='code')
1274 self.assertEqual(view.committer_count, 1)
1275
1276 def test_committers_count_private_branch(self):
1277@@ -145,9 +138,7 @@
1278 date_generator=date_generator)
1279 getUtility(IRevisionSet).updateRevisionCacheForBranch(branch)
1280
1281- view = getMultiAdapter(
1282- (product, LaunchpadTestRequest()), name='+code-index')
1283- view.initialize()
1284+ view = create_initialized_view(product, '+code-index', rootsite='code')
1285 self.assertEqual(view.committer_count, 1)
1286
1287
1288
1289=== modified file 'lib/lp/code/stories/branches/xx-branch-edit.txt'
1290--- lib/lp/code/stories/branches/xx-branch-edit.txt 2010-05-30 04:06:48 +0000
1291+++ lib/lp/code/stories/branches/xx-branch-edit.txt 2010-08-24 02:26:48 +0000
1292@@ -17,26 +17,26 @@
1293 Launchpad administrators or members of the Bazaar Experts team.
1294
1295 >>> admin_browser.open(
1296- ... 'http://launchpad.dev/~name12/gnome-terminal/klingon')
1297+ ... 'http://code.launchpad.dev/~name12/gnome-terminal/klingon')
1298 >>> link = admin_browser.getLink('Change branch details')
1299
1300 >>> bazaar_expert_browser = setupBrowser(
1301 ... auth='Basic tim@canonical.com:test')
1302 >>> bazaar_expert_browser.open(
1303- ... 'http://launchpad.dev/~name12/gnome-terminal/klingon')
1304+ ... 'http://code.launchpad.dev/~name12/gnome-terminal/klingon')
1305 >>> link = bazaar_expert_browser.getLink('Change branch details')
1306
1307 >>> nopriv_browser = setupBrowser(
1308 ... auth='Basic nopriv@canonical.com:test')
1309 >>> nopriv_browser.open(
1310- ... 'http://launchpad.dev/~name12/gnome-terminal/klingon')
1311+ ... 'http://code.launchpad.dev/~name12/gnome-terminal/klingon')
1312 >>> link = nopriv_browser.getLink('Change branch details')
1313 Traceback (most recent call last):
1314 LinkNotFoundError
1315
1316 >>> browser = setupBrowser(auth='Basic test@canonical.com:test')
1317 >>> browser.open(
1318- ... 'http://launchpad.dev/~name12/gnome-terminal/klingon')
1319+ ... 'http://code.launchpad.dev/~name12/gnome-terminal/klingon')
1320 >>> browser.getLink('Change branch details').click()
1321 >>> browser.url
1322 'http://code.launchpad.dev/~name12/gnome-terminal/klingon/+edit'
1323@@ -84,7 +84,7 @@
1324
1325 To change the branch status, the +edit page is also used:
1326
1327- >>> browser.open('http://launchpad.dev'
1328+ >>> browser.open('http://code.launchpad.dev'
1329 ... '/~name12/gnome-terminal/klingon/+edit')
1330
1331 The form displays the branch current status.
1332@@ -112,7 +112,7 @@
1333
1334 Set the branch status back to its initial state.
1335
1336- >>> browser.open('http://launchpad.dev'
1337+ >>> browser.open('http://code.launchpad.dev'
1338 ... '/~name12/gnome-terminal/klingon/+edit')
1339 >>> browser.getControl('Experimental').click()
1340 >>> browser.getControl('Change Branch').click()
1341@@ -162,12 +162,12 @@
1342 Let's try to change the name of the branch to the name of some branch we
1343 already own in the same product.
1344
1345- >>> browser.open('http://launchpad.dev'
1346+ >>> browser.open('http://code.launchpad.dev'
1347 ... '/~name12/gnome-terminal/main/+edit')
1348 >>> browser.getControl('Name').value = '2.6'
1349 >>> browser.getControl('Change Branch').click()
1350 >>> browser.url
1351- 'http://launchpad.dev/%7Ename12/gnome-terminal/main/+edit'
1352+ 'http://code.launchpad.dev/%7Ename12/gnome-terminal/main/+edit'
1353 >>> for msg in get_feedback_messages(browser.contents):
1354 ... print msg
1355 There is 1 error.
1356@@ -178,7 +178,7 @@
1357
1358 Edit forms do the same URL validation checks as the add forms.
1359
1360- >>> browser.open('http://launchpad.dev/~name12/gnome-terminal/main')
1361+ >>> browser.open('http://code.launchpad.dev/~name12/gnome-terminal/main')
1362 >>> browser.getLink('Change branch details').click()
1363 >>> browser.getControl('Branch URL').value = (
1364 ... 'http://bazaar.launchpad.dev/~foo/bar/baz')
1365@@ -192,7 +192,8 @@
1366
1367 Check that when editing a hosted branch the URL field is not shown.
1368
1369- >>> browser.open('http://launchpad.dev/~name12/gnome-terminal/scanned')
1370+ >>> browser.open(
1371+ ... 'http://code.launchpad.dev/~name12/gnome-terminal/scanned')
1372 >>> browser.getLink('Change branch details').click()
1373 >>> browser.getControl('Branch URL').value = (
1374 ... 'http://acme.example.com/~foo/bar/baz')
1375@@ -227,7 +228,7 @@
1376 >>> logout()
1377
1378 >>> nopriv_browser = setupBrowser(auth='Basic no-priv@canonical.com:test')
1379- >>> nopriv_browser.open('http://launchpad.dev'
1380+ >>> nopriv_browser.open('http://code.launchpad.dev'
1381 ... '/~name12/foogoo/foogoo-svn')
1382 >>> whiteboard_tag = find_tag_by_id(
1383 ... nopriv_browser.contents, 'branch-whiteboard-value')
1384@@ -280,7 +281,7 @@
1385 The user is able to change the owner of the branch using the edit details
1386 page.
1387
1388- >>> browser.open('http://launchpad.dev/~name12/gnome-terminal/main')
1389+ >>> browser.open('http://code.launchpad.dev/~name12/gnome-terminal/main')
1390 >>> browser.getLink('Change branch details').click()
1391 >>> browser.getControl('Owner').displayValue = ['Landscape Developers']
1392 >>> browser.getControl('Change Branch').click()
1393@@ -297,7 +298,7 @@
1394 Bazaar Experts and Launchpad administrators are able to reassign a branch
1395 to any valid person or team.
1396
1397- >>> admin_browser.open('http://launchpad.dev/~name12/firefox/main')
1398+ >>> admin_browser.open('http://code.launchpad.dev/~name12/firefox/main')
1399 >>> admin_browser.getLink('Change branch details').click()
1400 >>> admin_browser.getControl('Owner').value = 'mark'
1401 >>> admin_browser.getControl('Change Branch').click()
1402
1403=== modified file 'lib/lp/code/stories/branches/xx-branch-listings.txt'
1404--- lib/lp/code/stories/branches/xx-branch-listings.txt 2010-04-11 22:45:09 +0000
1405+++ lib/lp/code/stories/branches/xx-branch-listings.txt 2010-08-24 02:26:48 +0000
1406@@ -154,7 +154,7 @@
1407 status value, it will default to current branches.
1408
1409 >>> browser.open(
1410- ... 'http://launchpad.dev/~name12/+branches?field.lifecycle=Fubar')
1411+ ... 'http://code.launchpad.dev/~name12/+branches?field.lifecycle=Fubar')
1412 >>> browser.getControl(name='field.lifecycle').displayValue
1413 ['Any active status']
1414 >>> table = find_tag_by_id(browser.contents, 'branchtable')
1415
1416=== modified file 'lib/lp/code/stories/branches/xx-branch-url-validation.txt'
1417--- lib/lp/code/stories/branches/xx-branch-url-validation.txt 2009-06-02 08:20:49 +0000
1418+++ lib/lp/code/stories/branches/xx-branch-url-validation.txt 2010-08-24 02:26:48 +0000
1419@@ -3,7 +3,8 @@
1420 First, let's define a helper to post to the Person +addbranch form.
1421
1422 >>> def add_branch(url):
1423- ... user_browser.open('http://launchpad.dev/~lifeless/+addbranch')
1424+ ... user_browser.open(
1425+ ... 'http://code.launchpad.dev/~lifeless/+addbranch')
1426 ... user_browser.getControl('Name').value = 'pyresources'
1427 ... user_browser.getControl('Branch URL').value = url
1428 ... user_browser.getControl('Register Branch').click()
1429@@ -57,7 +58,7 @@
1430 There is 1 error.
1431 Branch URLs are required for Mirrored branches.
1432
1433-Try to create a branch using the bzr+ssh URL scheme. Bug 76854 (see also 5573)
1434+Try to create a branch using the bzr+ssh URL scheme.
1435
1436 >>> add_branch('bzr+ssh://example.com/code/branch')
1437 >>> print user_browser.url
1438
1439=== modified file 'lib/lp/code/stories/branches/xx-creating-branches.txt'
1440--- lib/lp/code/stories/branches/xx-creating-branches.txt 2010-05-13 16:22:19 +0000
1441+++ lib/lp/code/stories/branches/xx-creating-branches.txt 2010-08-24 02:26:48 +0000
1442@@ -125,7 +125,7 @@
1443
1444 Now, post the branch creation form for the product.
1445
1446- >>> user_browser.open('http://launchpad.dev/applets/+addbranch')
1447+ >>> user_browser.open('http://code.launchpad.dev/applets/+addbranch')
1448
1449 The specified URL has a trailing slash. In the next test, we will check that it
1450 has been stripped.
1451@@ -175,7 +175,7 @@
1452 >>> browser.open('http://launchpad.dev/gnome-terminal/trunk')
1453 >>> browser.getLink('registering a mirrored branch').click()
1454 >>> print browser.title
1455- Register a branch : GNOME Terminal
1456+ Register a branch : Code : GNOME Terminal
1457
1458 The user sees that he is registering a branch for the series' project.
1459
1460@@ -241,7 +241,7 @@
1461
1462 Try a adding a conflicting branch from the product/+addbranch form.
1463
1464- >>> browser.open('http://launchpad.dev/gnome-terminal/+addbranch')
1465+ >>> browser.open('http://code.launchpad.dev/gnome-terminal/+addbranch')
1466 >>> browser.getControl('Branch URL').value = (
1467 ... 'http://example.com/gnome-terminal/main-dup')
1468
1469@@ -249,7 +249,7 @@
1470
1471 >>> browser.getControl('Register Branch').click()
1472 >>> browser.url
1473- 'http://launchpad.dev/gnome-terminal/+addbranch'
1474+ 'http://code.launchpad.dev/gnome-terminal/+addbranch'
1475
1476 Now, complete the form, but give a name that is alredy in use for that owner
1477 and product.
1478@@ -260,7 +260,7 @@
1479 That should give us the form back with an error message.
1480
1481 >>> browser.url
1482- 'http://launchpad.dev/gnome-terminal/+addbranch'
1483+ 'http://code.launchpad.dev/gnome-terminal/+addbranch'
1484 >>> for message in get_feedback_messages(browser.contents):
1485 ... print extract_text(message)
1486 There is 1 error.
1487@@ -269,7 +269,7 @@
1488 If the user is trying to add a branch for a team that conflicts,
1489 then the team name is given in the error message.
1490
1491- >>> browser.open('http://launchpad.dev/gnome-terminal/+addbranch')
1492+ >>> browser.open('http://code.launchpad.dev/gnome-terminal/+addbranch')
1493 >>> browser.getControl('Owner').displayValue = [
1494 ... 'Landscape Developers']
1495 >>> browser.getControl('Name').value = 'main'
1496@@ -282,7 +282,7 @@
1497
1498 Now registering again with the same name.
1499
1500- >>> browser.open('http://launchpad.dev/gnome-terminal/+addbranch')
1501+ >>> browser.open('http://code.launchpad.dev/gnome-terminal/+addbranch')
1502 >>> browser.getControl('Owner').displayValue = [
1503 ... 'Landscape Developers']
1504 >>> browser.getControl('Name').value = 'main'
1505
1506=== modified file 'lib/lp/code/stories/branches/xx-source-package-branches-listing.txt'
1507--- lib/lp/code/stories/branches/xx-source-package-branches-listing.txt 2010-04-12 16:02:18 +0000
1508+++ lib/lp/code/stories/branches/xx-source-package-branches-listing.txt 2010-08-24 02:26:48 +0000
1509@@ -60,7 +60,7 @@
1510 ... distribution=distro, sourcepackagename=branch1.sourcepackagename)
1511 >>> transaction.commit()
1512 >>> distro_source_package_listing = canonical_url(
1513- ... distro_source_package, view_name="+branches")
1514+ ... distro_source_package, view_name="+branches", rootsite='code')
1515 >>> logout()
1516
1517 >>> browser.open(distro_source_package_listing)
1518
1519=== modified file 'lib/lp/code/stories/branches/xx-subscribing-branches.txt'
1520--- lib/lp/code/stories/branches/xx-subscribing-branches.txt 2010-05-27 04:44:39 +0000
1521+++ lib/lp/code/stories/branches/xx-subscribing-branches.txt 2010-08-24 02:26:48 +0000
1522@@ -36,7 +36,7 @@
1523 link "Subscribe" from a branch's page.
1524
1525 >>> browser = setupBrowser(auth='Basic no-priv@canonical.com:test')
1526- >>> browser.open('http://launchpad.dev/~name12/gnome-terminal/main')
1527+ >>> browser.open('http://code.launchpad.dev/~name12/gnome-terminal/main')
1528
1529 Initially there should be no subscribers.
1530
1531@@ -149,7 +149,7 @@
1532
1533 Any logged in user is able to subscribe others to a branch.
1534
1535- >>> browser.open('http://launchpad.dev/~name12/gnome-terminal/main')
1536+ >>> browser.open('http://code.launchpad.dev/~name12/gnome-terminal/main')
1537 >>> browser.getLink('Subscribe someone else').click()
1538
1539 The process of subscribing others is the same as subscribing the
1540
1541=== modified file 'lib/lp/code/stories/sourcepackagerecipes/xx-recipe-listings.txt'
1542--- lib/lp/code/stories/sourcepackagerecipes/xx-recipe-listings.txt 2010-06-15 19:53:21 +0000
1543+++ lib/lp/code/stories/sourcepackagerecipes/xx-recipe-listings.txt 2010-08-24 02:26:48 +0000
1544@@ -86,7 +86,7 @@
1545 >>> nopriv_browser.open(product_url)
1546 >>> nopriv_browser.getLink('View source package recipes').click()
1547 >>> print nopriv_browser.url
1548- http://launchpad.dev/product-name.../+recipes
1549+ http://code.launchpad.dev/product-name.../+recipes
1550
1551 >>> print_recipe_listing_head(nopriv_browser)
1552 Name
1553@@ -119,7 +119,7 @@
1554 >>> nopriv_browser.open(person_url)
1555 >>> nopriv_browser.getLink('View source package recipes').click()
1556 >>> print nopriv_browser.url
1557- http://launchpad.dev/~person-name.../+recipes
1558+ http://code.launchpad.dev/~person-name.../+recipes
1559
1560 The "Owner" section should be missing.
1561
1562
1563=== modified file 'lib/lp/code/templates/branch-summary-listing.pt'
1564--- lib/lp/code/templates/branch-summary-listing.pt 2009-07-17 17:59:07 +0000
1565+++ lib/lp/code/templates/branch-summary-listing.pt 2010-08-24 02:26:48 +0000
1566@@ -4,10 +4,10 @@
1567 tal:content="context/bzr_identity"
1568 class="sprite branch" >Mozilla Thunderbird 0.9.1</a>
1569 <tal:person-link condition="view/show_person_link">
1570- - <a tal:replace="structure context/owner/fmt:link/+ownedbranches" />
1571+ - <a tal:replace="structure context/owner/fmt:link:code/+ownedbranches" />
1572 </tal:person-link>
1573 <tal:product-link condition="view/show_product_link">
1574- - <a tal:attributes="href string:${context/product/fmt:url}/+branches"
1575+ - <a tal:attributes="href context/product/fmt:url:code/+branches"
1576 tal:content="context/product/displayname"
1577 class="sprite product">Project</a>
1578 </tal:product-link>
1579
1580=== modified file 'lib/lp/code/templates/distributionsourcepackage-branches-grouped.pt'
1581--- lib/lp/code/templates/distributionsourcepackage-branches-grouped.pt 2009-09-17 02:17:15 +0000
1582+++ lib/lp/code/templates/distributionsourcepackage-branches-grouped.pt 2010-08-24 02:26:48 +0000
1583@@ -85,7 +85,7 @@
1584 </li>
1585 </tal:series-branches>
1586 </tal:distro-series>
1587- <li><a tal:attributes="href context/fmt:url/+branches">
1588+ <li><a tal:attributes="href context/fmt:url:code/+branches">
1589 All branches for the <tal:name replace="context/title"/>
1590 </a></li>
1591 </ul>
1592
1593=== modified file 'lib/lp/registry/browser/product.py'
1594--- lib/lp/registry/browser/product.py 2010-08-23 03:25:20 +0000
1595+++ lib/lp/registry/browser/product.py 2010-08-24 02:26:48 +0000
1596@@ -671,7 +671,7 @@
1597 def branch_add(self):
1598 text = 'Register a branch'
1599 summary = "Register a new Bazaar branch for this project"
1600- return Link('+addbranch', text, summary, icon='add')
1601+ return Link('+addbranch', text, summary, icon='add', site='code')
1602
1603
1604 class ProductBugsMenu(PillarBugsMenu,
1605
1606=== modified file 'lib/lp/registry/browser/productseries.py'
1607--- lib/lp/registry/browser/productseries.py 2010-08-20 20:31:18 +0000
1608+++ lib/lp/registry/browser/productseries.py 2010-08-24 02:26:48 +0000
1609@@ -428,7 +428,8 @@
1610 @property
1611 def request_import_link(self):
1612 """A link to the page for requesting a new code import."""
1613- return canonical_url(self.context.product, view_name='+new-import')
1614+ return canonical_url(
1615+ self.context.product, view_name='+new-import', rootsite='code')
1616
1617 @property
1618 def user_branch_visible(self):
1619
1620=== modified file 'lib/lp/registry/browser/tests/productseries-views.txt'
1621--- lib/lp/registry/browser/tests/productseries-views.txt 2010-07-30 20:00:59 +0000
1622+++ lib/lp/registry/browser/tests/productseries-views.txt 2010-08-24 02:26:48 +0000
1623@@ -158,7 +158,7 @@
1624 The view also provides a link to register a new code import.
1625
1626 >>> print view.request_import_link
1627- http://launchpad.dev/firefox/+new-import
1628+ http://code.launchpad.dev/firefox/+new-import
1629
1630
1631 Edit ProductSeries
1632
1633=== modified file 'lib/lp/registry/stories/productseries/xx-productseries-link-branch.txt'
1634--- lib/lp/registry/stories/productseries/xx-productseries-link-branch.txt 2009-10-06 21:58:56 +0000
1635+++ lib/lp/registry/stories/productseries/xx-productseries-link-branch.txt 2010-08-24 02:26:48 +0000
1636@@ -61,7 +61,7 @@
1637
1638 >>> revisions = find_tag_by_id(sample_browser.contents, 'branch-revision-details')
1639 >>> print extract_text(revisions)
1640- 15 revisions, 5 in the past month.
1641+ 15 revisions.
1642
1643 A helpful informational message is also shown to the user.
1644
1645
1646=== modified file 'lib/lp/registry/templates/productseries-codesummary.pt'
1647--- lib/lp/registry/templates/productseries-codesummary.pt 2010-04-12 23:10:39 +0000
1648+++ lib/lp/registry/templates/productseries-codesummary.pt 2010-08-24 02:26:48 +0000
1649@@ -84,13 +84,12 @@
1650 <a id="series-branch" class="sprite branch"
1651 tal:attributes="href context/branch/fmt:url"
1652 tal:content="context/branch/bzr_identity">Mozilla Thunderbird 0.9.1</a>
1653- - <a tal:replace="structure context/branch/owner/fmt:link/+ownedbranches" />
1654+ - <a tal:replace="structure context/branch/owner/fmt:link:code/+ownedbranches" />
1655 <a
1656 tal:replace="structure context/menu:overview/link_branch/fmt:icon" />
1657 </div>
1658 <div id="branch-revision-details" tal:condition="context/branch/revision_count">
1659- <span tal:replace="context/branch/revision_count">35</span> revisions,
1660- <span tal:replace="context/branch/@@+product-summary-listing/recent_revision_count">31</span> in the past month.
1661+ <span tal:replace="context/branch/revision_count">35</span> revisions.
1662 </div>
1663 </tal:block>
1664
1665
1666=== modified file 'lib/lp/testing/menu.py'
1667--- lib/lp/testing/menu.py 2010-08-20 20:31:18 +0000
1668+++ lib/lp/testing/menu.py 2010-08-24 02:26:48 +0000
1669@@ -5,10 +5,7 @@
1670
1671 __metaclass__ = type
1672
1673-from zope.component import getMultiAdapter
1674-
1675 from canonical.launchpad.webapp.publisher import canonical_url
1676-from canonical.lazr.testing.menus import make_fake_request
1677
1678
1679 def check_menu_links(menu):
1680@@ -21,10 +18,10 @@
1681 view_name, _args = link.target.split('?')
1682 else:
1683 view_name = link.target
1684- url = canonical_url(context, view_name=view_name)
1685- request = make_fake_request(url)
1686+ if view_name == '':
1687+ view_name = None
1688 try:
1689- view = getMultiAdapter((context, request), name=view_name)
1690+ canonical_url(context, view_name=view_name, rootsite=link.site)
1691 except:
1692- return 'Bad link %s: %s' % (link.name, url)
1693+ return 'Bad link %s: %s' % (link.name, canonical_url(context))
1694 return True
1695
1696=== modified file 'lib/lp/testing/views.py'
1697--- lib/lp/testing/views.py 2010-08-20 20:31:18 +0000
1698+++ lib/lp/testing/views.py 2010-08-24 02:26:48 +0000
1699@@ -23,14 +23,19 @@
1700
1701 from canonical.config import config
1702 from canonical.launchpad.layers import setFirstLayer
1703-from canonical.launchpad.webapp.interfaces import IPlacelessAuthUtility
1704+from canonical.launchpad.webapp.interfaces import (
1705+ ICanonicalUrlData,
1706+ IPlacelessAuthUtility,
1707+ )
1708+from canonical.launchpad.webapp.publisher import layer_for_rootsite
1709 from canonical.launchpad.webapp.servers import LaunchpadTestRequest
1710 from canonical.lazr import ExportedFolder
1711
1712
1713 def create_view(context, name, form=None, layer=None, server_url=None,
1714 method='GET', principal=None, query_string='', cookie='',
1715- request=None, path_info='/', current_request=False, **kwargs):
1716+ request=None, path_info='/', current_request=False,
1717+ rootsite=None, **kwargs):
1718 """Return a view based on the given arguments.
1719
1720 :param context: The context for the view.
1721@@ -59,6 +64,16 @@
1722 else:
1723 request.setPrincipal(
1724 getUtility(IPlacelessAuthUtility).unauthenticatedPrincipal())
1725+ if layer is None:
1726+ # If a layer hasn't been specified, try to get the layer for the
1727+ # rootsite.
1728+ if rootsite is None:
1729+ # If we haven't been told a site, try to get it from the canonical
1730+ # url data of the object.
1731+ obj_urldata = ICanonicalUrlData(context, None)
1732+ if obj_urldata is not None:
1733+ rootsite = obj_urldata.rootsite
1734+ layer = layer_for_rootsite(rootsite)
1735 if layer is not None:
1736 setFirstLayer(request, layer)
1737 if current_request:
1738@@ -70,7 +85,7 @@
1739 def create_initialized_view(context, name, form=None, layer=None,
1740 server_url=None, method=None, principal=None,
1741 query_string=None, cookie=None, request=None,
1742- path_info='/'):
1743+ path_info='/', rootsite=None):
1744 """Return a view that has already been initialized."""
1745 if method is None:
1746 if form is None:
1747@@ -79,7 +94,7 @@
1748 method = 'POST'
1749 view = create_view(
1750 context, name, form, layer, server_url, method, principal,
1751- query_string, cookie, request, path_info)
1752+ query_string, cookie, request, path_info, rootsite=rootsite)
1753 view.initialize()
1754 return view
1755