{ "info": { "author": "Simon Kaeser", "author_email": "skaeser@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python" ], "description": "Introduction\n============\n\nThe ``horae.dashboard`` package provides user and group dashboards for the Horae\nresource planning system. Every user and groups has its own dashboard which may\ncontain multiple widgets which may be individually positioned and resized.\n\nWidgets\n=======\n\nThere are several dashboard widgets already implemented:\n\n**Time tracking**\n A widget to track time on tickets\n**User tickets**\n A widget listing the tickets the current user is responsible for\n**Latest**\n A widget listing the latest changed objects of the current user\n**Notifications**\n A widget listing the latest notifications for the current user. Only available if the\n optional `horae.notification `_\n package is installed.\n**Work time tracking**\n A widget to track the work time of human resources. Only available if the optional\n `horae.resources `_ package is installed.\n**Reports**\n A widget displaying the results of a previously created report. Only available\n if the optional `horae.reports `_ package\n is installed.\n\nCreating widgets\n================\n\nCreating custom dashboard widgets is possible through the pluggable architecture of\nthe package. A widget consists of at least four parts:\n\n**Interface**\n The interface defining the schema of the widget and extends the base schema provided\n by ``horae.dashboard.interfaces.IWidget``\n**Widget factory**\n A named global utility implementing ``horae.dashboard.interfaces.IWidgetFactory``\n**Widget**\n A persistent widget extending ``horae.dashboard.dashboard.Widget`` and implementing\n the Interface mentioned above\n**View**\n The view named ``index`` rendering the widget in the dashboard\n\nA sample widget having one custom field which is later rendered on the widgets view\nwould be implemented as followed::\n\n import grok\n \n from zope import schema\n from zope.schema.fieldproperty import FieldProperty\n \n from horae.dashboard import dashboard, interfaces\n \n class ISampleWidget(interfaces.IWidget):\n \n content = schema.TextLine(\n title = u'Content',\n required = True\n )\n \n class SampleWidgetFactory(grok.GlobalUtility):\n grok.name('sample')\n grok.implements(interfaces.IWidgetFactory)\n \n name = u'Sample'\n schema = ISampleWidget\n \n def __call__(self):\n return SampleWidget()\n \n class SampleWidget(dashboard.Widget):\n grok.implements(ISampleWidget)\n \n title = u'Sample'\n content = FieldProperty(ISampleWidget['content'])\n \n class SampleWidgetIndex(grok.View):\n grok.name('index')\n grok.require('horae.View')\n grok.context(ISampleWidget)\n \n def render(self):\n return self.context.content\n\nDependencies\n============\n\nHorae\n-----\n\n* `horae.auth `_\n* `horae.autocomplete `_\n* `horae.core `_\n* `horae.datetime `_\n* `horae.layout `_\n* `horae.lifecycle `_\n* `horae.properties `_\n* `horae.ticketing `_\n* `horae.timeaware `_\n\nThird party\n-----------\n\n* `grok `_\n* `fanstatic `_\n* `zope.fanstatic `_\n\nChangelog\n=========\n\n1.0a1 (2012-01-16)\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": "UNKNOWN", "keywords": "", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "horae.dashboard", "package_url": "https://pypi.org/project/horae.dashboard/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/horae.dashboard/", "project_urls": { "Download": "UNKNOWN", "Homepage": "UNKNOWN" }, "release_url": "https://pypi.org/project/horae.dashboard/1.0a1/", "requires_dist": null, "requires_python": null, "summary": "Provides a dashboard for Horae", "version": "1.0a1" }, "last_serial": 792989, "releases": { "1.0a1": [ { "comment_text": "", "digests": { "md5": "90b78ea7e22b5e87fd4c5096e903cff2", "sha256": "4f871e16d78212f76ca42cf90956cad07520424e83208bdcf2e37db40a96b062" }, "downloads": -1, "filename": "horae.dashboard-1.0a1.tar.gz", "has_sig": false, "md5_digest": "90b78ea7e22b5e87fd4c5096e903cff2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18109, "upload_time": "2012-01-16T12:04:36", "url": "https://files.pythonhosted.org/packages/80/7f/716310b0a14adf7924108df01067b857fb6dfd8b9a8fbcdfe0e3d0d0c5a0/horae.dashboard-1.0a1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "90b78ea7e22b5e87fd4c5096e903cff2", "sha256": "4f871e16d78212f76ca42cf90956cad07520424e83208bdcf2e37db40a96b062" }, "downloads": -1, "filename": "horae.dashboard-1.0a1.tar.gz", "has_sig": false, "md5_digest": "90b78ea7e22b5e87fd4c5096e903cff2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18109, "upload_time": "2012-01-16T12:04:36", "url": "https://files.pythonhosted.org/packages/80/7f/716310b0a14adf7924108df01067b857fb6dfd8b9a8fbcdfe0e3d0d0c5a0/horae.dashboard-1.0a1.tar.gz" } ] }