Back when I first launched this site (about a year ago now), I mentioned that I’d someday release the blog application I’d written to power it. So far I’ve been held up by two large problems:
- The application itself was written using an SVN checkout of Django from April of last year, back when the codebase that became the Django 0.95 release was still known as “the magic-removal branch”.
- Some features (notably, a couple things I’ve done with comments) relied on hacking the source of Django itself.
So I’ve been on a mission to clean up the code and get it to a point where I wouldn’t be embarrassed to release it; along the way I’ve been purging features that I don’t actually use, and adding new ones based on features added to Django and useful third-party applications released by the community.
These days, there are two major things holding me up:
- I have very little free time, and I don’t always spend that time in front of a computer.
- Whenever I write some new feature for the blog application, I end up thinking, “hey, I could make this a bit more generic and spin it off into its own application”.
Today marks the initial release of another little application that got spun off from the blog software: a generic contact-form system that started out simple and then grew a bit (“a bit” — I’m being somewhat facetious here) as I worked to make it more reusable outside of the blog context it was originally designed for.
Full documentation is online and included in the downloadable package, but here’s the short and sweet overview:
ContactFormclass (built with
newforms) which handles the simplest case of collecting a name, email address and message, and sending them to your site staff.
Various indirections and useful hooks in
ContactFormto make it easy to add new functionality by subclassing it and overriding only the bits you need to change (credit for the good parts of its API go to Jacob, credit for any bad parts probably go to me).
- An example subclass which uses Akismet to performa a spam check on the form (I’ve got an old site which had a contact form and no spam protection; I still get a couple dozen spam submissions from it each month).
A view which can handle the mechanics of displaying, validating and sending email from
ContactFormor a subclass, and which accepts various parameters to control its behavior.
This one’s definitely still “under development”, and there are probably bugs in it, but I wanted to get it out in the wild to help shake them out; bug reports are welcome (please use the Google Code issue tracker rather than posting bug reports in comments here).
In the meantime, I’ve also been hacking a bit on two other applications: the user-registration app now has a
distutils-enabled package you can download, as well as full documentation, and I’m working on adding a few more features to it (be wary of doing an SVN checkout — there be dragons in the code right now), and template_utils has gone through a few bugfixes and enhancements and is now officially on its third release.
I’ve also got one more app planned before I can go back to finishing up blogging once and for all, but I’ve already got most of it fleshed out; I’ve also recently come into possession of a shiny new Joyent Accelerator, and in honor of that I’ll migrate this site over to it as soon as the new codebase (and a minor redesign) are done.
Once that’s all out the door, I’ve got a couple ideas for my next personal project, and so far none of them involve spinning off a bunch of different applications first, so hopefully they’ll take a little less time. The snippets site is also due for some love, I think, so I’ll be going through the issue tracker, looking for bugs and feature requests to deal with. If you’ve got ideas, be sure to submit them :)
One more thing…
While I’m on the subject of useful third-party apps, I should mention that World Online’s own Christian Metts, a gentleman, scholar, designer and no slouch when it comes to writing nifty code, has released typogrify, a set of incredibly handy template filters for those of us who like to have our typography be as beautiful as our code. You should check it out :)