Merge lp:~gary/launchpad/breadcrumbs into lp:launchpad

Proposed by Gary Poster
Status: Merged
Approved by: Brad Crittenden
Approved revision: no longer in the source branch.
Merged at revision: not available
Proposed branch: lp:~gary/launchpad/breadcrumbs
Merge into: lp:launchpad
Diff against target: None lines
To merge this branch: bzr merge lp:~gary/launchpad/breadcrumbs
Reviewer Review Type Date Requested Status
Brad Crittenden (community) code release-critical Approve
Review via email: mp+12246@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Gary Poster (gary) wrote :

This branch addresses bug 434746. The breadcrumbs should no longer duplicate information for the virtual hosts, as described in that bug.

It normalizes the name of these adapters to [name of section]VHostBreadcrumbs, per the Translations pattern.

It removes the @property for text, replacing it with a simple attribute (also affecting Translations).

This does not change Blueprints because Henning did this in another branch (https://code.edge.launchpad.net/~henninge/launchpad/bug-434055-combined/+merge/12229).

This fixes all tests that match the search [bB]read[cC]rumb. There may be more that ec2test reveals.

Thank you

Gary

Revision history for this message
Brad Crittenden (bac) wrote :

Thanks for the fix Gary. This looks great. Land it on devel if you can do so in the next 3 hours, which is doubtful...

review: Approve (code release-critical)
Revision history for this message
Gary Poster (gary) wrote :
Download full text (35.1 KiB)

Incremental diff for test failures:

=== modified file 'lib/lp/answers/stories/answer-contact-report.txt'
--- lib/lp/answers/stories/answer-contact-report.txt 2009-09-18 18:54:36 +0000
+++ lib/lp/answers/stories/answer-contact-report.txt 2009-09-23 14:34:03 +0000
@@ -40,7 +40,7 @@

     >>> anon_browser.getLink('Gnome Baker').click()
     >>> print anon_browser.title
- Questions for Gnome Baker : gnomebaker
+ Questions : gnomebaker

 When the user is logged in, and he is visiting this page in his profile
 he will see a link after each project to manage his registration.

=== modified file 'lib/lp/answers/stories/faq-add.txt'
--- lib/lp/answers/stories/faq-add.txt 2009-09-22 08:45:55 +0000
+++ lib/lp/answers/stories/faq-add.txt 2009-09-23 13:23:22 +0000
@@ -29,7 +29,7 @@
     >>> owner_browser.open('http://answers.launchpad.dev/firefox')
     >>> owner_browser.getLink('All FAQs').click()
     >>> print owner_browser.title
- FAQs for Mozilla Firefox : Questions for Mozilla Firefox : Mozilla Firefox
+ FAQs for Mozilla Firefox : Questions : Mozilla Firefox

     >>> print extract_text(
     ... find_tag_by_id(owner_browser.contents, 'faqs-listing'))
@@ -67,7 +67,7 @@
     >>> owner_browser.url
     'http://answers.launchpad.dev/firefox/+faq/...'
     >>> print owner_browser.title
- Questions for...
+ Questions : Mozilla Firefox

     >>> content = find_main_content(owner_browser.contents)
     >>> extract_text(content.find('div', {'id' : 'faq-keywords'}))
@@ -80,7 +80,7 @@

     >>> owner_browser.getLink('List all FAQs').click()
     >>> print owner_browser.title
- FAQs for Mozilla Firefox : Questions for Mozilla Firefox : Mozilla Firefox
+ FAQs for Mozilla Firefox : Questions : Mozilla Firefox

     >>> print extract_text(
     ... find_tag_by_id(owner_browser.contents, 'faqs-listing'))

=== modified file 'lib/lp/answers/stories/faq-browse-and-search.txt'
--- lib/lp/answers/stories/faq-browse-and-search.txt 2009-09-22 08:45:55 +0000
+++ lib/lp/answers/stories/faq-browse-and-search.txt 2009-09-23 13:44:27 +0000
@@ -19,7 +19,7 @@
     >>> print browser.url
     http://answers.launchpad.dev/kubuntu/+faqs
     >>> print browser.title
- FAQs for Kubuntu : Questions for Kubuntu - Free KDE-based Linux : Kubuntu
+ FAQs for Kubuntu : Questions : Kubuntu

     >>> print extract_text(find_main_content(browser.contents).find('p'))
     There are no FAQs for Kubuntu.
@@ -33,7 +33,7 @@
     >>> browser.open('http://answers.launchpad.dev/ubuntu')
     >>> browser.getLink('All FAQs').click()
     >>> print browser.title
- FAQs for Ubuntu : Questions for Ubuntu Linux : Ubuntu
+ FAQs for Ubuntu : Questions : Ubuntu

 She sees a listing of the current FAQs about Ubuntu:

@@ -49,7 +49,7 @@

     >>> browser.getLink('Next').click()
     >>> print browser.title
- FAQs for Ubuntu : Questions for Ubuntu Linux : Ubuntu
+ FAQs for Ubuntu : Questions : Ubuntu
     >>> print extract_text(find_tag_by_id(browser.contents, 'faqs-listing'))
     Wireless Networking Documentation

@@ -70,7 +70,7 @@

     >>> browser.getLink('How can I play MP3/Divx').click()
     >>> print backslashreplace(browser.title)
- Questio...

Revision history for this message
Gary Poster (gary) wrote :

This is the test command I constructed to test the changes:

./bin/test -vv -tanswer-contact-report.txt -tfaq-add.txt -tfaq-browse-and-search.txt -tfaq-edit.txt -tproject-add-question.txt -tquestion-add-in-other-languages.txt -tquestion-add.txt -tquestion-answer-contact.txt -tquestion-answers-vhost.txt -tquestion-browse-and-search.txt -tquestion-compatibility-urls.txt -tquestion-message.txt -tquestion-obfuscation.txt -tquestion-overview.txt -tquestion-search-multiple-languages.txt -tquestions-index.txt -tthis-is-a-faq.txt -tnomination-navigation.txt -txx-official-bug-tags.txt -txx-bug-activity.txt -txx-bug-comments-truncated.txt -txx-bug-create-question.txt -txx-distribution-upstream-bug-report.txt -txx-branch-deletion.txt -txx-branch-index.txt -txx-person-branches.txt -txx-product-branches.txt -txx-project-branches.txt -tpackage-pages-navigation.txt

Revision history for this message
Brad Crittenden (bac) :
review: Approve (code release-critical)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'lib/lp/answers/browser/questiontarget.py'
2--- lib/lp/answers/browser/questiontarget.py 2009-08-24 20:28:33 +0000
3+++ lib/lp/answers/browser/questiontarget.py 2009-09-22 18:45:02 +0000
4@@ -6,6 +6,7 @@
5 __metaclass__ = type
6
7 __all__ = [
8+ 'AnswersVHostBreadcrumb',
9 'AskAQuestionButtonView',
10 'ManageAnswerContactView',
11 'SearchQuestionsView',
12@@ -829,17 +830,6 @@
13 return Link('+answer-contact', text, icon='edit')
14
15
16-class QuestionTargetOnAnswersVHostBreadcrumb(Breadcrumb):
17- rootsite = 'answers'
18-
19- @property
20- def text(self):
21- return 'Questions for %s' % self.context.title
22-
23-
24-class PersonOnAnswersVHostBreadcrumb(Breadcrumb):
25- rootsite = 'answers'
26-
27- @property
28- def text(self):
29- return 'Questions involving %s' % self.context.displayname
30+class AnswersVHostBreadcrumb(Breadcrumb):
31+ rootsite = 'answers'
32+ text = 'Questions'
33
34=== modified file 'lib/lp/answers/browser/tests/test_breadcrumbs.py'
35--- lib/lp/answers/browser/tests/test_breadcrumbs.py 2009-08-24 20:28:33 +0000
36+++ lib/lp/answers/browser/tests/test_breadcrumbs.py 2009-09-22 18:45:02 +0000
37@@ -38,24 +38,21 @@
38 self.product_questions_url, [self.root, self.product])
39 last_crumb = crumbs[-1]
40 self.assertEquals(last_crumb.url, self.product_questions_url)
41- self.assertEquals(
42- last_crumb.text, 'Questions for %s' % self.product.title)
43+ self.assertEquals(last_crumb.text, 'Questions')
44
45 def test_project(self):
46 crumbs = self._getBreadcrumbs(
47 self.project_questions_url, [self.root, self.project])
48 last_crumb = crumbs[-1]
49 self.assertEquals(last_crumb.url, self.project_questions_url)
50- self.assertEquals(
51- last_crumb.text, 'Questions for %s' % self.project.title)
52+ self.assertEquals(last_crumb.text, 'Questions')
53
54 def test_person(self):
55 crumbs = self._getBreadcrumbs(
56 self.person_questions_url, [self.root, self.person])
57 last_crumb = crumbs[-1]
58 self.assertEquals(last_crumb.url, self.person_questions_url)
59- self.assertEquals(last_crumb.text,
60- 'Questions involving %s' % self.person.displayname)
61+ self.assertEquals(last_crumb.text, 'Questions')
62
63
64 def test_suite():
65
66=== modified file 'lib/lp/answers/configure.zcml'
67--- lib/lp/answers/configure.zcml 2009-08-24 20:28:33 +0000
68+++ lib/lp/answers/configure.zcml 2009-09-22 18:45:02 +0000
69@@ -227,24 +227,24 @@
70 provides="zope.schema.interfaces.IVocabularyFactory"
71 />
72
73- <lp:help-folder
74+ <lp:help-folder
75 folder="help" type="canonical.launchpad.layers.AnswersLayer" />
76 <adapter
77 name="answers"
78 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
79 for="lp.answers.interfaces.questiontarget.IQuestionTarget"
80- factory="lp.answers.browser.questiontarget.QuestionTargetOnAnswersVHostBreadcrumb"
81+ factory="lp.answers.browser.questiontarget.AnswersVHostBreadcrumb"
82 permission="zope.Public"/>
83 <adapter
84 name="answers"
85 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
86 for="lp.registry.interfaces.project.IProject"
87- factory="lp.answers.browser.questiontarget.QuestionTargetOnAnswersVHostBreadcrumb"
88+ factory="lp.answers.browser.questiontarget.AnswersVHostBreadcrumb"
89 permission="zope.Public"/>
90 <adapter
91 name="answers"
92 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
93 for="lp.registry.interfaces.person.IPerson"
94- factory="lp.answers.browser.questiontarget.PersonOnAnswersVHostBreadcrumb"
95+ factory="lp.answers.browser.questiontarget.AnswersVHostBreadcrumb"
96 permission="zope.Public"/>
97 </configure>
98
99=== modified file 'lib/lp/bugs/browser/bugtarget.py'
100--- lib/lp/bugs/browser/bugtarget.py 2009-09-22 15:14:14 +0000
101+++ lib/lp/bugs/browser/bugtarget.py 2009-09-22 18:45:02 +0000
102@@ -6,6 +6,7 @@
103 __metaclass__ = type
104
105 __all__ = [
106+ "BugsVHostBreadcrumb",
107 "BugTargetBugListingView",
108 "BugTargetBugTagsView",
109 "BugTargetBugsView",
110@@ -413,7 +414,7 @@
111 packagename, distribution.displayname))
112 self.setFieldError("packagename", packagename_error)
113 else:
114- self.setFieldError("packagename",
115+ self.setFieldError("packagename",
116 "Please enter a package name")
117
118 # If we've been called from the frontpage filebug forms we must check
119@@ -1369,9 +1370,6 @@
120 return canonical_url(self.context)
121
122
123-class BugTargetOnBugsVHostBreadcrumb(Breadcrumb):
124+class BugsVHostBreadcrumb(Breadcrumb):
125 rootsite = 'bugs'
126-
127- @property
128- def text(self):
129- return 'Bugs in %s' % self.context.name
130+ text = 'Bugs'
131
132=== modified file 'lib/lp/bugs/browser/tests/test_breadcrumbs.py'
133--- lib/lp/bugs/browser/tests/test_breadcrumbs.py 2009-09-10 18:23:44 +0000
134+++ lib/lp/bugs/browser/tests/test_breadcrumbs.py 2009-09-22 18:45:02 +0000
135@@ -55,7 +55,7 @@
136 'http://bugs.launchpad.dev/crumb-tester'],
137 self._getBreadcrumbsURLs(url, self.traversed_objects))
138 self.assertEquals(
139- ["Crumb Tester", "Bugs in crumb-tester"],
140+ ["Crumb Tester", "Bugs"],
141 self._getBreadcrumbsTexts(url, self.traversed_objects))
142
143
144
145=== modified file 'lib/lp/bugs/configure.zcml'
146--- lib/lp/bugs/configure.zcml 2009-09-07 10:53:24 +0000
147+++ lib/lp/bugs/configure.zcml 2009-09-22 18:45:02 +0000
148@@ -28,9 +28,9 @@
149 </securedutility>
150 <facet
151 facet="bugs"/>
152-
153+
154 <!-- Macros -->
155-
156+
157 <facet
158 facet="bugs">
159 <class
160@@ -117,24 +117,24 @@
161 <allow
162 interface="lp.bugs.interfaces.malone.IMaloneApplication"/>
163 </securedutility>
164-
165+
166 <!-- pages for the malone application -->
167-
168+
169 <xmlrpc:view
170 for="lp.bugs.interfaces.malone.IMaloneApplication"
171 methods="filebug"
172 class="canonical.launchpad.xmlrpc.FileBugAPI"
173 permission="launchpad.AnyPerson"/>
174-
175+
176 <!-- Global Malone portlets -->
177-
178-
179+
180+
181 <!-- Preserve the /bugs/assigned link to prevent linkrot. This will now
182 redirect into the FOAF +assignedbugs. -->
183
184-
185+
186 <!-- BugTrackerPerson -->
187-
188+
189 <class
190 class="lp.bugs.model.bugtrackerperson.BugTrackerPerson">
191 <allow
192@@ -149,9 +149,9 @@
193 sourcepackagename
194 bug_supervisor"/>
195 </class>
196-
197+
198 <!-- CveReference -->
199-
200+
201 <class
202 class="canonical.launchpad.database.CveReference">
203 <allow
204@@ -162,9 +162,9 @@
205 </class>
206 <facet
207 facet="bugs">
208-
209+
210 <!-- IBugTask -->
211-
212+
213 <class
214 class="canonical.launchpad.database.BugTask">
215 <allow
216@@ -236,9 +236,9 @@
217 transitionToAssignee
218 transitionToMilestone
219 transitionToTarget"/>
220-
221+
222 <!-- XXX Brad Bollenbach 2006-09-29
223-
224+
225 bug=63000:
226 The permission checking for milestone and importance is further
227 restricted in the browser view code (BugTaskEditView). -->
228@@ -277,9 +277,9 @@
229 for="lp.bugs.interfaces.bugtask.IBugTask"
230 factory="lp.bugs.browser.bugtask.BugTaskBreadcrumb"
231 permission="zope.Public"/>
232-
233+
234 <!-- NullBugTask -->
235-
236+
237 <class
238 class="lp.bugs.model.bugtask.NullBugTask">
239 <require
240@@ -289,9 +289,9 @@
241 permission="launchpad.Edit"
242 set_schema="lp.bugs.interfaces.bugtask.IBugTask"/>
243 </class>
244-
245+
246 <!-- BugTaskSet -->
247-
248+
249 <class
250 class="canonical.launchpad.database.BugTaskSet">
251 <allow
252@@ -305,9 +305,9 @@
253 <allow
254 interface="lp.bugs.interfaces.bugtask.IBugTaskSet"/>
255 </securedutility>
256-
257+
258 <!-- BugTaskDelta -->
259-
260+
261 <class
262 class="lp.bugs.model.bugtask.BugTaskDelta">
263 <allow
264@@ -323,9 +323,9 @@
265 permission="launchpad.Edit"
266 set_schema="lp.bugs.interfaces.bugattachment.IBugAttachment"/>
267 </class>
268-
269+
270 <!-- BugAttachmentSet -->
271-
272+
273 <class
274 class="canonical.launchpad.database.BugAttachmentSet">
275 <allow
276@@ -339,9 +339,9 @@
277 </securedutility>
278 <facet
279 facet="bugs">
280-
281+
282 <!-- BugTracker -->
283-
284+
285 <class
286 class="canonical.launchpad.database.BugTracker">
287 <implements
288@@ -386,9 +386,9 @@
289 for="lp.bugs.interfaces.bugtracker.IBugTracker"
290 factory="canonical.launchpad.webapp.breadcrumb.TitleBreadcrumb"
291 permission="zope.Public"/>
292-
293+
294 <!-- BugTrackerSet -->
295-
296+
297 <class
298 class="canonical.launchpad.database.BugTrackerSet">
299 <allow
300@@ -405,9 +405,9 @@
301 for="lp.bugs.interfaces.bugtracker.IBugTrackerSet"
302 factory="lp.bugs.browser.bugtracker.BugTrackerSetBreadcrumb"
303 permission="zope.Public"/>
304-
305+
306 <!-- BugTrackerAlias -->
307-
308+
309 <class
310 class="canonical.launchpad.database.BugTrackerAlias">
311 <allow
312@@ -416,9 +416,9 @@
313 permission="zope.Public"
314 set_schema="lp.bugs.interfaces.bugtracker.IBugTrackerAlias"/>
315 </class>
316-
317+
318 <!-- BugTrackerAliasSet -->
319-
320+
321 <class
322 class="canonical.launchpad.database.BugTrackerAliasSet">
323 <allow
324@@ -430,18 +430,18 @@
325 <allow
326 interface="lp.bugs.interfaces.bugtracker.IBugTrackerAliasSet"/>
327 </securedutility>
328-
329+
330 <!-- RemoteBug -->
331-
332+
333 <class
334 class="lp.bugs.browser.bugtracker.RemoteBug">
335 <allow
336 interface="lp.bugs.interfaces.bugtracker.IRemoteBug"/>
337 </class>
338 </facet>
339-
340+
341 <!-- IBugBranch -->
342-
343+
344 <class
345 class="canonical.launchpad.database.BugBranch">
346 <allow
347@@ -456,15 +456,15 @@
348 for="lp.bugs.interfaces.bugbranch.IBugBranch"
349 provides="canonical.launchpad.webapp.interfaces.IPrimaryContext"
350 factory="lp.bugs.browser.bugbranch.BugBranchPrimaryContext"/>
351-
352+
353 <!-- hierarchy -->
354-
355+
356 <subscriber
357 for="lp.bugs.interfaces.bugbranch.IBugBranch lazr.lifecycle.interfaces.IObjectCreatedEvent"
358 handler="canonical.launchpad.subscribers.karma.bug_branch_created"/>
359-
360+
361 <!-- BugBranchSet -->
362-
363+
364 <class
365 class="canonical.launchpad.database.BugBranchSet">
366 <allow
367@@ -476,9 +476,9 @@
368 <allow
369 interface="lp.bugs.interfaces.bugbranch.IBugBranchSet"/>
370 </securedutility>
371-
372+
373 <!-- BugCve -->
374-
375+
376 <class
377 class="canonical.launchpad.database.BugCve">
378 <allow
379@@ -486,9 +486,9 @@
380 </class>
381 <facet
382 facet="bugs">
383-
384+
385 <!-- CVE -->
386-
387+
388 <class
389 class="canonical.launchpad.database.Cve">
390 <allow
391@@ -496,9 +496,9 @@
392 <require
393 permission="launchpad.AnyPerson"
394 set_schema="lp.bugs.interfaces.cve.ICve"/>
395-
396+
397 <!-- IBugLinkTarget -->
398-
399+
400 <allow
401 attributes="
402 bugs
403@@ -509,9 +509,9 @@
404 linkBug
405 unlinkBug"/>
406 </class>
407-
408+
409 <!-- CveSet -->
410-
411+
412 <class
413 class="canonical.launchpad.database.CveSet">
414 <allow
415@@ -524,9 +524,9 @@
416 interface="lp.bugs.interfaces.cve.ICveSet"/>
417 </securedutility>
418 </facet>
419-
420+
421 <!-- BugSubscription -->
422-
423+
424 <class
425 class="canonical.launchpad.database.BugSubscription">
426 <allow
427@@ -537,9 +537,9 @@
428 </class>
429 <facet
430 facet="bugs">
431-
432+
433 <!-- Bug -->
434-
435+
436 <class
437 class="canonical.launchpad.database.Bug">
438 <implements
439@@ -674,9 +674,9 @@
440 <adapter
441 factory="lp.bugs.browser.bug.bug_description_xhtml_representation"
442 name="description"/>
443-
444+
445 <!-- BugSet -->
446-
447+
448 <class
449 class="canonical.launchpad.database.BugSet">
450 <allow
451@@ -688,18 +688,18 @@
452 <allow
453 interface="lp.bugs.interfaces.bug.IBugSet"/>
454 </securedutility>
455-
456+
457 <!-- BugDelta -->
458-
459+
460 <class
461 class="lp.bugs.adapters.bugdelta.BugDelta">
462 <allow
463 interface="lp.bugs.interfaces.bug.IBugDelta"/>
464 </class>
465 </facet>
466-
467+
468 <!-- BugMessage -->
469-
470+
471 <class
472 class="canonical.launchpad.database.BugMessage">
473 <allow
474@@ -708,9 +708,9 @@
475 permission="launchpad.Admin"
476 set_attributes="remote_comment_id bugwatch visible"/>
477 </class>
478-
479+
480 <!-- BugMessageSet -->
481-
482+
483 <class
484 class="canonical.launchpad.database.BugMessageSet">
485 <allow
486@@ -780,9 +780,9 @@
487 handler="lp.bugs.subscribers.bugactivity.record_bugsubscription_edited"/>
488 <facet
489 facet="bugs">
490-
491+
492 <!-- BugWatch -->
493-
494+
495 <class
496 class="canonical.launchpad.database.BugWatch">
497 <implements
498@@ -822,12 +822,12 @@
499 updateStatus"
500 set_attributes="last_error_type lastchanged lastchecked needscheck remote_importance remotestatus"/>
501 </class>
502-
503+
504 <!-- https://launchpad.net/bugs/98639 -->
505-
506-
507+
508+
509 <!--BugWatchSet -->
510-
511+
512 <class
513 class="canonical.launchpad.database.BugWatchSet">
514 <allow
515@@ -888,6 +888,6 @@
516 name="bugs"
517 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
518 for="lp.bugs.interfaces.bugtarget.IBugTarget"
519- factory="lp.bugs.browser.bugtarget.BugTargetOnBugsVHostBreadcrumb"
520+ factory="lp.bugs.browser.bugtarget.BugsVHostBreadcrumb"
521 permission="zope.Public"/>
522 </configure>
523
524=== modified file 'lib/lp/code/browser/branchlisting.py'
525--- lib/lp/code/browser/branchlisting.py 2009-09-18 03:29:53 +0000
526+++ lib/lp/code/browser/branchlisting.py 2009-09-22 18:45:02 +0000
527@@ -12,7 +12,7 @@
528 'DistributionSourcePackageBranchesView',
529 'DistroSeriesBranchListingView',
530 'GroupedDistributionSourcePackageBranchesView',
531- 'HasBranchesBreadcrumb',
532+ 'CodeVHostBreadcrumb',
533 'PersonBranchesMenu',
534 'PersonCodeSummaryView',
535 'PersonOwnedBranchesView',
536@@ -100,12 +100,9 @@
537 return plural
538
539
540-class HasBranchesBreadcrumb(Breadcrumb):
541+class CodeVHostBreadcrumb(Breadcrumb):
542 rootsite = 'code'
543-
544- @property
545- def text(self):
546- return 'Branches for %s' % self.context.displayname
547+ text = 'Branches'
548
549
550 class BranchBadges(HasBadgeBase):
551
552=== modified file 'lib/lp/code/browser/configure.zcml'
553--- lib/lp/code/browser/configure.zcml 2009-09-21 20:04:09 +0000
554+++ lib/lp/code/browser/configure.zcml 2009-09-22 18:45:02 +0000
555@@ -959,7 +959,7 @@
556 name="code"
557 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
558 for="lp.code.interfaces.hasbranches.IHasBranches"
559- factory="lp.code.browser.branchlisting.HasBranchesBreadcrumb"
560+ factory="lp.code.browser.branchlisting.CodeVHostBreadcrumb"
561 permission="zope.Public"/>
562
563 <adapter
564
565=== modified file 'lib/lp/translations/browser/translations.py'
566--- lib/lp/translations/browser/translations.py 2009-09-11 12:24:25 +0000
567+++ lib/lp/translations/browser/translations.py 2009-09-22 18:45:02 +0000
568@@ -203,10 +203,7 @@
569
570 class TranslationsVHostBreadcrumb(Breadcrumb):
571 rootsite = 'translations'
572-
573- @property
574- def text(self):
575- return 'Translations'
576+ text = 'Translations'
577
578
579 class TranslationsLanguageBreadcrumb(Breadcrumb):