{
"info": {
"author": "Mikko Ohtamaa",
"author_email": "mikko.ohtamaa@twinapex.com",
"bugtrack_url": null,
"classifiers": [
"Framework :: Plone",
"Framework :: Plone :: 4.0",
"Framework :: Plone :: 4.1",
"Framework :: Plone :: 4.2",
"Framework :: Plone :: 4.3",
"Framework :: Plone :: 5.0",
"Programming Language :: Python",
"Programming Language :: Python :: 2.6",
"Programming Language :: Python :: 2.7",
"Topic :: Software Development :: Libraries :: Python Modules"
],
"description": "collective.timedevents\n======================\n\nOverview\n--------\n\ncollective.timedevents fires clock based Zope 3 events. They can make\nZope application react to timers. This is useful for creating services\nwhere something must happen regurlarly or after a certain period has\nexpired.\n\nThis is a developer level product. This product is indended to replace\nProducts.TickingMachine with more robust Zope 3 codebase.\n\nThere are two different styles of using it:\n\na) Using the ITickEvent and calculating if action needs to be done in\n the event subscriber. This will also take care of timing over zope\n restarts by keeping event timing persistent.\n\nb) Subscribing to any of the cron-style IIntervalTicks\\*-events, not\n worrying about the timing client side. For the longer ticks (weekly,\n montly) a cron-job as trigger makes most sense, in case of zope\n restarts.\n\nTested by Travis:\n\n.. image:: https://secure.travis-ci.org/collective/collective.timedevents.png?branch=master\n :target: https://travis-ci.org/#!/collective/collective.timedevents\n\n.. contents:: Table of contents\n\nInstallation\n------------\n\n1. Add collective.timedevents to your buildout by adding the egg to your\n buildout.cfg::\n\n eggs =\n ...\n collective.timedevents\n\n2. Trigger\n\nCan either be cron-jobs or zope clock-server.\n\nAdd clock server to tick timedevents subscribers - use your Plone\ninstance name::\n\n [instance]\n ...\n zope-conf-additional =\n \n method /mysite/@@tick\n period 90\n user clockserver-user\n password password\n host localhost\n \n\nOr for the cron-like interval-based events, here 900 seconds for the\n15-minute event::\n\n \n method /mysite/@@tick_fifteen\n period 900\n user clockserver-user\n password password\n host localhost\n \n\nNow you should start to see ticks in the zope event log.\n\nUsage\n-----\n\nSubscribe to the events/ticks you need.\n\nA. Using the ITickEvent method:\n\n 1. Add collective.timedevents.interfaces.ITickEvent subscribers to your\n product ZCML declarations::\n\n \n\n \n\n \n\n 2. Configure your event handler to react after certain period has\n expired::\n\n from zope.app.component.hooks import getSite\n\n def on_tick(event):\n \"\"\" Do something after one hour has elapsed \"\"\"\n interval_in_days = 1.0 / 24.0 # One hour, floating point\n context = site.my_magic_context # Persistent object which stores our timing data\n if event.last_tick > context.last_action + interval_in_days: # Check whether enough time has elaped\n do_stuff()\n context.last_action = event.last_tick # Store when we last time did something\n\nB. Using the IIntervalTicks\\*-events:\n\n Add collective.timedevents.interfaces.IIntervalTicks\\* subscribers to\n your module ZCML declarations::\n\n \n\n \n\n \n\nOther\n-----\n\nAll ticking code is executed under admin privileges.\n\nITickEvent tick period is 300 seconds by default. This can be controlled\nin views.py.\n\nTicks for ITickEvent are logged by events.tick\\_logger defined in\nconfigure.zcml.\n\nQuality assurance\n-----------------\n\nThis product fills the following quality criteria:\n\n- Unit tests provided\n\n- Good documentation provided\n\n- Commented code\n\n- PyPi eggs provided\n\nAuthor\n------\n\n- ``Mikko Ohtamaa ``\\ \\_\n\n- Quintagroup\n\n- Sune Br\u00f8ndum W\u00f8ller\n\n- The orignal concept and code was created by Tomasz Cobata Tomasz J.\n Kotarba tomasz@kotarba.net.\n\n- ``Twinapex Research, Oulu, Finland ``\\ \\_ -\n High quality Python hackers for hire\n\n\n\nChangelog\n=========\n\n1.0.4 (2017-04-07)\n------------------\n\n- Add missing configure.zcml to egg distribution\n [tomgross]\n\n\n1.0.3 (2016-02-01)\n------------------\n\n- One final attempt to include HISTORY.txt into egg\n [tomgross]\n\n\n1.0.2 (2016-02-01)\n------------------\n\n- Fix brown bag release part 2\n [tomgross]\n\n1.0.1 (2016-02-01)\n------------------\n\n- Fix brown bag release\n [tomgross]\n\n\n1.0 (2016-01-30)\n----------------\n\n- Plone 5 compatibility\n [karalics, tomgross]\n\n\n0.3 (2013-12-14)\n----------------\n\n* Travis CI integration\n [hvelarde]\n\n* Added cron-style tick events, to be triggered by cron or clockserver, with no internal calculation of interval. Updated readme and tests.\n [sunew]\n\n0.2.1 (2012-04-24)\n------------------\n\n* Added logging level option for tick_logger\n [vmaksymiv]\n* Bugfix: data storage\n\n0.2\n----------------\n\n* Added Plone 4 compatibility\n [kroman0]\n\n0.1.1 (2008-11-04)\n------------------\n\n* PyPi egg fixes\n\n0.1\n----------------\n\n* Initial release\n\n",
"description_content_type": null,
"docs_url": null,
"download_url": "",
"downloads": {
"last_day": -1,
"last_month": -1,
"last_week": -1
},
"home_page": "http://plone.org/products/collective-timedevents",
"keywords": "plone zope event clock time subscriber date day",
"license": "GPL",
"maintainer": "",
"maintainer_email": "",
"name": "collective.timedevents",
"package_url": "https://pypi.org/project/collective.timedevents/",
"platform": "",
"project_url": "https://pypi.org/project/collective.timedevents/",
"project_urls": {
"Homepage": "http://plone.org/products/collective-timedevents"
},
"release_url": "https://pypi.org/project/collective.timedevents/1.0.4/",
"requires_dist": null,
"requires_python": "",
"summary": "Plone/Zope time based event mechanism",
"version": "1.0.4"
},
"last_serial": 2761006,
"releases": {
"0.1": [
{
"comment_text": "",
"digests": {
"md5": "ced0ccb52158b4ec74d268ca9caff687",
"sha256": "aeb2d37acaf23dfdd42a3e993e169941327d83a6a1fe87004bf947bf64dfc421"
},
"downloads": -1,
"filename": "collective.timedevents-0.1.tar.gz",
"has_sig": false,
"md5_digest": "ced0ccb52158b4ec74d268ca9caff687",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 4454,
"upload_time": "2008-11-03T09:21:40",
"url": "https://files.pythonhosted.org/packages/78/50/f15105f0721b6c6a6d90dcd7a9b8761ec90e1c5a5dcd2a13561a0c802f8d/collective.timedevents-0.1.tar.gz"
}
],
"0.1.1": [
{
"comment_text": "",
"digests": {
"md5": "f9e95c6db6490bbac19e26a028ae5acc",
"sha256": "8a3547ba01125b35f4e8c1be14f9bb0206653b8dbc416a5b21d4bc1982cc57eb"
},
"downloads": -1,
"filename": "collective.timedevents-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "f9e95c6db6490bbac19e26a028ae5acc",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 5902,
"upload_time": "2008-11-04T17:32:19",
"url": "https://files.pythonhosted.org/packages/84/27/9dff4861a8b88d57088b78e9d27ae3c2da5dd75442eb7caea8f98ecc30d4/collective.timedevents-0.1.1.tar.gz"
}
],
"0.2.1": [
{
"comment_text": "",
"digests": {
"md5": "df5d2e58f9d29569b44abe92cd64d741",
"sha256": "a880566b04392758d547b98a9084f95265002693bd19e5e4e43ea87feec5cf3a"
},
"downloads": -1,
"filename": "collective.timedevents-0.2.1.zip",
"has_sig": false,
"md5_digest": "df5d2e58f9d29569b44abe92cd64d741",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 15261,
"upload_time": "2012-04-24T14:26:14",
"url": "https://files.pythonhosted.org/packages/f1/41/9254d460ba6ca07cd8fc66d89fd3b7b08d30536dc2b212a75adbdd84a4f6/collective.timedevents-0.2.1.zip"
}
],
"0.3": [
{
"comment_text": "",
"digests": {
"md5": "8a3c4ca719785b2e435c978314290828",
"sha256": "acfc82ffd50353f0795f4374cf58101d9f5b8e777bae6ed69bb58a224fde7a75"
},
"downloads": -1,
"filename": "collective.timedevents-0.3.zip",
"has_sig": false,
"md5_digest": "8a3c4ca719785b2e435c978314290828",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 22731,
"upload_time": "2013-12-14T19:21:24",
"url": "https://files.pythonhosted.org/packages/f0/14/1066ede60ca990a63f82e427c17c1576cef5b3d8ad633711f4f94153c71a/collective.timedevents-0.3.zip"
}
],
"1.0": [
{
"comment_text": "",
"digests": {
"md5": "7ac298cbea12d2f34c68d7c880d8ec41",
"sha256": "4a99c663046265dde5ea10a8411a5c65c77cde3890e9b6ed0819df1188305f37"
},
"downloads": -1,
"filename": "collective.timedevents-1.0.zip",
"has_sig": false,
"md5_digest": "7ac298cbea12d2f34c68d7c880d8ec41",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17025,
"upload_time": "2016-01-30T11:13:07",
"url": "https://files.pythonhosted.org/packages/77/6d/f51ec88bfc92c61860d70496a06e4fb3244ed15950aa420b3358f5ddaac9/collective.timedevents-1.0.zip"
}
],
"1.0.1": [
{
"comment_text": "",
"digests": {
"md5": "4b4795a0f7d486bac382e674acfd05ee",
"sha256": "36df1e9cbadd2c23ef9e4caf298a2c9abdff4b8b70e15e06fa8c9a26f09b7dc1"
},
"downloads": -1,
"filename": "collective.timedevents-1.0.1.tar.gz",
"has_sig": false,
"md5_digest": "4b4795a0f7d486bac382e674acfd05ee",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8336,
"upload_time": "2016-02-01T12:52:22",
"url": "https://files.pythonhosted.org/packages/0c/7e/87acdf09d7b1760b08fad4c2227320fc0c4063e2196a1a232f8f21ad7223/collective.timedevents-1.0.1.tar.gz"
}
],
"1.0.2": [
{
"comment_text": "",
"digests": {
"md5": "0f292d796e4c90018d0f6be9c9a4b234",
"sha256": "1aaa9ca82f8574a222f99cf284c1f57aeb69d1a6845c32b82e97508f1cc6d425"
},
"downloads": -1,
"filename": "collective.timedevents-1.0.2.zip",
"has_sig": false,
"md5_digest": "0f292d796e4c90018d0f6be9c9a4b234",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 16608,
"upload_time": "2016-02-01T13:00:42",
"url": "https://files.pythonhosted.org/packages/93/1c/a1376420eebb7f16b94673dac31d9aa1fe894cf8e6901b7f5ccff6aadd74/collective.timedevents-1.0.2.zip"
}
],
"1.0.3": [
{
"comment_text": "",
"digests": {
"md5": "31f430c8d667bb5a25d4ae592fc2b8cf",
"sha256": "18a34e4332d3bad43cf88a318db1b85dd4279d919e64a79ed9fd6341e51fd7b6"
},
"downloads": -1,
"filename": "collective.timedevents-1.0.3.tar.gz",
"has_sig": false,
"md5_digest": "31f430c8d667bb5a25d4ae592fc2b8cf",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 8246,
"upload_time": "2016-02-01T13:08:35",
"url": "https://files.pythonhosted.org/packages/5b/1f/f2969176432ac5cb154d67c638646014d37b2cd67b7841600d428af8c703/collective.timedevents-1.0.3.tar.gz"
}
],
"1.0.4": [
{
"comment_text": "",
"digests": {
"md5": "7fd7c0bb3d3eb7270309203c37071550",
"sha256": "0700929eb5ef1379cc09c7c1aa0b99f10da2bf5b1c3ab334e1791a2c4f4f7d7c"
},
"downloads": -1,
"filename": "collective.timedevents-1.0.4.zip",
"has_sig": false,
"md5_digest": "7fd7c0bb3d3eb7270309203c37071550",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17991,
"upload_time": "2017-04-07T20:23:58",
"url": "https://files.pythonhosted.org/packages/42/42/82a6cacfe7e91c28d5377537bb6a01b7fc0f6ff3d25aa3ef4fe09eda7526/collective.timedevents-1.0.4.zip"
}
]
},
"urls": [
{
"comment_text": "",
"digests": {
"md5": "7fd7c0bb3d3eb7270309203c37071550",
"sha256": "0700929eb5ef1379cc09c7c1aa0b99f10da2bf5b1c3ab334e1791a2c4f4f7d7c"
},
"downloads": -1,
"filename": "collective.timedevents-1.0.4.zip",
"has_sig": false,
"md5_digest": "7fd7c0bb3d3eb7270309203c37071550",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 17991,
"upload_time": "2017-04-07T20:23:58",
"url": "https://files.pythonhosted.org/packages/42/42/82a6cacfe7e91c28d5377537bb6a01b7fc0f6ff3d25aa3ef4fe09eda7526/collective.timedevents-1.0.4.zip"
}
]
}