Merge lp:~salgado/launchpad/cleanup-breadcrumbs into lp:launchpad

Proposed by Guilherme Salgado
Status: Merged
Merged at revision: not available
Proposed branch: lp:~salgado/launchpad/cleanup-breadcrumbs
Merge into: lp:launchpad
Diff against target: None lines
To merge this branch: bzr merge lp:~salgado/launchpad/cleanup-breadcrumbs
Reviewer Review Type Date Requested Status
Celso Providelo (community) code Approve
Review via email: mp+11133@code.launchpad.net
To post a comment you must log in.
Revision history for this message
Guilherme Salgado (salgado) wrote :

= Summary =

Most of our IBreadcrumb adapters define just a text property that
returns the context's title or displayname, so I defined some generic
adapters that do just that and used them instead, removing the existing
ones.

The field_names variable removed is because it was redefined a few lines
below. Also, the lint issues on browser/person.py have been fixed on
another branch of mine, so I won't fix them here.

== Tests ==

./bin/test -vvt test_breadcrumbs

== Demo and Q/A ==

= Launchpad lint =

Checking for conflicts. and issues in doctests and templates.
Running jslint, xmllint, pyflakes, and pylint.
Using normal rules.

Linting changed files:
  lib/lp/bugs/configure.zcml
  lib/lp/registry/browser/product.py
  lib/lp/registry/configure.zcml
  lib/canonical/launchpad/webapp/breadcrumb.py
  lib/lp/soyuz/configure.zcml
  lib/lp/blueprints/configure.zcml
  lib/lp/blueprints/browser/sprint.py
  lib/lp/bugs/browser/bugtracker.py
  lib/lp/soyuz/browser/builder.py
  lib/lp/translations/configure.zcml
  lib/lp/translations/browser/translationgroup.py
  lib/lp/registry/browser/person.py
  lib/lp/registry/browser/distribution.py
  lib/lp/registry/browser/project.py
  lib/lp/soyuz/browser/archive.py

== Pylint notices ==

lib/lp/registry/browser/product.py
    54: [F0401] Unable to import 'lazr.delegates' (No module named delegates)

lib/lp/soyuz/browser/builder.py
    44: [F0401] Unable to import 'lazr.delegates' (No module named delegates)

lib/lp/registry/browser/person.py
    1186: [C0301] Line too long (79/78)
    1273: [C0301] Line too long (79/78)
    3120: [W0311] Bad indentation. Found 10 spaces, expected 12
    3124: [W0311] Bad indentation. Found 10 spaces, expected 12
    119: [F0401] Unable to import 'lazr.delegates' (No module named delegates)
    120: [F0401] Unable to import 'lazr.config' (No module named config)
    121: [F0401] Unable to import 'lazr.restful.interface' (No module named restful)

Revision history for this message
Celso Providelo (cprov) wrote :

Cool! Very nice change, Salgado.

