Weblog

May archive

Feedjack: A Django-powered feed aggregator

May 31, 2006

Gustavo Picón has open-sourced Feedjack, A Django+Python-powered feed aggregator. It's software you can use to make "planet" sites.

It's currently powering these sites:

According to Gustavo's announcement, it has many advantages over Planet. Says Gustavo:

  • It handles historical data; you can read old posts.
  • It parses a lot more info, including post categories.
  • It generates pages/feeds with posts of a certain category (example).
  • It generates pages/feeds with posts from a certain subscriber (example).
  • It generates pages/feeds with posts of a certain category from a certain subcriber (example).
  • A cloud tag/folksonomy (hype 2.0 compliant) for every page and every subscriber.
  • It uses Django templates.
  • The administration is done via web (using Django’s kickass autogenerated and magical admin site), and can handle multiple planets.
  • Extensive use of Django’s internal cache engine. Most of the time you will have no database hits when serving pages.

Good stuff!

Week in review: May 21

May 22, 2006

Here are the highlights of Django improvements this week:

  • Changeset 2909: Made automatic model verbose_name calculating smarter, with regard to consecutive capital letters. For example, previously it converted something like "USAResident" to "u s a resident", but now it's "usa resident". Thanks, Alex Dedul.
  • Changeset 2922: MySQL inspectdb now detects tinyint field properly.
  • Changeset 2927: Made DJANGO_SETTINGS_MODULE optional. You can now call django.conf.settings.configure() to set settings manually if you don't have a settings module. This goes a long way in making it possible to use various bits of Django, such as the template system, without needing to set up a settings file. See the new documentation. Thanks, Malcolm Tredinnick, Luke Plant and Fredrik Lundh.
  • Changesets 2928 and 2934: Added a postgresql_psycopg2 backend, for folks who'd like to use the new(ish) version of psycopg, 2.0. Thanks, germish@gmail.com.
  • Changeset 2951: The update_object generic view no longer assumes the object's get_absolute_url() doesn't change. Thanks, marcink@elksoft.pl.
  • Changeset 2952: Using a FilePathField no longer breaks the admin model documentation. Thanks, Adam Endicott.
  • Changeset 2954: Improved the login_required() view decorator to save query-string parameters in passing the "next" page parameter.
  • Changeset 2959: Added a very cool manager, CurrentSiteManager, which limits the objects to those found on the current site. Thanks, Ian Holsman. (Read the docs.)

Also, we continue to improve the documentation substantially. Special thanks to Malcolm Tredinnick for his relentless improvements. New for your perusal this week:

In other Django news:

Week in review: May 14

May 14, 2006

Here are the highlights of Django improvements this week:

  • Changeset 2868: Added CsrfMiddleware to django.contrib.csrf. This new middleware automatically helps protect you from cross-site request forgeries. See the brand-new docs. Thanks, Luke Plant.
  • Changeset 2872: The "inspectdb" command no longer puts null=True for TextFields and CharFields. Thanks, mir@noris.de.
  • Changeset 2874: Made maxlength overridable for URLField formfield.
  • Changeset 2878: Added padding fix to container to address reported admin-site display issues in Safari.
  • Changeset 2865: Created a "multi-auth" branch, on which we (Joseph Kocherhans) will be implementing a more flexible authentication framework.
  • Changeset 2901: E-mail sent from django.core.mail is now encoded using the value of the DEFAULT_CHARSET setting. Thanks, igor@goryachev.org and akaihola.
  • Changeset 2902: QuerySet.count() now respects distinct(). Thanks to Adam Endicott.
  • Changeset 2905: Slugifying now collapses consecutive hyphens to a single hyphen. Thanks, Tom Insam.
  • Changeset 2906: Improved TemplateSyntaxError to display the original exception if str() of the exception raises an exception in itself. Thanks, Neal Norwitz at Google.

In other Django news:

  • To my knowledge, this is the first time Django has been mentioned in a bona-fide book: Django gets the shout out on page 71 of Google Maps Hacks, published by O'Reilly. Today an obscure mention, tomorrow the world!
  • Jeff Croft wrote a guide to Django on Dreamhost.
  • Zyons is an open-source forum project being developed in Django.
  • Another happy customer: "I have to say, my first impressions are that I’m very impressed, particularly with the automatic admin interface generation, and the fact that (gasp) it isn’t a strict MVC framework.
  • Wilson, Django's designer (aka the guy who makes us look good), writes about how he uses Django even though he doesn't consider himself a programmer: "How I built a portfolio app in 30 minutes with Django".
  • 31 MySpace friends and counting!
  • The acronyms keep coming in!

Week in review: May 7

May 7, 2006

Now that the magic-removal branch has merged and we're focusing all Django development on a single place, it's time to get back in the groove of "week in review" entries.

