June 26, 2007
Hello everyone, and welcome back to our regularly-scheduled Django Status Reports. In the past, members of the development team took time out of their week to post these tidbits and as their schedules have become more hectic with Django itself, their day jobs, a book, and side projects, they've been unable to contribute as much as they'd like. Many people, myself included, felt that these posts added a lot of value to the Django community, so I offered up my services and here we are!
That's enough rambling—I'll get on with our updates for roughly the past 90 days or so:
- Django-fr launched this past week. The site’s creator, David Larlet, posted the announcement to django-users: “The aim of this site is to provide translations of the documentation, useful links and of course to create a local community!” The site is still evolving as more users are becoming aware of it and contributing translations that will go through an approval process. The Django-fr group also coordinates their efforts on their Django-fr mailing list and on #django-fr on irc.freenode.net.
- The announcement of a Web presence for the French Django community has spurred the creation of another such entity for Spanish speaking Django users at Django En Español. That community is still in its very early stages and will be coordinating their community on the django-es mailing list as well as on #django-es on irc.freenode.net.
- Ville Säävuori has dug into Capistrano and created a script for remotely deploying your Django applications. If you’ve only heard of Capistrano in the context of a method to deploy your Rails applications, you might surprised to find out that it’s a much more versitile tool. Ville’s script will log into a remote server, run
svn update, backup and install new database information if you’ve made changes to your models, moves your
settings.pyfile in place, and then reloads Apache. The best part about using Capistrano for these types of tasks is that you can roll back your deployment at any time if anything went wrong, something that’s absolutely necessary when deploying new changes to a production server.
- Adrian Holovaty mentioned the creation of a new unicode branch of Django back in the April 8, 2006 Weekly Update. About a month ago, Malcom Tredinnick announced that the branch was more-or-less feature complete and needed testers. The process of squashing bugs is still ongoing and it looks like the branch is scheduled for merge a couple of weeks after the Oracle branch hits the trunk. Jump on it if you haven’t already and kick the tires if you’re interested in better unicode support in Django.
- In related news, the Oracle branch mentioned above was merged into trunk on June 23, 2006. Oracle support has been on the table almost as long as Django has been a public, open-source project. Indeed, a patch for rudimentary Oracle support by Jason Huggins was one of the first 100 tickets added to Django’s Trac instance nearly two years ago. With the introduction of Magic-Removal, this functionality was broken and subsequently fixed in a new patch. Despite these efforts, bugs lingered and functionality was missing. The Colorado Front Range Pythoneers organized the Boulder Sprint in early November 2006 to push Django’s Oracle support over the edge into a fully functional part of the framework. Out of this sprint came the boulder-oracle-sprint branch which greatly improved Oracle support. Since that sprint, a number of bug fixes have landed concerning tablespaces, return types, and other sundry bits. All of this has culminated with the merge of the boulder-oracle-sprint branch into trunk this past weekend and its inevitable inclusion in the 1.0 milestone release. Congratulations are in order for every person and group mentioned above, especially the Colorado Front Range Pythoneers for jump starting the new branch and seeing it through to completion. Good work everyone!
- In the past month, an individual has added a pretty neat set of tools for integrating your Django application with Amazon’s Simple Storage Service, or S3. Amazon’s S3 is, at its core, a dirt-cheap, highly available, and easy-to-hook-into networked file storage system. REST and SOAP are provided for adding files, while HTTP (default) and BitTorrent are supported as download protocols. The AmazonSimpleStorageService module for Django is implemented as a new type of FileField,
S3FileField. The author has implemented the field in such a way that it presents itself to the user in your application or in the admin interface as a standard file upload field. Additionally, the author comments that the code hasn’t been tested extensively, so you should exercise caution (and contribute bugfixes!) before using it in a production environment.
- Add a new bookmark to the Django metasphere: DjangoSites was launched in the past week or so with the goal of providing an index of Django-powered sites with a touch of “Web 2.0.” At the time of writing, the site is currently tracking 114 websites which can be voted upon, Digg style. You can view the sites by a number of parameters, including “Latest,” “Highest Rated,” and “Most Commented.”
- Towards the end of last month, James Bennett released a bit of code he’d initially developed for his own blog. django-contact-form was abstracted out of his implementation and has been made available for everyone to use. James describes the project as thus:
A base ContactForm class (built with newforms) which handles the simplest case of collecting a name, e-mail address and message, and sending them to your site staff, various indirections and useful hooks in ContactForm to make it easy to add new functionality by subclassing it and overriding only the bits you need to change, an example subclass which uses Akismet to perform a a spam check on the form, and a view which can handle the mechanics of displaying, validating and sending e-mail from ContactForm or a subclass, and which accepts various parameters to control its behavior.James also maintains other useful applications for Django including a user-registration app and a set of template_utils.
- Siddharta Govindaraj, of Silver Stripe Software has made a post about his process of deploying their Django product, Silver Catalyst, on the desktop, specifically Windows and Linux systems. Siddharta uses a combination of the sqlite support in Django, cx_freeze to generate the executable file, and ToofPy for a standalone web server. It’s highly likely that this approach could also produce an executable for OS X desktops by replacing the cx_freeze step with py2app. Another option for OS X systems is the nascent DjangoKit project  which provides its own WebKit view.
- Marty Alchin has created a middleware for Django that provides signed cookies. Marty describes the project’s functions: “Signs outgoing cookies, validates incoming cookies, removes the signature from incoming cookies (so your views get the cookie as it was originally set), invalid cookies are silently stripped from the request, as if they had never existed, utilities to manually generate signed cookie values, for greater control, relies on existing data (such as settings.SECRET_KEY), so required additions to your project are minimal”
- Beyond the major news above, activity in the trunk this week was low. The changeset round up for this status report includes:
-  — A patch committed by Malcolm Tredinnick that speeds up reverse URL matching by caching their results based on a patch by email@example.com. A minor note, this change is potentially backward incompatible, but shouldn’t cause any major issues.
-  — The Django-gis branch, GeoDjango, received several GDAL related improvements.
-  — Stefane Femgier submitted a patch that correctly sets the mime-type for admin media content, and was integrated into the trunk this week.
- Django is in the middle of its Google Summer of Code efforts and there have been a number of announcements of progress on each of the projects currently under way:
- Andreas Stuhlmüller is hard at work implementing a REST interface for your Django applications and has posted three updates on his progress over the past few weeks. Update 2, Update 3, and Update 4. Andreas’ project, along with documentation, timetable, and code can be found at its Google Code page: django-rest-interface.
- Thejaswi Puthraya is tackling the problem of adding constraints to the data in your models such as range- and value-based constraints. Thejaswi has provided documentation for the features he hopes to implement and just this past week has committed his first bits of code as well as a number of screencasts that demonstrate how to install and begin using his project.
- Paul Collier is working on the problem of Object Level Caching, a project whose aim is to take all of the common caching idioms we're aware of and condense them into intelligent QuerySet methods. Paul's contributions and more documentation on this project can be found on its Google code page: django-object-level-caching
- Finally, Jannis Leidel is working to streamline and simplify the process of packaging and distributing your Django applications. Jannis made his first weekly update this past week.
That's it for now, and please be aware that the next one of these should be significantly shorter. If you have any interesting Django-related news, projects, or announcements that you'd like to see here, please send a short note to firstname.lastname@example.org.