review: Approve (code)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'lib/canonical/launchpad/webapp/breadcrumb.py'
--- lib/canonical/launchpad/webapp/breadcrumb.py 2009-08-31 17:40:56 +0000
+++ lib/canonical/launchpad/webapp/breadcrumb.py 2009-09-03 15:04:13 +0000
@@ -7,6 +7,8 @@
77
8__all__ = [8__all__ = [
9 'Breadcrumb',9 'Breadcrumb',
10 'DisplaynameBreadcrumb',
11 'TitleBreadcrumb',
10 ]12 ]
1113
1214
@@ -67,3 +69,19 @@
6769
68 return "<%s url='%s' text='%s'%s>" % (70 return "<%s url='%s' text='%s'%s>" % (
69 self.__class__.__name__, self.url, self.text, icon_repr)71 self.__class__.__name__, self.url, self.text, icon_repr)
72
73
74class DisplaynameBreadcrumb(Breadcrumb):
75 """An `IBreadcrumb` that uses the context's displayname as its text."""
76
77 @property
78 def text(self):
79 return self.context.displayname
80
81
82class TitleBreadcrumb(Breadcrumb):
83 """An `IBreadcrumb` that uses the context's title as its text."""
84
85 @property
86 def text(self):
87 return self.context.title
7088
=== modified file 'lib/lp/blueprints/browser/sprint.py'
--- lib/lp/blueprints/browser/sprint.py 2009-08-29 03:38:28 +0000
+++ lib/lp/blueprints/browser/sprint.py 2009-09-03 15:04:13 +0000
@@ -8,7 +8,6 @@
8 'SprintAddView',8 'SprintAddView',
9 'SprintAttendeesCsvExportView',9 'SprintAttendeesCsvExportView',
10 'SprintBrandingView',10 'SprintBrandingView',
11 'SprintBreadcrumb',
12 'SprintEditView',11 'SprintEditView',
13 'SprintFacets',12 'SprintFacets',
14 'SprintMeetingExportView',13 'SprintMeetingExportView',
@@ -70,13 +69,6 @@
70 usedfor = ISprint69 usedfor = ISprint
7170
7271
73class SprintBreadcrumb(Breadcrumb):
74 """Builds a breadcrumb for an `ISprint`."""
75 @property
76 def text(self):
77 return self.context.title
78
79
80class SprintOverviewMenu(ApplicationMenu):72class SprintOverviewMenu(ApplicationMenu):
8173
82 usedfor = ISprint74 usedfor = ISprint
8375
=== modified file 'lib/lp/blueprints/configure.zcml'
--- lib/lp/blueprints/configure.zcml 2009-08-24 20:28:33 +0000
+++ lib/lp/blueprints/configure.zcml 2009-09-03 15:04:13 +0000
@@ -28,7 +28,7 @@
28 <adapter28 <adapter
29 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"29 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
30 for="lp.blueprints.interfaces.sprint.ISprint"30 for="lp.blueprints.interfaces.sprint.ISprint"
31 factory="lp.blueprints.browser.sprint.SprintBreadcrumb"31 factory="canonical.launchpad.webapp.breadcrumb.TitleBreadcrumb"
32 permission="zope.Public"/>32 permission="zope.Public"/>
33 <adapter33 <adapter
34 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"34 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
3535
=== modified file 'lib/lp/bugs/browser/bugtracker.py'
--- lib/lp/bugs/browser/bugtracker.py 2009-08-24 20:28:33 +0000
+++ lib/lp/bugs/browser/bugtracker.py 2009-09-03 15:04:13 +0000
@@ -7,7 +7,6 @@
77
8__all__ = [8__all__ = [
9 'BugTrackerAddView',9 'BugTrackerAddView',
10 'BugTrackerBreadcrumb',
11 'BugTrackerContextMenu',10 'BugTrackerContextMenu',
12 'BugTrackerEditView',11 'BugTrackerEditView',
13 'BugTrackerNavigation',12 'BugTrackerNavigation',
@@ -41,7 +40,6 @@
41 redirection, structured)40 redirection, structured)
42from canonical.launchpad.webapp.authorization import check_permission41from canonical.launchpad.webapp.authorization import check_permission
43from canonical.launchpad.webapp.batching import BatchNavigator42from canonical.launchpad.webapp.batching import BatchNavigator
44from canonical.launchpad.webapp.breadcrumb import Breadcrumb
45from canonical.widgets import DelimitedListWidget, LaunchpadRadioWidget43from canonical.widgets import DelimitedListWidget, LaunchpadRadioWidget
4644
4745
@@ -194,10 +192,6 @@
194class BugTrackerEditView(LaunchpadEditFormView):192class BugTrackerEditView(LaunchpadEditFormView):
195193
196 schema = IBugTracker194 schema = IBugTracker
197 field_names = ['name', 'title', 'bugtrackertype',
198 'summary', 'baseurl', 'aliases', 'contactdetails',
199 'active']
200
201 custom_widget('summary', TextAreaWidget, width=30, height=5)195 custom_widget('summary', TextAreaWidget, width=30, height=5)
202 custom_widget('aliases', DelimitedListWidget, height=3)196 custom_widget('aliases', DelimitedListWidget, height=3)
203 custom_widget('active', LaunchpadRadioWidget, orientation='vertical')197 custom_widget('active', LaunchpadRadioWidget, orientation='vertical')
@@ -379,13 +373,6 @@
379 return RemoteBug(self.context, remotebug, bugs)373 return RemoteBug(self.context, remotebug, bugs)
380374
381375
382class BugTrackerBreadcrumb(Breadcrumb):
383 """Builds a breadcrumb for an `IBugTracker`."""
384 @property
385 def text(self):
386 return self.context.title
387
388
389class RemoteBug:376class RemoteBug:
390 """Represents a bug in a remote bug tracker."""377 """Represents a bug in a remote bug tracker."""
391378
392379
=== modified file 'lib/lp/bugs/configure.zcml'
--- lib/lp/bugs/configure.zcml 2009-08-25 13:51:39 +0000
+++ lib/lp/bugs/configure.zcml 2009-09-03 15:04:13 +0000
@@ -384,7 +384,7 @@
384 <adapter384 <adapter
385 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"385 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
386 for="lp.bugs.interfaces.bugtracker.IBugTracker"386 for="lp.bugs.interfaces.bugtracker.IBugTracker"
387 factory="lp.bugs.browser.bugtracker.BugTrackerBreadcrumb"387 factory="canonical.launchpad.webapp.breadcrumb.TitleBreadcrumb"
388 permission="zope.Public"/>388 permission="zope.Public"/>
389 389
390 <!-- BugTrackerSet -->390 <!-- BugTrackerSet -->
391391
=== modified file 'lib/lp/registry/browser/distribution.py'
--- lib/lp/registry/browser/distribution.py 2009-09-02 05:37:54 +0000
+++ lib/lp/registry/browser/distribution.py 2009-09-03 15:04:13 +0000
@@ -11,7 +11,6 @@
11 'DistributionArchiveMirrorsRSSView',11 'DistributionArchiveMirrorsRSSView',
12 'DistributionArchiveMirrorsView',12 'DistributionArchiveMirrorsView',
13 'DistributionArchivesView',13 'DistributionArchivesView',
14 'DistributionBreadcrumb',
15 'DistributionChangeMembersView',14 'DistributionChangeMembersView',
16 'DistributionChangeMirrorAdminView',15 'DistributionChangeMirrorAdminView',
17 'DistributionCountryArchiveMirrorsView',16 'DistributionCountryArchiveMirrorsView',
@@ -172,13 +171,6 @@
172 return self.redirectSubTree(canonical_url(distribution))171 return self.redirectSubTree(canonical_url(distribution))
173172
174173
175class DistributionBreadcrumb(Breadcrumb):
176 """Builds a breadcrumb for an `IDistribution`."""
177 @property
178 def text(self):
179 return self.context.displayname
180
181
182class DistributionFacets(QuestionTargetFacetMixin, StandardLaunchpadFacets):174class DistributionFacets(QuestionTargetFacetMixin, StandardLaunchpadFacets):
183175
184 usedfor = IDistribution176 usedfor = IDistribution
185177
=== modified file 'lib/lp/registry/browser/person.py'
--- lib/lp/registry/browser/person.py 2009-09-02 13:28:19 +0000
+++ lib/lp/registry/browser/person.py 2009-09-03 15:04:13 +0000
@@ -22,7 +22,6 @@
22 'PersonAnswersMenu',22 'PersonAnswersMenu',
23 'PersonAssignedBugTaskSearchListingView',23 'PersonAssignedBugTaskSearchListingView',
24 'PersonBrandingView',24 'PersonBrandingView',
25 'PersonBreadcrumb',
26 'PersonBugsMenu',25 'PersonBugsMenu',
27 'PersonChangePasswordView',26 'PersonChangePasswordView',
28 'PersonClaimView',27 'PersonClaimView',
@@ -662,13 +661,6 @@
662 return Link('+adminteammerge', text, icon='edit')661 return Link('+adminteammerge', text, icon='edit')
663662
664663
665class PersonBreadcrumb(Breadcrumb):
666 """Builds a breadcrumb for an `IPerson`."""
667 @property
668 def text(self):
669 return self.context.displayname
670
671
672class PersonFacets(StandardLaunchpadFacets):664class PersonFacets(StandardLaunchpadFacets):
673 """The links that will appear in the facet menu for an IPerson."""665 """The links that will appear in the facet menu for an IPerson."""
674666
675667
=== modified file 'lib/lp/registry/browser/product.py'
--- lib/lp/registry/browser/product.py 2009-08-31 23:45:03 +0000
+++ lib/lp/registry/browser/product.py 2009-09-03 15:04:13 +0000
@@ -11,7 +11,6 @@
11 'ProductAddViewBase',11 'ProductAddViewBase',
12 'ProductAdminView',12 'ProductAdminView',
13 'ProductBrandingView',13 'ProductBrandingView',
14 'ProductBreadcrumb',
15 'ProductBugsMenu',14 'ProductBugsMenu',
16 'ProductDownloadFileMixin',15 'ProductDownloadFileMixin',
17 'ProductDownloadFilesView',16 'ProductDownloadFilesView',
@@ -245,13 +244,6 @@
245 "you soon."))244 "you soon."))
246245
247246
248class ProductBreadcrumb(Breadcrumb):
249 """Builds a breadcrumb for an `IProduct`."""
250 @property
251 def text(self):
252 return self.context.displayname
253
254
255class ProductFacets(QuestionTargetFacetMixin, StandardLaunchpadFacets):247class ProductFacets(QuestionTargetFacetMixin, StandardLaunchpadFacets):
256 """The links that will appear in the facet menu for an IProduct."""248 """The links that will appear in the facet menu for an IProduct."""
257249
258250
=== modified file 'lib/lp/registry/browser/project.py'
--- lib/lp/registry/browser/project.py 2009-09-01 15:13:46 +0000
+++ lib/lp/registry/browser/project.py 2009-09-03 15:04:13 +0000
@@ -12,7 +12,6 @@
12 'ProjectAddView',12 'ProjectAddView',
13 'ProjectAnswersMenu',13 'ProjectAnswersMenu',
14 'ProjectBrandingView',14 'ProjectBrandingView',
15 'ProjectBreadcrumb',
16 'ProjectBugsMenu',15 'ProjectBugsMenu',
17 'ProjectEditView',16 'ProjectEditView',
18 'ProjectFacets',17 'ProjectFacets',
@@ -104,13 +103,6 @@
104 return self.redirectSubTree(canonical_url(project))103 return self.redirectSubTree(canonical_url(project))
105104
106105
107class ProjectBreadcrumb(Breadcrumb):
108 """Builds a breadcrumb for an `IProject`."""
109 @property
110 def text(self):
111 return self.context.displayname
112
113
114class ProjectSetBreadcrumb(Breadcrumb):106class ProjectSetBreadcrumb(Breadcrumb):
115 """Builds a breadcrumb for an `IProjectSet`."""107 """Builds a breadcrumb for an `IProjectSet`."""
116 text = 'Project Groups'108 text = 'Project Groups'
117109
=== modified file 'lib/lp/registry/configure.zcml'
--- lib/lp/registry/configure.zcml 2009-08-28 06:16:06 +0000
+++ lib/lp/registry/configure.zcml 2009-09-03 15:04:13 +0000
@@ -313,7 +313,7 @@
313 <adapter313 <adapter
314 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"314 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
315 for="lp.registry.interfaces.project.IProject"315 for="lp.registry.interfaces.project.IProject"
316 factory="lp.registry.browser.project.ProjectBreadcrumb"316 factory="canonical.launchpad.webapp.breadcrumb.DisplaynameBreadcrumb"
317 permission="zope.Public"/>317 permission="zope.Public"/>
318 <adapter318 <adapter
319 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"319 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
@@ -767,7 +767,7 @@
767 <adapter767 <adapter
768 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"768 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
769 for="lp.registry.interfaces.person.IPerson"769 for="lp.registry.interfaces.person.IPerson"
770 factory="lp.registry.browser.person.PersonBreadcrumb"770 factory="canonical.launchpad.webapp.breadcrumb.DisplaynameBreadcrumb"
771 permission="zope.Public"/>771 permission="zope.Public"/>
772 <adapter772 <adapter
773 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"773 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
@@ -1186,7 +1186,7 @@
1186 <adapter1186 <adapter
1187 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"1187 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
1188 for="lp.registry.interfaces.product.IProduct"1188 for="lp.registry.interfaces.product.IProduct"
1189 factory="lp.registry.browser.product.ProductBreadcrumb"1189 factory="canonical.launchpad.webapp.breadcrumb.DisplaynameBreadcrumb"
1190 permission="zope.Public"/>1190 permission="zope.Public"/>
1191 <adapter1191 <adapter
1192 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"1192 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
@@ -1432,7 +1432,7 @@
1432 <adapter1432 <adapter
1433 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"1433 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
1434 for="lp.registry.interfaces.distribution.IDistribution"1434 for="lp.registry.interfaces.distribution.IDistribution"
1435 factory="lp.registry.browser.distribution.DistributionBreadcrumb"1435 factory="canonical.launchpad.webapp.breadcrumb.DisplaynameBreadcrumb"
1436 permission="zope.Public"/>1436 permission="zope.Public"/>
1437 <adapter1437 <adapter
1438 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"1438 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
14391439
=== modified file 'lib/lp/soyuz/browser/archive.py'
--- lib/lp/soyuz/browser/archive.py 2009-09-01 18:26:21 +0000
+++ lib/lp/soyuz/browser/archive.py 2009-09-03 15:04:13 +0000
@@ -9,7 +9,6 @@
9 'ArchiveAdminView',9 'ArchiveAdminView',
10 'ArchiveActivateView',10 'ArchiveActivateView',
11 'ArchiveBadges',11 'ArchiveBadges',
12 'ArchiveBreadcrumb',
13 'ArchiveBuildsView',12 'ArchiveBuildsView',
14 'ArchiveContextMenu',13 'ArchiveContextMenu',
15 'ArchiveEditDependenciesView',14 'ArchiveEditDependenciesView',
@@ -78,7 +77,6 @@
78from canonical.launchpad.webapp.authorization import check_permission77from canonical.launchpad.webapp.authorization import check_permission
79from canonical.launchpad.webapp.badge import HasBadgeBase78from canonical.launchpad.webapp.badge import HasBadgeBase
80from canonical.launchpad.webapp.batching import BatchNavigator79from canonical.launchpad.webapp.batching import BatchNavigator
81from canonical.launchpad.webapp.breadcrumb import Breadcrumb
82from canonical.launchpad.webapp.interfaces import ICanonicalUrlData80from canonical.launchpad.webapp.interfaces import ICanonicalUrlData
83from canonical.launchpad.webapp.menu import structured, NavigationMenu81from canonical.launchpad.webapp.menu import structured, NavigationMenu
84from canonical.widgets import (82from canonical.widgets import (
@@ -382,14 +380,6 @@
382 links = []380 links = []
383381
384382
385class ArchiveBreadcrumb(Breadcrumb):
386 """Builds a breadcrumb for an `IArchive`."""
387
388 @property
389 def text(self):
390 return self.context.displayname
391
392
393class ArchiveViewBase(LaunchpadView):383class ArchiveViewBase(LaunchpadView):
394 """Common features for Archive view classes."""384 """Common features for Archive view classes."""
395385
396386
=== modified file 'lib/lp/soyuz/browser/builder.py'
--- lib/lp/soyuz/browser/builder.py 2009-08-27 19:22:38 +0000
+++ lib/lp/soyuz/browser/builder.py 2009-09-03 15:04:13 +0000
@@ -6,7 +6,6 @@
6__metaclass__ = type6__metaclass__ = type
77
8__all__ = [8__all__ = [
9 'BuilderBreadcrumb',
10 'BuilderFacets',9 'BuilderFacets',
11 'BuilderOverviewMenu',10 'BuilderOverviewMenu',
12 'BuilderNavigation',11 'BuilderNavigation',
@@ -74,13 +73,6 @@
74 usedfor = IBuilder73 usedfor = IBuilder
7574
7675
77class BuilderBreadcrumb(Breadcrumb):
78 """Builds a breadcrumb for an `IBuilder`."""
79 @property
80 def text(self):
81 return self.context.title
82
83
84class BuilderSetFacets(StandardLaunchpadFacets):76class BuilderSetFacets(StandardLaunchpadFacets):
85 """The links that will appear in the facet menu for an IBuilderSet."""77 """The links that will appear in the facet menu for an IBuilderSet."""
86 enable_only = ['overview']78 enable_only = ['overview']
8779
=== modified file 'lib/lp/soyuz/configure.zcml'
--- lib/lp/soyuz/configure.zcml 2009-09-02 16:30:48 +0000
+++ lib/lp/soyuz/configure.zcml 2009-09-03 15:04:13 +0000
@@ -416,7 +416,7 @@
416 <adapter416 <adapter
417 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"417 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
418 for="lp.soyuz.interfaces.archive.IArchive"418 for="lp.soyuz.interfaces.archive.IArchive"
419 factory="lp.soyuz.browser.archive.ArchiveBreadcrumb"419 factory="canonical.launchpad.webapp.breadcrumb.DisplaynameBreadcrumb"
420 permission="zope.Public"/>420 permission="zope.Public"/>
421421
422 <!-- ArchiveSet -->422 <!-- ArchiveSet -->
@@ -522,7 +522,7 @@
522 <adapter522 <adapter
523 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"523 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
524 for="lp.soyuz.interfaces.builder.IBuilder"524 for="lp.soyuz.interfaces.builder.IBuilder"
525 factory="lp.soyuz.browser.builder.BuilderBreadcrumb"525 factory="canonical.launchpad.webapp.breadcrumb.TitleBreadcrumb"
526 permission="zope.Public"/>526 permission="zope.Public"/>
527 <adapter527 <adapter
528 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"528 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
529529
=== modified file 'lib/lp/translations/browser/translationgroup.py'
--- lib/lp/translations/browser/translationgroup.py 2009-08-25 16:44:22 +0000
+++ lib/lp/translations/browser/translationgroup.py 2009-09-03 15:04:13 +0000
@@ -7,7 +7,6 @@
7__all__ = [7__all__ = [
8 'TranslationGroupAddTranslatorView',8 'TranslationGroupAddTranslatorView',
9 'TranslationGroupAddView',9 'TranslationGroupAddView',
10 'TranslationGroupBreadcrumb',
11 'TranslationGroupEditView',10 'TranslationGroupEditView',
12 'TranslationGroupNavigation',11 'TranslationGroupNavigation',
13 'TranslationGroupReassignmentView',12 'TranslationGroupReassignmentView',
@@ -46,17 +45,9 @@
4645
47class TranslationGroupSetBreadcrumb(Breadcrumb):46class TranslationGroupSetBreadcrumb(Breadcrumb):
48 """Builds a breadcrumb for an `ITranslationGroupSet`."""47 """Builds a breadcrumb for an `ITranslationGroupSet`."""
49
50 text = u"Translation groups"48 text = u"Translation groups"
5149
5250
53class TranslationGroupBreadcrumb(Breadcrumb):
54 """Builds a breadcrumb for an `ITranslationGroup`."""
55
56 @property
57 def text(self):
58 return self.context.title
59
60class TranslationGroupView:51class TranslationGroupView:
6152
62 def __init__(self, context, request):53 def __init__(self, context, request):
6354
=== modified file 'lib/lp/translations/configure.zcml'
--- lib/lp/translations/configure.zcml 2009-08-25 16:44:22 +0000
+++ lib/lp/translations/configure.zcml 2009-09-03 15:04:13 +0000
@@ -397,7 +397,7 @@
397 <adapter397 <adapter
398 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"398 provides="canonical.launchpad.webapp.interfaces.IBreadcrumb"
399 for="lp.translations.interfaces.translationgroup.ITranslationGroup"399 for="lp.translations.interfaces.translationgroup.ITranslationGroup"
400 factory="lp.translations.browser.translationgroup.TranslationGroupBreadcrumb"400 factory="canonical.launchpad.webapp.breadcrumb.TitleBreadcrumb"
401 permission="zope.Public"/>401 permission="zope.Public"/>
402402
403 <!-- TranslationGroupSet -->403 <!-- TranslationGroupSet -->
404404