Blueprints involving
-
Blueprints for
-
=== modified file 'lib/lp/blueprints/templates/specificationtarget-assignments.pt'
--- lib/lp/blueprints/templates/specificationtarget-assignments.pt 2009-09-22 00:13:14 +0000
+++ lib/lp/blueprints/templates/specificationtarget-assignments.pt 2009-09-22 14:54:36 +0000
@@ -3,12 +3,17 @@
xmlns:tal="http://xml.zope.org/namespaces/tal"
xmlns:metal="http://xml.zope.org/namespaces/metal"
xmlns:i18n="http://xml.zope.org/namespaces/i18n"
- metal:use-macro="view/macro:page/main_only"
+ metal:use-macro="view/macro:page/main_side"
i18n:domain="launchpad"
>
+
+
+
+
+
-
-
=== modified file 'lib/lp/registry/browser/distribution.py'
--- lib/lp/registry/browser/distribution.py 2009-09-16 00:40:53 +0000
+++ lib/lp/registry/browser/distribution.py 2009-09-22 14:54:36 +0000
@@ -47,6 +47,8 @@
from zope.security.interfaces import Unauthorized
from canonical.cachedproperty import cachedproperty
+from lp.blueprints.browser.specificationtarget import (
+ HasSpecificationsMenuMixin)
from lp.registry.browser.announcement import HasAnnouncementsView
from lp.registry.browser.menu import (
IRegistryCollectionNavigationMenu, RegistryCollectionActionMenuBase)
@@ -454,31 +456,12 @@
return Link('+subscribe', text, icon='edit')
-class DistributionSpecificationsMenu(ApplicationMenu):
-
+class DistributionSpecificationsMenu(NavigationMenu,
+ HasSpecificationsMenuMixin):
usedfor = IDistribution
facet = 'specifications'
links = ['listall', 'doc', 'assignments', 'new']
- def listall(self):
- text = 'List all blueprints'
- return Link('+specs?show=all', text, icon='info')
-
- def assignments(self):
- text = 'Assignments'
- return Link('+assignments', text, icon='info')
-
- def doc(self):
- text = 'Documentation'
- summary = 'List all complete informational specifications'
- return Link('+documentation', text, summary,
- icon='info')
-
- def new(self):
- text = 'Register a blueprint'
- summary = 'Register a new blueprint for %s' % self.context.title
- return Link('+addspec', text, summary, icon='add')
-
class DistributionPackageSearchView(PackageSearchViewBase):
"""Customised PackageSearchView for Distribution"""
=== modified file 'lib/lp/registry/browser/distroseries.py'
--- lib/lp/registry/browser/distroseries.py 2009-09-15 01:17:46 +0000
+++ lib/lp/registry/browser/distroseries.py 2009-09-22 14:54:36 +0000
@@ -28,6 +28,8 @@
from canonical.database.constants import UTC_NOW
from canonical.launchpad import _
from canonical.launchpad import helpers
+from lp.blueprints.browser.specificationtarget import (
+ HasSpecificationsMenuMixin)
from lp.bugs.browser.bugtask import BugTargetTraversalMixin
from lp.soyuz.browser.build import BuildRecordsView
from canonical.launchpad.browser.packagesearch import PackageSearchViewBase
@@ -49,7 +51,7 @@
from canonical.launchpad.webapp.launchpadform import (
LaunchpadEditFormView, LaunchpadFormView)
from canonical.launchpad.webapp.menu import (
- ApplicationMenu, Link, enabled_with_permission)
+ ApplicationMenu, Link, NavigationMenu, enabled_with_permission)
from canonical.launchpad.webapp.publisher import (
canonical_url, stepthrough, stepto)
from canonical.widgets.itemswidgets import LaunchpadDropdownWidget
@@ -225,43 +227,12 @@
return Link('+subscribe', 'Subscribe to bug mail')
-class DistroSeriesSpecificationsMenu(ApplicationMenu):
+class DistroSeriesSpecificationsMenu(NavigationMenu,
+ HasSpecificationsMenuMixin):
usedfor = IDistroSeries
facet = 'specifications'
- links = ['listall', 'table', 'setgoals', 'listdeclined', 'new']
-
- def listall(self):
- text = 'List all blueprints'
- return Link('+specs?show=all', text, icon='info')
-
- def listapproved(self):
- text = 'List approved blueprints'
- return Link('+specs?acceptance=accepted', text, icon='info')
-
- def listproposed(self):
- text = 'List proposed blueprints'
- return Link('+specs?acceptance=proposed', text, icon='info')
-
- def listdeclined(self):
- text = 'List declined blueprints'
- summary = 'Show the goals which have been declined'
- return Link('+specs?acceptance=declined', text, icon='info')
-
- def setgoals(self):
- text = 'Set series goals'
- summary = 'Approve or decline feature goals that have been proposed'
- return Link('+setgoals', text, icon='info')
-
- def table(self):
- text = 'Assignments'
- summary = 'Show the assignee, drafter and approver of these specs'
- return Link('+assignments', text, icon='info')
-
- def new(self):
- text = 'Register a blueprint'
- summary = 'Register a new blueprint for %s' % self.context.title
- return Link('+addspec', text, summary, icon='add')
+ links = ['listall', 'listdeclined', 'assignments', 'setgoals', 'new']
class DistroSeriesPackageSearchView(PackageSearchViewBase):
=== modified file 'lib/lp/registry/browser/person.py'
--- lib/lp/registry/browser/person.py 2009-09-20 07:13:52 +0000
+++ lib/lp/registry/browser/person.py 2009-09-22 15:00:08 +0000
@@ -775,7 +775,7 @@
return Link('+commentedbugs', text, summary=summary)
-class PersonSpecsMenu(ApplicationMenu):
+class PersonSpecsMenu(NavigationMenu):
usedfor = IPerson
facet = 'specifications'
@@ -786,28 +786,28 @@
def registrant(self):
text = 'Registrant'
summary = 'List specs registered by %s' % self.context.displayname
- return Link('+specs?role=registrant', text, summary, icon='spec')
+ return Link('+specs?role=registrant', text, summary, icon='blueprint')
def approver(self):
text = 'Approver'
summary = 'List specs with %s is supposed to approve' % (
self.context.displayname)
- return Link('+specs?role=approver', text, summary, icon='spec')
+ return Link('+specs?role=approver', text, summary, icon='blueprint')
def assignee(self):
text = 'Assignee'
summary = 'List specs for which %s is the assignee' % (
self.context.displayname)
- return Link('+specs?role=assignee', text, summary, icon='spec')
+ return Link('+specs?role=assignee', text, summary, icon='blueprint')
def drafter(self):
text = 'Drafter'
summary = 'List specs drafted by %s' % self.context.displayname
- return Link('+specs?role=drafter', text, summary, icon='spec')
+ return Link('+specs?role=drafter', text, summary, icon='blueprint')
def subscriber(self):
text = 'Subscriber'
- return Link('+specs?role=subscriber', text, icon='spec')
+ return Link('+specs?role=subscriber', text, icon='blueprint')
def feedback(self):
text = 'Feedback requests'
=== modified file 'lib/lp/registry/browser/product.py'
--- lib/lp/registry/browser/product.py 2009-09-18 01:34:06 +0000
+++ lib/lp/registry/browser/product.py 2009-09-22 14:54:37 +0000
@@ -58,6 +58,8 @@
from canonical.launchpad import _
from canonical.launchpad.fields import PillarAliases, PublicPersonChoice
from lp.app.interfaces.headings import IEditableContextTitle
+from lp.blueprints.browser.specificationtarget import (
+ HasSpecificationsMenuMixin)
from lp.bugs.interfaces.bugtask import RESOLVED_BUGTASK_STATUSES
from lp.bugs.interfaces.bugwatch import IBugTracker
from lp.services.worlddata.interfaces.country import ICountry
@@ -475,32 +477,11 @@
return Link('+subscribe', text, icon='edit')
-class ProductSpecificationsMenu(ApplicationMenu):
-
+class ProductSpecificationsMenu(NavigationMenu,
+ HasSpecificationsMenuMixin):
usedfor = IProduct
facet = 'specifications'
- links = ['listall', 'doc', 'table', 'new']
-
- def listall(self):
- text = 'List all blueprints'
- summary = 'Show all specifications for %s' % self.context.title
- return Link('+specs?show=all', text, summary, icon='info')
-
- def doc(self):
- text = 'List documentation'
- summary = 'List all complete informational specifications'
- return Link('+documentation', text, summary,
- icon='info')
-
- def table(self):
- text = 'Assignments'
- summary = 'Show the full assignment of work, drafting and approving'
- return Link('+assignments', text, summary, icon='info')
-
- def new(self):
- text = 'Register a blueprint'
- summary = 'Register a new blueprint for %s' % self.context.title
- return Link('+addspec', text, summary, icon='add')
+ links = ['listall', 'doc', 'assignments', 'new']
def _sort_distros(a, b):
=== modified file 'lib/lp/registry/browser/productseries.py'
--- lib/lp/registry/browser/productseries.py 2009-09-15 02:16:19 +0000
+++ lib/lp/registry/browser/productseries.py 2009-09-22 14:54:37 +0000
@@ -39,6 +39,8 @@
from canonical.cachedproperty import cachedproperty
from canonical.launchpad import _
from lp.code.browser.branchref import BranchRef
+from lp.blueprints.browser.specificationtarget import (
+ HasSpecificationsMenuMixin)
from lp.blueprints.interfaces.specification import (
ISpecificationSet, SpecificationImplementationStatus)
from lp.bugs.interfaces.bugtask import BugTaskStatus
@@ -247,7 +249,8 @@
return Link('+subscribe', 'Subscribe to bug mail')
-class ProductSeriesSpecificationsMenu(ApplicationMenu):
+class ProductSeriesSpecificationsMenu(NavigationMenu,
+ HasSpecificationsMenuMixin):
"""Specs menu for ProductSeries.
This menu needs to keep track of whether we are showing all the
@@ -258,46 +261,7 @@
usedfor = IProductSeries
facet = 'specifications'
- links = ['listall', 'table', 'setgoals', 'listdeclined', 'new']
-
- def listall(self):
- """Return a link to show all blueprints."""
- text = 'List all blueprints'
- return Link('+specs?show=all', text, icon='info')
-
- def listaccepted(self):
- """Return a link to show the approved goals."""
- text = 'List approved blueprints'
- return Link('+specs?acceptance=accepted', text, icon='info')
-
- def listproposed(self):
- """Return a link to show the proposed goals."""
- text = 'List proposed blueprints'
- return Link('+specs?acceptance=proposed', text, icon='info')
-
- def listdeclined(self):
- """Return a link to show the declined goals."""
- text = 'List declined blueprints'
- summary = 'Show the goals which have been declined'
- return Link('+specs?acceptance=declined', text, summary, icon='info')
-
- def setgoals(self):
- """Return a link to set the series goals."""
- text = 'Set series goals'
- summary = 'Approve or decline feature goals that have been proposed'
- return Link('+setgoals', text, summary, icon='edit')
-
- def table(self):
- """Return a link to show the people assigned to the blueprint."""
- text = 'Assignments'
- summary = 'Show the assignee, drafter and approver of these specs'
- return Link('+assignments', text, summary, icon='info')
-
- def new(self):
- """Return a link to register a blueprint."""
- text = 'Register a blueprint'
- summary = 'Register a new blueprint for %s' % self.context.title
- return Link('+addspec', text, summary, icon='add')
+ links = ['listall', 'assignments', 'setgoals', 'listdeclined', 'new']
class ProductSeriesOverviewNavigationMenu(NavigationMenu):
=== modified file 'lib/lp/registry/browser/project.py'
--- lib/lp/registry/browser/project.py 2009-09-15 20:41:36 +0000
+++ lib/lp/registry/browser/project.py 2009-09-22 14:54:37 +0000
@@ -44,6 +44,8 @@
from canonical.launchpad import _
from canonical.launchpad.webapp.interfaces import NotFoundError
from canonical.launchpad.webapp.menu import NavigationMenu
+from lp.blueprints.browser.specificationtarget import (
+ HasSpecificationsMenuMixin)
from lp.registry.interfaces.product import IProductSet
from lp.registry.interfaces.project import (
IProject, IProjectSeries, IProjectSet)
@@ -267,30 +269,12 @@
links = ('branding', 'reassign', 'driver', 'administer')
-class ProjectSpecificationsMenu(ApplicationMenu):
-
+class ProjectSpecificationsMenu(NavigationMenu,
+ HasSpecificationsMenuMixin):
usedfor = IProject
facet = 'specifications'
links = ['listall', 'doc', 'assignments', 'new']
- def listall(self):
- text = 'List all blueprints'
- return Link('+specs?show=all', text, icon='info')
-
- def doc(self):
- text = 'List documentation'
- summary = 'Show all completed informational specifications'
- return Link('+documentation', text, summary, icon="info")
-
- def assignments(self):
- text = 'Assignments'
- return Link('+assignments', text, icon='info')
-
- def new(self):
- text = 'Register a blueprint'
- summary = 'Register a new blueprint for %s' % self.context.title
- return Link('+addspec', text, summary, icon='add')
-
class ProjectAnswersMenu(QuestionCollectionAnswersMenu):
"""Menu for the answers facet of projects."""