Quick synopsis: Develop a Passage object that will self-correct errors such as Romans 1:1-99, and will kick a stink at unfixable errors such as Romans 99:999.
At the moment, there is very little validation of Passage objects that get added to Talks. This isn't a huge problem, because the people uploading Talks should know how to use the system. However, if we are to start allowing site users to type a passage into the search box (see <<issue 23>>), then we need to do some proper validation. And... if we want to eventually turn this into an open-source app that other churches could use, we need to do it fairly rigorously.
To put a twist on it, we would also like to be able to work out how many verses a passage spans, so that (for example) we can check to see that we are within the licencing limitations of the [[http://www.esvapi.org/|ESV Bible Web Service]].
A basic passage object and a set of unit tests that it should pass [[http://bitbucket.org/campuschurch/campuschurch.org.nz/wiki/books.py|are available on the wiki]]. Also available [[http://bitbucket.org/campuschurch/campuschurch.org.nz/wiki/ESV_max_verses.xls|is a spreadsheet]] giving the maximum number of verses in each book of the (ESV) bible, along with the verses that it doesn't actually have ('missing verses' - so, the second twist to the problem).
This is a problem that will require good use of Python objects and data structures. In fact, it doesn't require any understanding of Django at all! It's a challenging task, but I'm sure it will be a pretty satisfying to complete.