{ "info": { "author": "Groundwire", "author_email": "davidglick@groundwire.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Framework :: Plone", "Framework :: Plone :: 4.0", "Framework :: Plone :: 4.1", "Framework :: Plone :: 4.2", "Framework :: Plone :: 4.3", "Intended Audience :: Developers", "License :: OSI Approved :: GNU General Public License (GPL)", "Programming Language :: Python", "Programming Language :: Python :: 2.6", "Programming Language :: Python :: 2.7", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": ".. contents :: :local:\n\n\nIntroduction\n============\n\nCarousel is a tool for featuring a rotating set of banner images in any section\nof your Plone site. Features:\n\n * Different sets of banners can be used in different sections of the site.\n\n * Banners can link to another page in the site, or an external URL.\n\n * Carousel provides options to customize the appearance of the banner as well\n as the length and type of transition.\n\n * An optional pager provides navigation among the banners.\n\n * Transition effects are implemented using the jQuery javascript library which\n is included with Plone, so they are pretty lightweight.\n\n * Banners do not rotate while the mouse cursor is hovering over the Carousel.\n\n * Banner and pager templates can be registered to customize the appearance of\n the Carousel.\n\n * Carousel implements jQuery events, allowing for integration with custom\n javascripts.\n\n * Carousel images can be lazily loaded, to conserve the user and the server bandwidth\n if the full carousel cycle is not shown\n\n * Carousel images can be made to appear in random order\n\nCompatibility\n=============\n\nCarousel requires Plone 3.0 or greater, mainly because it renders itself in a\nviewlet.\n\n\nInstallation\n============\n\nAdd Products.Carousel to your buildout's list of eggs, and re-run buildout. If\nyou get version conflicts while running buildout, you can use a known good\nversion set to find versions compatible with plone.app.z3cform::\n\n http://good-py.appspot.com/release/plone.app.z3cform/0.5.0-1?plone=4.0.2\n\nStart Zope, go to Site Setup -> Add-on Products in your Plone site and\ninstall the Carousel product.\n\n\nUsing Carousel\n==============\n\nA `detailed guide to using Carousel `_\nis available.\n\n\nDetailed overview and tests\n===========================\n\nConfiguring a Carousel banner folder\n------------------------------------\n\nThe items displayed by Carousel are known as \"Carousel Banners\" and can exist\nwithin a \"Carousel Folder\" in any section of the site. For purposes of\ndemonstration, let's add a Carousel folder to the root of the site.\n\nCarousel folders are a matter of configuration more than content, so they don't\nappear on the Add menu. Instead, there is a 'Carousel' tab. Clicking\nit within a section that doesn't yet have a Carousel folder will result\nin the creation of a new one::\n\n >>> browser.open('http://nohost/plone')\n >>> browser.getLink('Carousel').click()\n >>> browser.url\n 'http://nohost/plone/carousel/@@edit-carousel'\n\nThe new folder should now provide the ICarouselFolder interface::\n\n >>> from Products.Carousel.interfaces import ICarouselFolder\n >>> ICarouselFolder.providedBy(self.portal.carousel)\n True\n\nIf, on the other hand, we're in a folder that already has a Carousel folder,\nthe existing one will be used::\n\n >>> browser.goBack()\n >>> browser.getLink('Carousel').click()\n >>> browser.url\n 'http://nohost/plone/carousel/@@edit-carousel'\n\nAnd if we try to configure Carousel while we're already doing so, nothing\nshould change::\n\n >>> browser.getLink('Carousel').click()\n >>> browser.url\n 'http://nohost/plone/carousel/@@edit-carousel'\n\nAdding a Carousel banner\n------------------------\n\nNow that we're within the Carousel folder, we can add a Carousel banner using\nthe add menu::\n\n >>> browser.getLink('Carousel Banner').click()\n >>> browser.url\n 'http://nohost/plone/carousel/portal_factory/Carousel...Banner/carousel_banner.../edit...'\n\nWe can set various things including a title, target URL, and image::\n\n >>> browser.getControl('Title').value = 'Pirates and Cowboys agree: Ninjas suck'\n >>> browser.getControl('Link URL').value = 'http://www.plone.org'\n >>> browser.getControl(name='image_file')\n \n >>> browser.getControl('Save').click()\n >>> 'Changes saved.' in browser.contents\n True\n\nWe need to publish the new banner.\n >>> browser.getLink('Publish').click()\n\nViewing the banners\n-------------------\n\nNow if we return to the home page, where we initially configured the banners,\nthe banner we just added should be rendered (*before* the tabs)::\n\n >>> browser.open('http://nohost/plone')\n >>> browser.contents\n \n ...Pirates and Cowboys...\n ...class=\"contentViews\"...\n\nAdding banners in other scenarios\n---------------------------------\n\nNon-structural folder: put the carousel in the containing folder::\n\n >>> self.setRoles(['Manager'])\n >>> self.portal.invokeFactory('Folder', 'nonstructural')\n 'nonstructural'\n >>> from zope.interface import alsoProvides\n >>> from Products.CMFPlone.interfaces import INonStructuralFolder\n >>> alsoProvides(self.portal.nonstructural, INonStructuralFolder)\n >>> browser.open('http://nohost/plone/nonstructural')\n >>> browser.getLink('Carousel').click()\n >>> browser.url\n 'http://nohost/plone/carousel/@@edit-carousel'\n\nCollection, not default item: put the carousel in the collection itself::\n\n >>> try:\n ... self.portal.invokeFactory('Topic', 'collection')\n ... self.portal.default_page = 'collection'\n ... except:\n ... self.portal.invokeFactory('Collection', 'collection')\n 'collection'\n >>> browser.open('http://nohost/plone/collection')\n >>> browser.getLink('Carousel').click()\n >>> browser.url\n 'http://nohost/plone/carousel/@@edit-carousel'\n\nCustomizing Carousel\n====================\n\nIt is possible to customize presentation of the Carousel by registering custom\ntemplates for the banner and pager. To simplify the registration of Carousel\ntemplates and their associated menu items, Carousel includes special\nZCML directives. To begin, define the Carousel XML namespace in your product's\nconfigure.zcml::\n\n xmlns:carousel=\"http://namespaces.plone.org/carousel\"\n\nThen load the ZCML for Carousel::\n\n \n\nFinally, register your templates::\n\n \n\n \n\nBoth the banner and pager directives can also accept a layer attribute to\nrestrict the availability of the template to a particular browser layer.\n\nTo make the development of banner and pager templates less repetitive,\nCarousel includes macros in the banner-base and pager-base templates. See\nbanner-default.pt and pager-titles.pt for examples of how to use these macros.\n\n\nCarousel Events\n===============\n\nCarousel triggers jQuery events at key points in its operation, making it\npossible to integrate Carousel with other interactive elements on the page.\nThese events are triggered on the Carousel container element:\n\nafterAnimate\n Triggered immediately before animation begins. It passes as parameters the\n Carousel object, the index of the previous banner and the index of the\n current banner.\n\nbeforeAnimate\n Triggered immediately before animation begins. It passes as parameters the\n Carousel object, the index of the current banner and the index of the\n banner that will be active at the end of the animation.\n\npause\n Triggered when animation is paused, such as when the user mouses over\n the Carousel. It passes as its parameter the Carousel object.\n\nplay\n Triggered when animation begins or resumes. It passes as its parameter the\n Carousel object.\n\nThe Carousel object, which is passed as the first optional parameter to event\nhandlers, is a Javascript object that encapsulates the current state of the\nCarousel. See carousel.js for details of the Carousel object.\n\nTo bind a callback to one of the Carousel events, select the Carousel container\nelement and call the jQuery bind method on it::\n\n (function ($) {\n $('.carousel').bind('afterAnimate',\n function (event, carousel, old_index, new_index) {\n console.log(carousel);\n console.log(old_index);\n console.log(new_index);\n });\n })(jQuery);\n\nTests\n=======\n\nTo run tests see ``.travis.yml``.\n\nMaking a release\n=================\n\nDo with `zest.releaser `_\n\nExample::\n\n # Install zest.releaser in venv and activate that venv\n fullrelease\n\n\nSupport\n=========\n\n- Use stackoverlow.com for usage and development related questions\n\n- File bugs and patches at `Github project `_\n\n\nChange history\n==============\n\n3.0.2 (2017-04-11)\n------------------\n\n- Fixed tests on 4.3 by adding Products.PloneTestCase as test dependency.\n [maurits]\n\n\n3.0.1 (2017-03-07)\n------------------\n\n- Removed tag from interfaces to fix permission error.\n\n- Add width and height to the banner object, since we don't have access to view from\n macros.\n\n- Fixes a few small typos and updated MANIFEST.in\n [jladage]\n\n\n3.0 (2017-03-06)\n----------------\n\n- Added Retina support to the banners. Simply upload images with double sizes.\n So if you set the Carousel to 800x350 pixels you can now upload images with\n a size of 1600x350 pixels. On Retina screens your banners will have much more\n detail.\n\n * Use @@images to generate urls to the scales images with sizes defined in\n the Carousel options. This improves the speed of loading because they are\n cached in the browser forever. It also prevent users from using images\n that are way to big.\n\n * The template now has two scales, one for the regular screens and the\n 2x image for the retina version and defines it in the srcset attribute.\n The javascript simply adds the srcset as well when using lazyloading.\n\n * As of this version support for Plone 3 is dropped.\n\n [jladage]\n\n\n- Added ``z3c.autoinclude``-entrypoint to mark this as a Plone-plugin.\n This avoids the need to explicitly load the zcml-slug.\n [WouterVH]\n\n- Added Brazilian Portuguese translation.\n [lepri]\n\n- Added German translation.\n [pabo3000]\n\n- Updated icon for content type: Carousel Banner. [taito]\n\n- When creating a banners folder, set exclude_from_nav and restrict types via\n ISelectableConstrainTypes adapter, for compatibility with\n plone.app.contenttypes (Dexterity) Folders.\n [danjacka]\n\n\n2.2.1 (2013-03-15)\n------------------\n\n- Fixed error on hover. [kroman0]\n\n\n2.2 (2012-12-12)\n----------------\n\n- Browser view support for showing and hiding carousel viewlet added. [taito]\n\n- Lazily load carousel images [miohtama]\n\n- Don't display ``\"\"`` text on the carousel images as it leads to confusing\n with partially load carousel images [miohtama]\n\n- Added checkbox to enable lazy loading carousel images. [kroman0]\n\n- A checkbox for randomizing the order of shown pictures [miohtama]\n\n- Added Plone 4.3 compatibility [davilima6]\n\n\n2.1 (2011-09-06)\n----------------\n\n- Updated i18n helper script to reflect current translations.\n [yomatters]\n\n- Added Finnish translation.\n [datakurre]\n\n- Allow users with the Site Administrator role to add Carousel banners by default.\n [davisagli]\n\n- Added collective.googleanalytics tracking plugin for tracking banner clicks.\n [yomatters]\n\n- Added Dutch translations.\n [jladage]\n\n\n2.1b3 (2011-01-19)\n------------------\n\n- Changed default banner to use the image URL first and then fall back to the\n uploaded image.\n [yomatters]\n\n- Made Carousel respect folder order of banners.\n [yomatters]\n\n- Fixed animation logic for sliding Carousel.\n [yomatters]\n\n- Made link URL optional.\n [yomatters]\n\n- Added the ability to enter an external image URL instead of\n uploading an image.\n [yomatters]\n\n- Fixed permission bug that affected unpublished Carousel folders.\n [yomatters]\n\n- Fixed Carousel banner lookup so that banner view permissions are respected.\n [yomatters]\n\n- Fixed a bug that affected folders containing an item with the ID 'carousel'\n that was not a Carousel folder.\n [yomatters]\n\n2.1b2 (2010-12-08)\n------------------\n\n- Fixed javascript error on Plone 3.\n [yomatters]\n\n2.1b1 (2010-12-06)\n------------------\n\n- Fixed known good versions set link.\n [yomatters]\n\n- Made instructions for adding and modifying banners more prominent.\n [yomatters]\n\n- Added option for setting the ID of the Carousel.\n [yomatters]\n\n2.0 (2010-11-19)\n----------------\n\n- Split plugin into functions, making it easier to override parts of the\n Carousel behavior.\n [yomatters]\n\n2.0b1 (2010-09-30)\n------------------\n\n- Added slide as a possible transition type.\n [yomatters]\n\n- Refactored javascript as a jQuery plugin that triggers jQuery events on\n transitions.\n [yomatters]\n\n- Added settings to customize the appearance of the banner and pager and the\n length and type of transition.\n [yomatters]\n\n- Added an optional pager for navigation among banners.\n [yomatters]\n\n- Replaced description field on Carousel banners with a rich-text body field.\n [yomatters]\n\n- Remove the browser layer to help with use in Plone 2.5.\n [davisagli]\n\n1.1 (2010-03-26)\n----------------\n\n- In Plone 4, add viewlet to the abovecontent viewlet manager by default, to\n avoid weird styles.\n [davisagli]\n\n- Added Spanish translation.\n [tzicatl]\n\n- Only show published banners in the Carousel, even for users who have\n permission to see others.\n [davisagli]\n\n1.0 (2009-03-31)\n----------------\n\n- Changed behavior of text links to swap banner on mouseover.\n [davisagli]\n\n\n1.0b3 (2009-02-07)\n------------------\n\n- Add 'Carousel Banner' to types not searched.\n [davisagli]\n\n- Locate carousel folder correctly on containers used as default pages\n (e.g. a Topic)\n [davisagli]\n\n- Apply proper security declarations to the getSize and tag methods of the\n banner type so that the view works okay when customized TTW.\n [davisagli]\n\n- Only display the carousel on default view; not any of the other tabs.\n [davisagli]\n\n- Fix viewlet removal on uninstallation.\n [davisagli]\n\n- Fix duplicate entries in quick installer.\n [davisagli]\n\n\n1.0b2 (2009-02-04)\n------------------\n\n- Declare dependency of our custom GS import step on the viewlets step.\n [davisagli]\n\n- Separate the (globally-registered) template from the (locally-registered)\n viewlet, so that the former can be customized using\n portal_view_customizations.\n [davisagli]\n\n- Added banner description to the template. Changed the 'carousel-title'\n class to 'carousel-button' so I could split out 'carousel-title' and\n 'carousel-description'.\n [davisagli]\n\n- Handle non-structural folders correctly.\n [davisagli]\n\n\n1.0b1 (2009-02-03)\n------------------\n\n- Initial release.\n [davisagli]\n\nContributors\n============\n\n* David Glick [davisagli], Groundwire, Author\n* Matt Yoder [yomatters], Groundwire\n* Noe Nieto [tzicatl], NNieto CS, Spanish translations\n* Taito Horiuchi [taito]\n* Mikko Ohtamaa [miohtama]\n* Roman Kozlovskyi [kroman0]\n* Gustavo Lepri [lepri], Brazilian Portuguese translation\n* Jean-Paul Ladage [jladage], Zest Software\n* Maurits van Rees [maurits], Zest Software", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/collective/Products.Carousel", "keywords": "plone carousel slideshow banners rotating features", "license": "GPL", "maintainer": "", "maintainer_email": "", "name": "Products.Carousel", "package_url": "https://pypi.org/project/Products.Carousel/", "platform": "", "project_url": "https://pypi.org/project/Products.Carousel/", "project_urls": { "Homepage": "https://github.com/collective/Products.Carousel" }, "release_url": "https://pypi.org/project/Products.Carousel/3.0.2/", "requires_dist": null, "requires_python": "", "summary": "Carousel allows you to add user-configurable rotating banners to any section of a Plone site.", "version": "3.0.2" }, "last_serial": 2783993, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "3e357c9dfc7eece1db9e5a61fb751537", "sha256": "ec9ffb44637048fc87cec564487b108d907503f57f0a15314219627051c9f182" }, "downloads": -1, "filename": "Products.Carousel-1.0.tar.gz", "has_sig": false, "md5_digest": "3e357c9dfc7eece1db9e5a61fb751537", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21514, "upload_time": "2009-03-31T20:46:01", "url": "https://files.pythonhosted.org/packages/cc/61/4f9258e9de170b22c3c2948a44a990bc2ab68dc782225d9156c3ecb37813/Products.Carousel-1.0.tar.gz" } ], "1.0b1": [ { "comment_text": "", "digests": { "md5": "8869c68511b0346c3695ec4e4be53b04", "sha256": "c1a771d11c5850ece0e179f818c511ae312e64fa036b6d0ed98fa053a6488ec4" }, "downloads": -1, "filename": "Products.Carousel-1.0b1.tar.gz", "has_sig": false, "md5_digest": "8869c68511b0346c3695ec4e4be53b04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19417, "upload_time": "2009-02-04T00:03:37", "url": "https://files.pythonhosted.org/packages/d4/52/8c5bcf21431e8429c00ac252e48ea8efcd38d9b04ced55e60ece67ea4be4/Products.Carousel-1.0b1.tar.gz" } ], "1.0b2": [ { "comment_text": "", "digests": { "md5": "a9d466b6894377b79ddd2e270e836399", "sha256": "d0731d2f9a64255cb49ce1ed389d41295603af4d5fcb3187116c2d2a8d3a595a" }, "downloads": -1, "filename": "Products.Carousel-1.0b2.tar.gz", "has_sig": false, "md5_digest": "a9d466b6894377b79ddd2e270e836399", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20176, "upload_time": "2009-02-04T19:36:19", "url": "https://files.pythonhosted.org/packages/93/56/f26b0ea65c34fe388299a9edf638d542893d3337c552214ee36dab66e1bd/Products.Carousel-1.0b2.tar.gz" } ], "1.0b3": [ { "comment_text": "", "digests": { "md5": "d91cfcd13856d22e29255dce058bd46f", "sha256": "79075388a5fde56e2bc450b930a754c575e9e471b87b6b4b782f3b913462b3c0" }, "downloads": -1, "filename": "Products.Carousel-1.0b3.tar.gz", "has_sig": false, "md5_digest": "d91cfcd13856d22e29255dce058bd46f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21431, "upload_time": "2009-02-07T19:17:15", "url": "https://files.pythonhosted.org/packages/ec/da/c378980a0a11da05c13b9c0ddcb701f4bcca3cbbf030cbee2aabee941b78/Products.Carousel-1.0b3.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "b1774870ce560994e9274be94d265c29", "sha256": "f400ac72a1e8a6df446925fdd3f930be5bee093e76b4f4bcaa212ea4bf88868e" }, "downloads": -1, "filename": "Products.Carousel-1.1.zip", "has_sig": true, "md5_digest": "b1774870ce560994e9274be94d265c29", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42427, "upload_time": "2010-03-26T20:50:05", "url": "https://files.pythonhosted.org/packages/9a/54/7f3f2d6da950d5a8109ad20bb3f706490224984d5b20a3b616d9ea43fcb1/Products.Carousel-1.1.zip" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "31cdb80f1f241f378b7510f0171352e5", "sha256": "4b2e9f427763ea5d296570d9f9a78606b702f812af64b00171592906339c8af5" }, "downloads": -1, "filename": "Products.Carousel-2.0.zip", "has_sig": false, "md5_digest": "31cdb80f1f241f378b7510f0171352e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61409, "upload_time": "2010-11-19T17:58:48", "url": "https://files.pythonhosted.org/packages/35/80/f30b45d1acce1a21f24e0082779aa239a440408c84b4420ffbe35eb29ea4/Products.Carousel-2.0.zip" } ], "2.0b1": [ { "comment_text": "", "digests": { "md5": "e2a0b7dabd3f91f6ead0a88d9e5fe150", "sha256": "db0e451d0f696b09023c93ffbe9f7be3350ab660735466e7c24bb0a04cf4954e" }, "downloads": -1, "filename": "Products.Carousel-2.0b1.zip", "has_sig": false, "md5_digest": "e2a0b7dabd3f91f6ead0a88d9e5fe150", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61501, "upload_time": "2010-09-30T19:13:29", "url": "https://files.pythonhosted.org/packages/61/2b/110772f9c441feba34a492c5002e8403cf0096023acb531bc3c869f63cd2/Products.Carousel-2.0b1.zip" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "c2a07925ae8edf5ca46d1717d0ccf52d", "sha256": "1933418c2953d9c0a207b8d71d7043c014999b36947b27918797ba668b690d64" }, "downloads": -1, "filename": "Products.Carousel-2.1.zip", "has_sig": false, "md5_digest": "c2a07925ae8edf5ca46d1717d0ccf52d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 75765, "upload_time": "2011-09-06T17:03:35", "url": "https://files.pythonhosted.org/packages/6c/0d/16857a90238a5be1093b957aec1adb55ec2b65136c189652111a421b72b7/Products.Carousel-2.1.zip" } ], "2.1b1": [ { "comment_text": "", "digests": { "md5": "cd073ce16c9a1b5917471340e5616ac2", "sha256": "05d56bc8c136b8b7338d90e5e863cfb882c026faffe91b6225c6d2cf57f3f38a" }, "downloads": -1, "filename": "Products.Carousel-2.1b1.zip", "has_sig": false, "md5_digest": "cd073ce16c9a1b5917471340e5616ac2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63407, "upload_time": "2010-12-06T22:44:56", "url": "https://files.pythonhosted.org/packages/cc/24/1478edc53d0fd09232718bbb82033c30271b5790f962a9178018967f814f/Products.Carousel-2.1b1.zip" } ], "2.1b2": [ { "comment_text": "", "digests": { "md5": "b17de62549298ca11bc753710e9a63dc", "sha256": "aac7f1fd3f9d281e8e300922e88f0618593487569d728bed086dd48789bd6218" }, "downloads": -1, "filename": "Products.Carousel-2.1b2.zip", "has_sig": false, "md5_digest": "b17de62549298ca11bc753710e9a63dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 63477, "upload_time": "2010-12-08T17:50:25", "url": "https://files.pythonhosted.org/packages/1e/3e/885cf71a82d2baa4ec97ad698d4de050c0e2548bfb0c172009f1b30b5dbb/Products.Carousel-2.1b2.zip" } ], "2.1b3": [ { "comment_text": "", "digests": { "md5": "eaec19afe55bc0c0d53f5631582b657e", "sha256": "967addf471dce718b4226448c26fcaefa2897c57ab277c8cc54f46e94d1b01cf" }, "downloads": -1, "filename": "Products.Carousel-2.1b3.zip", "has_sig": false, "md5_digest": "eaec19afe55bc0c0d53f5631582b657e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 64550, "upload_time": "2011-01-19T16:41:00", "url": "https://files.pythonhosted.org/packages/36/82/3b01b6229b863fde96183b8ebc182af32c7447c7c22f131a5ab5b37bd840/Products.Carousel-2.1b3.zip" } ], "2.2": [ { "comment_text": "", "digests": { "md5": "ad99f2a7481f4a7011719087ede25f98", "sha256": "48e03c7a2e99a11cc9355045e5400e7a2661caad2f786470d6570539c0810e0d" }, "downloads": -1, "filename": "Products.Carousel-2.2.zip", "has_sig": false, "md5_digest": "ad99f2a7481f4a7011719087ede25f98", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 84618, "upload_time": "2012-12-12T03:33:39", "url": "https://files.pythonhosted.org/packages/e4/a2/edcf4a77073c7175f7efb08263d889bbfca9cf61860a781ce9c24953141b/Products.Carousel-2.2.zip" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "430975b265bf17cb28d4db5aa72a4d27", "sha256": "e917398a2dbff07f1a49454854d934597cea6e7a2bd7bd6c523604a959be9918" }, "downloads": -1, "filename": "Products.Carousel-2.2.1.zip", "has_sig": false, "md5_digest": "430975b265bf17cb28d4db5aa72a4d27", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89135, "upload_time": "2013-03-15T12:35:36", "url": "https://files.pythonhosted.org/packages/6e/85/4944d7a443fb3d6413769583aad841fee12ad7282ec0e512344e2c972d76/Products.Carousel-2.2.1.zip" } ], "3.0": [ { "comment_text": "", "digests": { "md5": "ceacf70603d27aaf8aa769d3f2f36b82", "sha256": "9b8068949b0594a98a100b9235694227fbc17acb9ea51bb8f6247d91144dec4e" }, "downloads": -1, "filename": "Products.Carousel-3.0.tar.gz", "has_sig": false, "md5_digest": "ceacf70603d27aaf8aa769d3f2f36b82", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35675, "upload_time": "2017-04-11T15:02:51", "url": "https://files.pythonhosted.org/packages/3d/ca/92c93fd0f92b5405aae6daf6e1bfe56c3a133fc897d9e5c94b44a3e28cfa/Products.Carousel-3.0.tar.gz" } ], "3.0.1": [ { "comment_text": "", "digests": { "md5": "1c1460b00466733414affe2801222619", "sha256": "ef652c7c931c40bcbaed70fed62e2153adaad3a8b851d84c44cdfe74a58feb85" }, "downloads": -1, "filename": "Products.Carousel-3.0.1.tar.gz", "has_sig": false, "md5_digest": "1c1460b00466733414affe2801222619", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60034, "upload_time": "2017-04-11T15:03:34", "url": "https://files.pythonhosted.org/packages/26/42/bd3909f3b4d3fb5a3ffc0cd955a77768e9681e1417c0cc92d62a3fcdf6d2/Products.Carousel-3.0.1.tar.gz" } ], "3.0.2": [ { "comment_text": "", "digests": { "md5": "87fe13692ac1cb466e8be429b75988ba", "sha256": "5011da5ea987da2f9787078c670988fe937128d705ce933d75b50a2646928de7" }, "downloads": -1, "filename": "Products.Carousel-3.0.2.tar.gz", "has_sig": false, "md5_digest": "87fe13692ac1cb466e8be429b75988ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60375, "upload_time": "2017-04-11T15:05:35", "url": "https://files.pythonhosted.org/packages/f6/c3/3840f6f41672bb2eb22cd02b06c6e3c2ce637a6d705c0e7a67bd17df69b0/Products.Carousel-3.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "87fe13692ac1cb466e8be429b75988ba", "sha256": "5011da5ea987da2f9787078c670988fe937128d705ce933d75b50a2646928de7" }, "downloads": -1, "filename": "Products.Carousel-3.0.2.tar.gz", "has_sig": false, "md5_digest": "87fe13692ac1cb466e8be429b75988ba", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60375, "upload_time": "2017-04-11T15:05:35", "url": "https://files.pythonhosted.org/packages/f6/c3/3840f6f41672bb2eb22cd02b06c6e3c2ce637a6d705c0e7a67bd17df69b0/Products.Carousel-3.0.2.tar.gz" } ] }