Показаны сообщения с ярлыком wizard. Показать все сообщения
Показаны сообщения с ярлыком wizard. Показать все сообщения

среда, 22 апреля 2009 г.

Патчим Django

Для задачи, которую на досуге пописываю, понадобилось мне изобразить wizard, причём на последней странице нужна капча против ботов.
Для капчи я решил использовать supercaptcha. В принципе это не единственное решение, скажем, я писал уже о Django Simple Captcha, но суперкапча мне как-то больше приглянулась.
Что касается wizard'а, то в django.contrib есть класс FormWizard, предназначенный как раз для этого.
И вроде всё хорошо, но обнаружился ньюанс - на самом последнем шаге FormWizard валидирует заново все данные, которые ввёл пользователь. Для обычных полей проблем никаких не возникает (разве что чуть больше времени тратится), а с капчей такой фокус не пройдёт, т.к. валидация у неё "одноразовая". Править капчу, на мой взгляд, в данном случае неправильно, поэтому пришлось внести изменения в FormWizard, о которых я написал ticket 10810 в Trac Django. По сути дела там реализован "хак", т.к. просто последняя форма не ревалидируется заново. Как решить задачу чтобы "и волки сыты, и овцы целы" я так пока и не придумал. Но текущее решение вполне работоспособное, поэтому пока остановлюсь на неём.