I think the way to upgrade is to do it piecewise, one release at a time.
Here's what we do:
1) upgrade 3rd party packages to latest. I wrote a little script to apply each new package one-by-one, rerun tests, and revert any that fail. Resolve any failures.
2) turn deprecations into errors, run tests again, and resolve any deprecation notices.
3) Read release notes from 1.2 to 1.3 so you have a sense of what's changing.
4) upgrade django from 1.2 to 1.3, then rerun tests.
5) Repeat steps 2-4 with each django release (1.3->1.4, 1.4->1.5).
This way, if / when things break during the upgrade process, you have some isolation as to what changed.
I'm not sure you can get all the way from 1.2 to 1.5 in a day, but if you spend half a day you can get a sense of how far you get, and what issues you have to resolve to finish.
You definitely want to get to at least 1.4, since that's the oldest version that has security patches.
If you don't have good tests? Start by writing tests until you have decent coverage. The django testing page has good info on coverage tool integration.
that doens't have much sense to upgrade to the outdated versions. you should just grasp your balls and start an upgrade to the latest one.
it will take 5x more time to upgrade it version to version. what sense is it to upgrade to syntax and functionality that is outdated and then to rewrite it again and again.
install new version and go ahead fixing things! dont be a pussy.
Some of us place more importance on catching bugs and keeping our product working than on proving our masculinity.
Also, in general there will be very little of the "upgrade to syntax and functionality that is outdated" - while a lot changes in a standard Python/Django release, I don't think there's much that changes in two backwards-incompatible ways in three releases. Most of it will be adapting to one change at a time, which may touch the same line of code more than once, but will not waste much effort and will give you a good idea of what mistake you make when you make it.
I think the way to upgrade is to do it piecewise, one release at a time.
Here's what we do:
1) upgrade 3rd party packages to latest. I wrote a little script to apply each new package one-by-one, rerun tests, and revert any that fail. Resolve any failures.
2) turn deprecations into errors, run tests again, and resolve any deprecation notices.
3) Read release notes from 1.2 to 1.3 so you have a sense of what's changing.
4) upgrade django from 1.2 to 1.3, then rerun tests.
5) Repeat steps 2-4 with each django release (1.3->1.4, 1.4->1.5).
This way, if / when things break during the upgrade process, you have some isolation as to what changed.
I'm not sure you can get all the way from 1.2 to 1.5 in a day, but if you spend half a day you can get a sense of how far you get, and what issues you have to resolve to finish.
You definitely want to get to at least 1.4, since that's the oldest version that has security patches.
If you don't have good tests? Start by writing tests until you have decent coverage. The django testing page has good info on coverage tool integration.