跳转到主要内容

在添加问题跟踪器任务时,在网站上全局查找Poi问题

项目描述

eXtremeManagement有一个名为“Poi任务”的内容类型,它提供了一种将任务链接到故事的方式。

当添加Poi任务时,xm.globalissues改变了查找问题的方法,因此问题可以在实例中全局查找。

设置

>>> self.setRoles(['Manager'])
>>> workflow = self.portal.portal_workflow

我们需要安装Poi和eXtremeManagement

>>> ignore = self.portal.portal_quickinstaller.installProducts(['Poi', 'eXtremeManagement'])

我们创建了一个项目、一个迭代和一个故事。请注意,在我们的模型中,问题对应于任务

>>> projectfolder = \
...     self.portal[self.portal.invokeFactory('Folder', 'folder')]
>>> project = projectfolder[projectfolder.invokeFactory('Project', 'project')]
>>> iteration1 = project[project.invokeFactory('Iteration', 'iteration1')]
>>> story1 = iteration1[iteration1.invokeFactory('Story', 'story1')]

请记住,故事必须被估算并标记为如此,以便我们能够向其中添加任何任务。因此,现在我们不应该能够添加任何任务。允许添加图片。

>>> def list_addable(context):
...     allowed = context.getAllowedTypes()
...     addable = context.getAddableTypesInMenu(allowed)
...     return u', '.join(ad.Title() for ad in addable)
>>> list_addable(story1)
u'File, Image'
>>> story1.setRoughEstimate(1.5)
>>> workflow.doActionFor(story1, 'estimate')
>>> list_addable(story1)
u'File, Image, Issue Tracker Task, Task'

在项目中创建一个包含两个问题的问题跟踪器

>>> tracker = project[project.invokeFactory('PoiTracker', 'tracker')]
>>> myissue = tracker[tracker.invokeFactory('PoiIssue', '1')]
>>> yourissue = tracker[tracker.invokeFactory('PoiIssue', '2')]

Poi任务

在我们的故事中,我们现在可以添加两种不同类型的任务,即普通的“任务”类型和“Poi任务”类型。我们感兴趣的是“Poi任务”,因此让我们创建一个并将其与我们的一个问题相关联

>>> task = story1[story1.invokeFactory('PoiTask', 'task')]
>>> task.setIssues([myissue])
>>> task.getIssues()
[<PoiIssue at /plone/folder/project/tracker/1>]
>>> story1.manage_delObjects(['task'])

Poi任务有一个词汇方法 vocabulary_issues,它将返回一个包含可以引用的问题的DisplayList。请注意,此列表仅包括开放的问题

>>> task.vocabulary_issues() # doctest: +ELLIPSIS
<DisplayList [('...', '#1: '), ('...', '#2: ')] at ...>
>>> myissue.isValid = True
>>> workflow.doActionFor(myissue, 'post')
>>> workflow.doActionFor(myissue, 'resolve-unconfirmed')
>>> task.vocabulary_issues() # doctest: +ELLIPSIS
<DisplayList [('...', '#2: ')] at ...>
>>> workflow.doActionFor(myissue, 'open-resolved')
>>> task.vocabulary_issues() # doctest: +ELLIPSIS
<DisplayList [('...', '#1: '), ('...', '#2: ')] at ...>

批量创建Poi任务

@@xm-poi 视图允许我们通过标签创建任务。我们为此使用 add_tasks_from_tags 方法。

>>> from Products.statusmessages.interfaces import IStatusMessage
>>> storyview = story1.restrictedTraverse('@@xm-poi')
>>> def show_message():
...     for msg in [msg.message for msg in
...                 IStatusMessage(storyview.request).showStatusMessages()]:
...         print msg

全局查找问题

多亏了xm.globalissues,我们还考虑了位于我们项目之外的问题

>>> folder = self.folder
>>> tracker2 = folder[folder.invokeFactory('PoiTracker', 'tracker2')]
>>> other_issue = tracker2[tracker2.invokeFactory('PoiIssue', 'other-issue')]
>>> other_issue.setSubject(['yourtag'])
>>> other_issue.reindexObject()
>>> storyview.add_tasks_from_tags(['yourtag'])
>>> show_message() # doctest: +NORMALIZE_WHITESPACE
Added tasks for issues: other-issue.

变更日志

1.0 (2009-02-20)

  • 初始版本

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

xm.globalissues-1.0.tar.gz (10.2 kB 查看哈希值)

上传时间

构建分发

xm.globalissues-1.0-py2.4.egg (9.9 kB 查看哈希值)

上传时间

由以下支持