Almost seven months ago, I posted about my plans to move Demokritos over to Django.

Although Django has some support for the Atom Publishing Format (RFC 4287), it's pretty minimal. You can't produce full-content feeds without some hacking and the more advanced features of Atom are not supported. And Django certainly doesn't have support for the Atom Publishing Protocol, which just got approved as an IETF Proposed Standard.

Back at PyCon, I offered to both complete the implementation of the Atom Publishing Format in Django and also implement the Atom Publishing Protocol. I filed ticket #3569 and ticket #3570 to cover these respectively.

Well five months after PyCon, I've finally got off my butt and started working on it.

This afternoon, I started django-atompub at Google Code.

My approach for completing support for RFC 4287 is to first of all build a test model that covers the data model of RFC 4287 feeds and entries. That's pretty much done now and checked in. Now I just need to work on the AtomFeed object that comes with Django and extend it to cover all aspects of that data model. That shouldn't take too much longer.

Then work can begin on the substantial part of the project: support for APP. With Demokritos I've implemented earlier versions of APP before, but the challenge with Django will be trying to maintain loose coupling between the feed and the user's model. Django's existing syndication support takes the nice approach of allowing arbitrary objects to be exposed as feeds and entries. Making that work the other way around (i.e. creating arbitrary objects via APP) will be challenging but, hopefully, very useful.

UPDATE (2007-07-30): The Atom Publishing Format support is almost done. You can check it out at http://code.google.com/p/django-atompub/ and let me know if you have any feedback.