{ "info": { "author": "Wichert Akkerman - Jarn", "author_email": "wichert@jarn.com", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Framework :: Zope2", "Programming Language :: Python", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "Introduction\n============\n\ncollective.portlet.feedmixer is a portlet for `Plone 3`_ which can show one\nor multiple content feeds.\n\nFeedmixer uses feedparser_ to process feeds which allows it to support RSS\n0.90, Netscape RSS 0.91, Userland RSS 0.91, RSS 0.92, RSS 0.93, RSS 0.94,\nRSS 1.0, RSS 2.0, Atom 0.3, Atom 1.0, and CDF feeds\n\n.. _Plone 3: http://plone.org/\n.. _feedparser: http://www.feedparser.org/\n\n\nInstalling\n==========\n\nThis package requires Plone 3.0 or later and feedparser.\n\nInstalling without buildout\n---------------------------\n\nFirst install feedparser. You can install this in either the system\npython path or in the lib/python directory of your Zope instance. If you\nhave setuptools installed you can do this using easy_install::\n\n easy_install FeedParser\n\nIf you do not have setuptools you can install it manually using the setup.py\nscript in the feedparser source. If you want to install feedparser inside\nyour Zope instance instead of system wide you can its ''--prefix='' option\nto install in the ''lib/python'' directory of your Zope instance.\n\nNext you need to install this package. This can also be done by installing\nit in either your system path packages or in the lib/python directory of\nyour Zope instance. As with feedparser you can do this using either\neasy_install or via the setup.py script.\n\nAfter installing the package it needs to be registered in your Zope\ninstance. This can be done by putting a\ncollective.portlet.feedmixer-configure.zcml file in the etc/pakage-includes\ndirectory with this content::\n\n \n\nor, alternatively, you can add that line to the configure.zcml in a\npackage or Product that is already registered.\n\nInstalling with buildout\n------------------------\n\nIf you are using `buildout`_ to manage your instance installing\ncollective.portlet.feedmixer is even simpler. You can install it by adding\nit to the eggs line for your instance::\n\n [instance]\n eggs = collective.portlet.feedmixer\n zcml = collective.portlet.feedmixer\n\nThe last line tells buildout to generate a zcml snippet that tells Zope\nto configure collective.portlet.feedmixer.\n\nIf another package depends on the feedmixer egg or includes its zcml\ndirectly you do not need to specify anything in the buildout configuration:\nbuildout will detect this automatically.\n\nAfter updating the configuration you need to run the ''bin/buildout'', which\nwill take care of updating your system.\n\n.. _buildout: http://pypi.python.org/pypi/zc.buildout\n\n\nUsing the portlet\n=================\n\nIn order to use the feedmixer portlet you will first need to install the\nfeedmixer product in your site. This is done through the standard ''Add-on\nproducts'' control panel in the Plone site setup. After this has been done\na new ''Feed Mixer' portlet type will be available.\n\nFeedmixer portlets have several configurable options:\n\nPortlet Title\n This will be used as the title of the portlet.\n\nMaximum time to cache feed data\n This determins how long feeds can be cached before feedmixer will attempt\n to refresh the feed data. In order to reduce the load on other servers\n it is advisable to set this to a reasonably large value.\n\nNumber of items to display\n How many items to show in the portlet.\n\nURL(s) for all feeds\n A list of URLs for all feeds. All standard RSS and Atom feeds are\n supported as well as CDF feeds.\n\n\nPerformance\n===========\n\nThe portlet tries to be very friendly and will only reload a feed if required.\nIt does this in several different ways.\n\nAll feeds are stored in a shared cache as defined in `plone.memoize`_. This\ndefaults to being a Zope RAMCache but you can choose different caches by\nregistering a different ''ICacheChooser'' utility. The cache key used\nis ''collective.portlet.feedmixer.FeedCache''. For example for deployments with\nmultiple Zope instances you can use a memcached_ based cache which will\nallow you to share downloaded feeds amongst all Zope instances.\n\nIf a feed entry has expired in the cache it needs to be reloaded. However\nthe feedmixer portlet will try to use both `ETAGs` and HTTP Last-Modified\nheaders to check if the feed has been updated since the last time it was\ndownloaded. If it has not been updated the timeout for the cached feed will\nbe updated and continue to be used.\n\n.. _plone.memoize: http://pypi.python.org/pypi/plone.memoize\n.. _ETAGs: http://en.wikipedia.org/wiki/HTTP_ETag\n.. _memcached: http://www.danga.com/memcached/\n\n\nCopyright and credits\n=====================\n\ncollective.portlet.feedmixer is copyright 2007 by `Jarn`_ (formerly known\nas Plone Solutions).\n\nIt was written by Wichert Akkerman.\n\n.. _Jarn: http://www.jarn.com/\n\n\nChangelog\n=========\n\n1.6 - 2011-09-13\n----------------\n\n* Make it plone 4 compatible, thanks to Rafahela Garcia Bazzanella for fix [martior]\n\n* Added Portuguese Brazilian transaltions from Rafahela Garcia Bazzanella [martior]\n\n* Direct import of IVocabularyFactory for Plone 4.1 compatibility. [lewy]\n\n* Fix bad cache key on entries(). Previously, the repr of a generator object\n was used. This meant effectively no request caching. Worse, it caused intermittent\n cache-key overlap with more than one portlet rendered in the same request. \n [tmog]\n\n1.5 - 2011-03-02\n----------------\n\n* Wrap the full feed's entries in a div so we can visually separate them.\n [jbaldivieso]\n\n* Fix the full feed's lookup of the feed entries so that the caching decorator\n can acquire the request from the view as it expects.\n [davisagli]\n\n* Explicitly include plone.app.portlets' ZCML to ensure the plone.portlet\n directive works in all cases.\n [hannosch]\n\n* Added Spanish translation\n [macagua]\n\n1.4 - 2009-11-06\n----------------\n\n* Removed edit permission as this prevents feedmixer portlet being added to a\n user's dashboard.\n [matth]\n\n1.3 - 2009-04-03\n----------------\n\n* Fix the full_feed view to have fallback when getting description from an feed\n item as it is not a required field in the rss2 standard.\n [martior]\n\n1.2 - 2008-07-10\n----------------\n\n* Fix the \"More ...\" link of the portlet. We have to store the path to the\n context of the portlet assignment, because plone[.app].portlets doesn't\n expose it. This workaround was taken from ely.portlets.image.\n This will only work for newly created feedmixer portlets, existing ones\n will still create wrong urls in subfolders.\n [fschulze]\n\n* Added french translation and made some i18n fixes.\n [glenfant]\n\n1.1 - 2007-11-28\n----------------\n\n* Correct caching of mixed feed entries: caching per instance instead of\n per request meant we would never update our feed as long as the ZODB\n did not expire the assignment. Instead to cache per request and using the\n list of feed_urls of the assignment. \n [wichert]\n\n* Fix typo in the portletBottomLeft CSS class name.\n [daftdog]\n\n1.0 - 2007-11-05\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://plone.org", "keywords": "plone rss atom feed portlet", "license": "GPL", "maintainer": null, "maintainer_email": null, "name": "collective.portlet.feedmixer", "package_url": "https://pypi.org/project/collective.portlet.feedmixer/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/collective.portlet.feedmixer/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://plone.org" }, "release_url": "https://pypi.org/project/collective.portlet.feedmixer/1.6/", "requires_dist": null, "requires_python": null, "summary": "Portlet which can show multiple feeds", "version": "1.6" }, "last_serial": 636607, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "c3c4df02e24f9ad87353dd1ef1f3f8c8", "sha256": "5c19600d697ba43c0abe888900615de7d846789cc99afb2dc2431c3e15fa3763" }, "downloads": -1, "filename": "collective.portlet.feedmixer-1.0-py2.4.egg", "has_sig": false, "md5_digest": "c3c4df02e24f9ad87353dd1ef1f3f8c8", "packagetype": "bdist_egg", "python_version": "2.4", "requires_python": null, "size": 27864, "upload_time": "2007-11-05T14:10:28", "url": "https://files.pythonhosted.org/packages/78/3c/e119e4f9d9ffe2b982fd066cbed9074065c31262ae470928318a895bd83c/collective.portlet.feedmixer-1.0-py2.4.egg" }, { "comment_text": "", "digests": { "md5": "fabcdea0d500bfbc18db6006618b03d6", "sha256": "508e7479caf903df5ea70b109ab8df276446d5622d70238d8802cac870d61b68" }, "downloads": -1, "filename": "collective.portlet.feedmixer-1.0.tar.gz", "has_sig": false, "md5_digest": "fabcdea0d500bfbc18db6006618b03d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17061, "upload_time": "2007-11-05T14:10:27", "url": "https://files.pythonhosted.org/packages/69/8d/d154a0a7f90c8b7221edd98e155f06f4a7b73f0fa51f6dc5481b6bc4c099/collective.portlet.feedmixer-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "50962613466baa9ab24923c963f34c57", "sha256": "589ff36488d6f9e016d3cc684b1e1f83db86c272acf7929c22d546c4ba169d5b" }, "downloads": -1, "filename": "collective.portlet.feedmixer-1.1.tar.gz", "has_sig": false, "md5_digest": "50962613466baa9ab24923c963f34c57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16680, "upload_time": "2007-11-28T09:18:20", "url": "https://files.pythonhosted.org/packages/3f/84/595680cd7b72c500532055d57594caa292d4c3937795d4a5d56836ff1e27/collective.portlet.feedmixer-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "171f2acbcb7389e3a266ef333cd46c58", "sha256": "db8f11dd965b62a55c11d756b45893415b7843d9ba47b8f462849a39c1d7430c" }, "downloads": -1, "filename": "collective.portlet.feedmixer-1.2.tar.gz", "has_sig": false, "md5_digest": "171f2acbcb7389e3a266ef333cd46c58", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20712, "upload_time": "2008-07-10T10:20:47", "url": "https://files.pythonhosted.org/packages/b0/1b/abb29ac1585b4d1b44fd9a973a6df8044c4fe8540e2949a48a1a1b2d894e/collective.portlet.feedmixer-1.2.tar.gz" } ], "1.2dev-r68204": [ { "comment_text": "", "digests": { "md5": "83b3fa7a1dee97093e7bd974eed4dc93", "sha256": "dc23dd9265608a6673f6aad0695c462aa7ecd53100624d13607d0229b4f4efa3" }, "downloads": -1, "filename": "collective.portlet.feedmixer-1.2dev-r68204.tar.gz", "has_sig": false, "md5_digest": "83b3fa7a1dee97093e7bd974eed4dc93", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20834, "upload_time": "2008-07-10T10:19:40", "url": "https://files.pythonhosted.org/packages/93/b1/36b4edcf2c42f2a470647c231e366120be45620f0be1e3b5b11ea1f33a41/collective.portlet.feedmixer-1.2dev-r68204.tar.gz" } ], "1.3": [ { "comment_text": "", "digests": { "md5": "9c29c0e093e8cbc99bff9cce0e24df3b", "sha256": "67ccc449db45b4cd859408fc98adcd97e445aff6ff6dd67cee374491f87b7b07" }, "downloads": -1, "filename": "collective.portlet.feedmixer-1.3.tar.gz", "has_sig": false, "md5_digest": "9c29c0e093e8cbc99bff9cce0e24df3b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18969, "upload_time": "2009-04-03T14:05:29", "url": "https://files.pythonhosted.org/packages/84/fe/692cc45b70bfccac70c87a20b4e6e8971d8ade287f439c0f3f0b754cf3c4/collective.portlet.feedmixer-1.3.tar.gz" } ], "1.4": [ { "comment_text": "", "digests": { "md5": "a1a5e3777975fabbe046ef8ca5157b04", "sha256": "f7bfd0c700d8b9cc028de2f0caf4ffce2abc079664a406739b163cbe5dd84b94" }, "downloads": -1, "filename": "collective.portlet.feedmixer-1.4.tar.gz", "has_sig": false, "md5_digest": "a1a5e3777975fabbe046ef8ca5157b04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 20106, "upload_time": "2009-11-05T12:35:31", "url": "https://files.pythonhosted.org/packages/b9/08/9d225584e73f3b5109dcbd921628d8e04da4c1f0997a8d6207bc2aab6120/collective.portlet.feedmixer-1.4.tar.gz" } ], "1.5": [ { "comment_text": "", "digests": { "md5": "1e8d15a97733bcfce46e1188a0b90ed4", "sha256": "75b64e089de80a19f8cd8eab28de2d5905fd6a275c3700cac54610234337ab23" }, "downloads": -1, "filename": "collective.portlet.feedmixer-1.5.zip", "has_sig": false, "md5_digest": "1e8d15a97733bcfce46e1188a0b90ed4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39543, "upload_time": "2011-03-02T19:15:45", "url": "https://files.pythonhosted.org/packages/f6/de/849791ae3a896d652c68d40112ad85eb7408d7d15b1bba958b752f50b200/collective.portlet.feedmixer-1.5.zip" } ], "1.6": [ { "comment_text": "", "digests": { "md5": "bf53a91b59906058083afb71e3ea466e", "sha256": "fcf1eea800e0837292ab37275cf920b31578e17e6cb1536e8d33b210274306a7" }, "downloads": -1, "filename": "collective.portlet.feedmixer-1.6.zip", "has_sig": false, "md5_digest": "bf53a91b59906058083afb71e3ea466e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42798, "upload_time": "2011-09-13T09:59:03", "url": "https://files.pythonhosted.org/packages/33/24/0e66e550f53b188c89e0c7056b090a45752d710fb956336eb7c59181e310/collective.portlet.feedmixer-1.6.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bf53a91b59906058083afb71e3ea466e", "sha256": "fcf1eea800e0837292ab37275cf920b31578e17e6cb1536e8d33b210274306a7" }, "downloads": -1, "filename": "collective.portlet.feedmixer-1.6.zip", "has_sig": false, "md5_digest": "bf53a91b59906058083afb71e3ea466e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42798, "upload_time": "2011-09-13T09:59:03", "url": "https://files.pythonhosted.org/packages/33/24/0e66e550f53b188c89e0c7056b090a45752d710fb956336eb7c59181e310/collective.portlet.feedmixer-1.6.zip" } ] }