Aside from the huge news of the magic-removal merge, here are the highlights of the Django improvements that happened after the merge:

  • Changeset 2815: Fixed off-by-one line number in heading of debug error pages.
  • Changeset 2817: Accessing many-to-many relationships without a PK value now throws an exception. Thanks, Luke Plant.
  • Changeset 2840: Fixed broken nav links in password_change_done admin page. Thanks for reporting, mdt@emdete.de.
  • Changeset 2841: Made django/contrib/auth/create_superuser.py a command-line function, and added docs.
  • Changeset 2842: Added rlcompleter autocompletion to 'manage.py shell' if IPython is not used. This gives you the benefit of tab completion (Unix only) even if you don't have IPython installed.
  • Changeset 2843: The LocaleMiddleware now sets the Content-Language header. Thanks, ubernostrum.
  • Changeset 2845: Fixed a Windows error in django.core.management. Thanks, ross.lazarus@gmail.com.
  • Changeset 2847: Added svn:ignore for pyc files for all Django packages. Thanks for the idea, Christopher Lenz.
  • Changeset 2851: Fixed a bug in the date conversion in the SQLite backend. Thanks, dart@google.com.
  • Changeset 2852: Improved runserver to display 'CONTROL-C' vs. 'CTRL-BREAK' based on the current platform. It's the little details like this that really count.
  • Changeset 2864: The debug view no longer assumes _get_lines_from_file returns None. Thanks, django@binaryfeed.org.

In other Django news:

  • Wow. Jeff Croft's blog entry about converting his site to Django attracted a ton of attention. It hovered near the top of del.icio.us popular for quite some time and attracted a lot of blog chatter. I've seen a lot of new names on the django-users mailing list, too. To all new Django users: Welcome! And, I gotta say, Jeff's site looks really slick.
  • None other than Python creator Guido van Rossum writes: "Django is gaining steam big way. Last week, a special baypiggies (Bay Area Python Interest Group) meeting drew huge crowds to listen to Django developer Jacob Kaplan-Moss. ... Several Googlers are asking about Django too!"
  • Chris McAvoy wrote Django should be on MySpace. Well, I'm not quite sure how this happened, but the framework signed itself up for an account and created a page! Word on the street is, it's anxious to make new friends.
  • Eugene Lazutkin wrote about his migration to magic-removal. He includes some good pointers worth reading and says: "In general the whole process was painless and left me completely satisfied with the outcome and code changes."
  • Trevor F. Smith: "Michael and I are coding a couple of small apps using the django web framework, which is built by people with the sensitivity to know what can and cannot be solved well in a framework and with the taste to leave out everything else."
  • "Django is cool. Calling it "Rails for Python" does it a disservice."
  • Chase Davis writes about an in-house Boston Globe project using Django: "Sure, I could write a PHP or ASP frontend, but coding all the validation conditions would take at least a couple tedious hours. With Django, I’ll have this thing up and running in 10 minutes, validation and all. Less time developing boring applications = more time working on fun projects. For database-driven applications, data-entry forms and general information accessibility, Django takes the prize for speed and simplicity."
  • As seen on Jacob's weblog: Eric Walstad posted a J2EE-to-Django success story to the django-users mailing list. He went from 40,000 lines of Java/JSP (without unit tests or documentation) to 25,000 lines of Python/Django templates (complete with docstrings and unit tests). Says Eric: "All things considered, this app has been a huge success for me, my team and our clients. Three cheers for Python and Django!"

Who needs LAMP?

May 3, 2006

First came LAMP. (Linux, Apache, MySQL, PHP.)

Then came MARS. (MySQL, Apache, Rails, Solaris.)

Now, the acronym to end all acronyms.

PAID. PostgreSQL, Apache, Internet, Django.

I can see the job ads now: "This is a PAID position."

Get PAID. Use Django.

You will have PAID your friends a favor by spreading the word.

Two Google-related announcements

May 3, 2006

The Google folks have released a video of Jacob's Django presentation from last week. Here it is.

Also, Django was (very quickly) accepted as a Summer of Code mentoring organization. If you're a student and want to make money by improving Django, sign up! We've got a burgeoning list of ideas for you to work on.

"magic-removal" branch merged

May 1, 2006

We've merged the magic-removal branch to trunk!

All Django development from now on will focus primarily on the branch formerly known as magic-removal, and all documentation on djangoproject.com will focus on the development version.

If you're not familiar with the magic-removal branch, see this previous writeup.

Detailed upgrade instructions are on the RemovingTheMagic wiki page. Please do go ahead and edit that page to add suggestions and clarifications as needed.

Note that this change applies only to Django's development version. If you're using an official release, such as Django 0.91, you won't be affected by this until Django's next release, coming in the near future. It's probably a good idea, however, for you to play around with the development version now to start learning what's changed.

Also, please be aware that the documentation on djangoproject.com now all refers to the new "magic-removal" syntax. With a few exceptions, all of the documentation has been proofread and updated to match the new APIs. (And many documents have been significantly expanded!) Previous versions of the documentation are here: 0.91 (covers 0.91 and development versions up to magic-removal merge) and 0.90 (covers 0.90 and development versions up to 0.91).

We'd like to thank ALL the dozens of people, all over the world, who have submitted code, documentation, bug reports and other help in this branch. Special thanks go to the magic-removal committers, Joseph Kocherans, Russell Keith-Magee and Luke Plant.

So, what's the next step? Let's take care of any new translations that need to be done for the new version in trunk, and then, pending small bugfixes, we'll release 0.95. (In tandem, we'll release 0.92, a "final" version of 0.91 that has a few months' worth of bugfixes applied.)

As always, thanks for using Django.