mbi/django-simple-captcha — pull request #34 by tepez (2013-03-23 13:30:55+00:00)
Title: bootstrap widget, custom challenge message and small code changes

Main changes:
* New base class for Captcha widgets to ease the creation of new widgets/
* New captcha widget BootstrapCaptchaTextInput using Twitter Bootstrap, based [on] (http://jsfiddle.net/hqv27/) (with an integral refresh button)

![bootstrap_captcha](https://f.cloud.github.com/assets/3265649/293908/90cb1e46-93bd-11e2-9b49-7422fff1ca47.png)

* Add support for custom challenge messages, e.g. "Type solution" for a math challenge and "Type word" for a dictionary challenge.

Small changes:
* Fix `id_for_label`
* Use `ugettext` instead of `ugettext_lazy` in `fields.py`
* Use dictionary/list literal instead of [constructor]
(http://stackoverflow.com/questions/6610606/dict-literal-vs-dict-constructor-any-preferred)
* Except `CaptchaStore.DoesNotExist` instead of `Exception` in `CaptchaField.clean()`
* Make sanity checks only if in DEBUG mode.

I understand some of these changes are rather radical (even introducing a backward incompatibility with `CaptchaStore.generate_key()`). I'd like to cooperate on this project, and have some more changes planned. Please let me know if you're interested.