{ "info": { "author": "Hans-Peter Locher", "author_email": "hans-peter.locher@inquant.de", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "===============\nxm.globalissues\n===============\n\neXtremeManagement has a content type called 'Poi Task' that provides a way to link a\ntask to a story.\n\nxm.globalissues changes the way issues are being found when adding a\nPoi Task, so issues are found globally in the instance.\n\nSetup\n=====\n\n >>> self.setRoles(['Manager'])\n >>> workflow = self.portal.portal_workflow\n\nWe need to install Poi and eXtremeManagement:\n\n >>> ignore = self.portal.portal_quickinstaller.installProducts(['Poi', 'eXtremeManagement'])\n\nWe create a project, an iteration, and a story. Note that in our\nmodel, issues correspond to tasks:\n\n >>> projectfolder = \\\n ... self.portal[self.portal.invokeFactory('Folder', 'folder')]\n >>> project = projectfolder[projectfolder.invokeFactory('Project', 'project')]\n >>> iteration1 = project[project.invokeFactory('Iteration', 'iteration1')]\n >>> story1 = iteration1[iteration1.invokeFactory('Story', 'story1')]\n\nRemember that a story has to be estimated and marked as so, so that\nwe're able to add any tasks to it. Therefore, right now, we shouldn't\nbe able to add any tasks. An image is allowed, though.\n\n >>> def list_addable(context):\n ... allowed = context.getAllowedTypes()\n ... addable = context.getAddableTypesInMenu(allowed)\n ... return u', '.join(ad.Title() for ad in addable)\n >>> list_addable(story1)\n u'File, Image'\n\n >>> story1.setRoughEstimate(1.5)\n >>> workflow.doActionFor(story1, 'estimate')\n >>> list_addable(story1)\n u'File, Image, Issue Tracker Task, Task'\n\nLet's create an issue tracker in the project with two issues in it:\n\n >>> tracker = project[project.invokeFactory('PoiTracker', 'tracker')]\n >>> myissue = tracker[tracker.invokeFactory('PoiIssue', '1')]\n >>> yourissue = tracker[tracker.invokeFactory('PoiIssue', '2')]\n\nPoi Tasks\n=========\n\nIn our story, we can now add two different types of tasks, the normal\n\"Task\" type and the \"Poi Task\" type. The \"Poi Task\" is what we're\ninterested in, so let's create one and connect it with one of our\nissues:\n\n >>> task = story1[story1.invokeFactory('PoiTask', 'task')]\n >>> task.setIssues([myissue])\n >>> task.getIssues()\n []\n >>> story1.manage_delObjects(['task'])\n\nPoi Tasks have a vocabulary method `vocabulary_issues` that'll return\na DisplayList of issues that can be referred to. Note that this list\nonly includes open issues:\n\n >>> task.vocabulary_issues() # doctest: +ELLIPSIS\n \n >>> myissue.isValid = True\n >>> workflow.doActionFor(myissue, 'post')\n >>> workflow.doActionFor(myissue, 'resolve-unconfirmed')\n >>> task.vocabulary_issues() # doctest: +ELLIPSIS\n \n >>> workflow.doActionFor(myissue, 'open-resolved')\n >>> task.vocabulary_issues() # doctest: +ELLIPSIS\n \n\nMass-creating Poi Tasks\n-----------------------\n\nThe `@@xm-poi` view allows us to create tasks by tags. We use the\n`add_tasks_from_tags` method for this.\n\n >>> from Products.statusmessages.interfaces import IStatusMessage\n >>> storyview = story1.restrictedTraverse('@@xm-poi')\n >>> def show_message():\n ... for msg in [msg.message for msg in\n ... IStatusMessage(storyview.request).showStatusMessages()]:\n ... print msg\n\n\nFinding issues globally\n-----------------------\n\nThanks to xm.globalissues, issues that live outside our project are also\nconsidered:\n\n >>> folder = self.folder\n >>> tracker2 = folder[folder.invokeFactory('PoiTracker', 'tracker2')]\n >>> other_issue = tracker2[tracker2.invokeFactory('PoiIssue', 'other-issue')]\n >>> other_issue.setSubject(['yourtag'])\n >>> other_issue.reindexObject()\n >>> storyview.add_tasks_from_tags(['yourtag'])\n >>> show_message() # doctest: +NORMALIZE_WHITESPACE\n Added tasks for issues: other-issue.\n\nChangelog\n=========\n\n1.0 (2009-02-20)\n----------------\n\n* Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://svn.plone.org/svn/collective/xm.globalissues", "keywords": "Plone", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "xm.globalissues", "package_url": "https://pypi.org/project/xm.globalissues/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/xm.globalissues/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://svn.plone.org/svn/collective/xm.globalissues" }, "release_url": "https://pypi.org/project/xm.globalissues/1.0/", "requires_dist": null, "requires_python": null, "summary": "Find Poi issues globally in the site when adding issue tracker tasks", "version": "1.0" }, "last_serial": 801840, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "8118c76284690947198c270244dcb5be", "sha256": "b8f7746032fad23617b4fcbacdb3487715f53b95224fcc10b3a24e7fce4a3862" }, "downloads": -1, "filename": "xm.globalissues-1.0-py2.4.egg", "has_sig": false, "md5_digest": "8118c76284690947198c270244dcb5be", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 9942, "upload_time": "2009-02-20T09:33:24", "url": "https://files.pythonhosted.org/packages/16/2d/9723a589fef84527e4faaab5927c3bbc602c9127493f68722d2581c925db/xm.globalissues-1.0-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "174c8c3d3c46763c387acbbd5dd50494", "sha256": "605f5d09e132b548d81ebd45fa12c61ab20bcd62c6107a03000fa3c3962590b7" }, "downloads": -1, "filename": "xm.globalissues-1.0.tar.gz", "has_sig": false, "md5_digest": "174c8c3d3c46763c387acbbd5dd50494", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10241, "upload_time": "2009-02-20T09:33:23", "url": "https://files.pythonhosted.org/packages/02/48/3b0bc5621beafe5d3892cb964c2d6eb5078075ab3dcc50255ddb6cf6b594/xm.globalissues-1.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "8118c76284690947198c270244dcb5be", "sha256": "b8f7746032fad23617b4fcbacdb3487715f53b95224fcc10b3a24e7fce4a3862" }, "downloads": -1, "filename": "xm.globalissues-1.0-py2.4.egg", "has_sig": false, "md5_digest": "8118c76284690947198c270244dcb5be", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 9942, "upload_time": "2009-02-20T09:33:24", "url": "https://files.pythonhosted.org/packages/16/2d/9723a589fef84527e4faaab5927c3bbc602c9127493f68722d2581c925db/xm.globalissues-1.0-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "174c8c3d3c46763c387acbbd5dd50494", "sha256": "605f5d09e132b548d81ebd45fa12c61ab20bcd62c6107a03000fa3c3962590b7" }, "downloads": -1, "filename": "xm.globalissues-1.0.tar.gz", "has_sig": false, "md5_digest": "174c8c3d3c46763c387acbbd5dd50494", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10241, "upload_time": "2009-02-20T09:33:23", "url": "https://files.pythonhosted.org/packages/02/48/3b0bc5621beafe5d3892cb964c2d6eb5078075ab3dcc50255ddb6cf6b594/xm.globalissues-1.0.tar.gz" } ] }