在添加问题跟踪器任务时,在网站上全局查找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 查看哈希值)
关闭
xm.globalissues-1.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 605f5d09e132b548d81ebd45fa12c61ab20bcd62c6107a03000fa3c3962590b7 |
|
MD5 | 174c8c3d3c46763c387acbbd5dd50494 |
|
BLAKE2b-256 | 02483b0bc5621beafe5d3892cb964c2d6eb5078075ab3dcc50255ddb6cf6b594 |
关闭
xm.globalissues-1.0-py2.4.egg 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b8f7746032fad23617b4fcbacdb3487715f53b95224fcc10b3a24e7fce4a3862 |
|
MD5 | 8118c76284690947198c270244dcb5be |
|
BLAKE2b-256 | 162d9723a589fef84527e4faaab5927c3bbc602c9127493f68722d2581c925db |