django-atompub


implementation of Atom format and protocol for the Django web framework

django-atompub

This project intends to be a full implementation of the Atom Syndication Format (RFC 4287) and Atom Publishing Protocol for the Django web framework.

The main Django project is tracking this work as ticket #3569 (format) and ticket #3570 (protocol).

Atom Syndication Format (RFC 4287)

The full set of RFC 4287 elements is now supported.

The replacements for django.contrib.syndication.feeds.Feed, django.utils.feedgenerator.SyndicationFeed and django.utils.feedgenerator.Atom1Feed can be found in atom.py.

A test model (albeit incomplete) can be found at testmodels/models.py. The test bridges between the test model and the feed code can be found in testmodel/feeds.py.

NOTE: To generate Atom Feeds, you only need atom.py. All other files are simply used for testing.

See the UserGuide for more information.

Change History

As of r33, there is support for parameterized feeds so things like tag feeds can be supported with a single content provider.

As of r21, there is support for users of Django's existing syndication framework to more easily switch over to using the atom.py module. See LegacyGuide for more information. Note: atom.py is now dependent on Django again. I'll break out the new legacy stuff into its own module soon.

As of r15, atom.py has no dependency on Django itself so can actually be used outside of Django as a general Python library for generating Atom feeds.

As of r13, feeds are validated against various content and co-occurrence constraints, greatly reducing the chance of producing an invalid Atom feed.

As of r11, the source element is supported. This means that the entire data model is now implemented.

As of r9, most of RFC 4287 is implemented. The main thing missing is support for the source element and validation of co-occurrence constraints between elements.

As of r5, enough of RFC 4287 is implemented to support the two examples given in section 1.1 of the spec. There are a few more things that need to be implemented, but they shouldn't take long.

Atom Publishing Protocol (RFC 5023)

An initial pass at an atom feed / entry parser is checked in. I'm now working on the service document, collection feeds and basic protocol operations.

The approach is to start from the specific and only later make it more generic. In other words, I'm building a specific Atom store implementation with all sorts of simplifying assumptions, such as the fact that a collection's path is always /collection/{id}/. Over time, I will make this more generic and django-atompub will be a library rather than an implementation. I'll still keep the specific implementation going though, it will just be called "Demokritos" again and will not be hosted here. Demokritos will be an Atom store that happens to be written on top of Django. django-atompub will be a contributed library for people wanting to add Atom support to their Django sites.

Project Information

Labels:
django python atom