Skip to main content
2025 Python Packaging Survey is now live!  Take the survey now

TurboGears controller and widgets for feed handling.

Project description

Turbofeeds is a TurboGears 1 extension which provides support for generating RSS and Atom feeds and matching display widgets.

TurboFeeds was formerly the feed sub-package of the main TurboGears distribution. It was extracted from the TG core to ease updating, enhancing, and maintaining both projects.

TurboFeeds is mostly backwards-compatible with the turbogears.feed package, but has lots of fixes and a few new features, most importantly support for Genshi templates. It works with both the TurboGears 1.0 and the 1.1 branch.

Installation

To install TurboFeeds from the Cheeseshop use easy_install:

[sudo] easy_install TurboFeeds

This requires the setuptools package to be installed. If you have not done so already, download the ez_setup.py script and run it to install setuptools.

If you want to get the latest development version, you can check out the trunk from the Subversion repository with:

svn co http://svn.turbogears.org/projects/TurboFeeds/trunk TurboFeeds

For bug reports and feature requests, please go to the TurboGears trac at http://trac.turbogears.org/.

To open a ticket, you’ll need a trac account. Please select “TurboFeeds” as the ticket component.

Usage

Controller:

from turbogears import controllers, expose
from turbofeeds import FeedController, FeedHeadLinks, FeedLinks

class MyFeedController(FeedController):
    def get_feed_data(self, **kwargs):
        entries = []
        # Fill ``entries`` with dicts containing at least items for:
        #
        #   title, link, summary and published
        #
        # For example, supposing ``entry`` is a database object
        # representing a blog article:
        entries.append(dict(
            title = entry.title,
            author = dict(name = entry.author.display_name,
                email = entry.author.email_address),
            summary = entry.post[:30],
            published = entry.published,
            updated = entry.updated or entry.published,
            link = 'http://blog.foo.org/article/%s' % entry.id
        ))
        return dict(entries=entries)

class Root(controllers.RootController):
    feed = MyFeedController(
        base_url = '/feed',
        title = "my fine blog",
        link = "http://blog.foo.org",
        author = dict(name="John Doe", email="john@foo.org"),
        id = "http://blog.foo.org",
        subtitle = "a blog about turbogears"
    )
    feedlheadinks = FeedHeadLinks(controller=feed)
    feedlinks = FeedLinks(controller=feed,
        title = "Click link to access the feed in %(type)s format")

    @expose('.templates.mypage')
    def mypage(self):
        return dict(
            feedheadlinks=self.feedheadlinks,
            feedlinks=self.feedlinks)

Template:

<head>
  ${feadheadlinks()}
  ...
</head>
<body>
  <h2>Feed links</h2>
  ${feedlinks('%(type)s feed', url_params=dict(format='full'))}
  ...
</body>

Documentation

The TurboFeeds source is thoroughly documented with doc strings. The source distribution comes with epydoc-generated API documentation included.

You can also refer to the documentation for the original turbogears.feed package on the TurboGears documentation wiki:

http://docs.turbogears.org/1.0/FeedController

All information on this page is also still valid for TurboFeeds, you just have to replace:

from turbogears.feed import FeedController

with:

from turbofeeds import FeedController

Credits

  • The turbogears.feed package was first introduced in TurboGears version 0.9a1 and was added by Elvelind Grandin.

  • Christopher Arndt turned it into the TurboGears extension TurboFeeds.

  • Other contributors include:

    Florent Aide, Simon Belak, Kevin Dangoor, Charles Duffy, Alberto Valverde, Jorge Vargas

    Please notify the maintainer, if you think your name should belong here too.

  • The feed icons used by the CSS for the FeedLinks widget where taken from http://www.feedicons.com/.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page