Week in review: May 31
Here are the highlights of Django improvements this past week-and-a-half-ish (the Memorial Day weekend in the U.S. delayed this week's entry):
- Changeset 2970: Fixed bug with Meta.ordering being ignored when slicing a single item off a QuerySet. Thanks, Gábor Fawkes.
- Changeset 2981: Changed comments.py views to use relative URL for redirects. Thanks, phil@produxion.net.
- Changeset 2984: Changed django.core.mail to include 'Date' header in e-mails. Thanks, Eric Walstad.
- Changeset 2985: Initial SQL data now works in SQLite if there are multiple statements. Thanks, jpellerin@gmail.com.
- Changeset 2990: Base handler no longer calls mail_admins() on SystemExit, in case of forked processes called from views. Thanks, Hugo.
- Changeset 2991: The 'add' green plus sign no longer appears in admin change forms for fields whose related models don't have an admin.
- Changeset 2992: Made negative indexing on QuerySet instances raise an assertion error (previously it just returned incorrect results).
- Changeset 2993: Every database backend now properly raises ImproperlyConfigured if the relevant Python database module raises ImportError. This should help avoid some newbie confusion.
- Changeset 2994: Improved error message if DATABASE_ENGINE is invalid. This should also help avoid some newbie confusion.
- Changeset 2995: AttributeErrors in models are no longer ignored by the model validator.
- Changeset 2997: Fixed bug with QuerySet.exclude() failing to do negations on Q objects, and at the same time generalised exclude/QNot so that they work for 'external' Q objects, i.e. ones that simply have 'get_sql' defined.
- Changeset 2999: Models are now sorted by verbose_name_plural in the admin index page. Thanks, Alex Dedul.
- Changeset 3002: auto_now_add fields now work properly when saving multiple times.
- Changeset 3004: Improved Atom feed framework by outputting "rel=alternate". Thanks, Ned Batchelder.
- Changeset 3009: 'View on site' now works with non-integer primary keys.
- Changeset 3012: Added support to the Django auth mod_python handler (django/contrib/auth/handlers/modpython.py) for setting DJANGO_SETTINGS_MODULE via a PythonOption instead of SetEnv.
- Changeset 3014: get_object_or_404 now allows *args as well. Thanks, Joeboy.
- Changeset 3018: Fixed raw_id_admin display in admin. Thanks, Christopher Lenz.
- Changeset 3019: QuerySet._combine now combines where clause. Thanks, graham@darkcoding.net.
- Changeset 3020: autoreload.py no longer fails for uninstalled 'thread' module. Thanks, plmeister@gmail.com.
- Changeset 3021: Ooption values are now escaped in SelectMultipleField.
- Changeset 3022: Added 'mimetype' parameter to generic views. Thanks, Ian Holsman.
- Changeset 3023: Admin now quotes strings in breadcrumbs and filters. Thanks, mhf@hex.no.
- Changeset 3024: Fixed bug in admin where it would redirect infinitely if invalid lookup parameters were given in the URL.
- Changeset 3026: Made isValidEmail validator wider in scope. Thanks, mir@noris.de.
- Changeset 3034: Escaped history messages in admin. Thanks, SmileyChris.
- Changeset 3038: The CursorDebugWrapper now supports pyformat paramstyle.
- Changeset 3039: Added a make_object_list parameter to the archive_year date-based generic view. Thanks, jhf@hex.no.
- Changeset 3040: Added first_on_page() and last_on_page() methods to ObjectPaginator. Thanks, m@bagai.com.
- Changeset 3044: Improved DB API quote_only_if_word() so that it doesn't quote 'select' parameters that are not all word characters. Thanks, dja@cdc.msbx.net.
- Changeset 3045: Fixed some threading issues for FreeBSD. Thanks, scott@clued-in.co.uk.
In other Django news:
- We upgraded djangoproject.com to magic-removal. Here's the changeset, and here's the whole code.
- On a related note, finally the "model examples" documentation has been upgraded to magic-removal. We've also added ten new examples as a result.
- James Bennett (aka ubernostrum) has been posting some great blog entries lately. See Why templating languages aren’t a bad idea, Let's talk about frameworks and Let's talk about frameworks, designer edition.
- Bill de hÓra wrote a short tutorial on using TinyMCE in Django's admin site.
- Faruk Ateş has some Django first impressions: "As a programmer, I'm excited because I know that I won't have to do any admin interface building anymore, and I won't have to worry about all the little details. Instead, I can focus on what I like most about programming: coming up with features for a website and implementing them. Django makes that process ridiculously easy and fast, in a very clean and pragmatic way."
- Reboot Redux: "I've tried working with Rails, and .NET, but they never really had the 'stickiness' for me that Django seems to have. For whatever reason, I just 'get' Django."
- "I was really amazed by this great framework. This exactly what I need."
- "I love Python so I picked Django, and so far I've found it easy and fun."
- Here's an anecdote we're seeing more and more: "Up until recently, I had been using PHP as my web programming language of choice. That was until a few weeks ago when I finally gave Django a fair chance on a large web application project I did for a client. In a nutshell, wow!"
- Chris McAvoy launched a Django-powered site Victim of Time and wrote: "As a brief tech aside, Django was dreamy to work with." Warning: The site may or may not contain photos of naked men.