summaryrefslogtreecommitdiff
path: root/recaptcha/fields.py
diff options
context:
space:
mode:
authorsupriya <supriya@dragbox.(none)>2012-09-26 15:49:52 +0530
committersupriya <supriya@dragbox.(none)>2012-09-26 15:49:52 +0530
commit94535d4adc3a4960795d22e3b229a8375de10b74 (patch)
tree8d77de86b443495d67360dcd40786f2b8208d334 /recaptcha/fields.py
parentcad11e2f7ed848cdfd7779451bb0f4f931e062c3 (diff)
downloadgnowsys-94535d4adc3a4960795d22e3b229a8375de10b74.tar.gz
all modules integrated
Diffstat (limited to 'recaptcha/fields.py')
-rw-r--r--recaptcha/fields.py27
1 files changed, 27 insertions, 0 deletions
diff --git a/recaptcha/fields.py b/recaptcha/fields.py
new file mode 100644
index 00000000..ce79a6db
--- /dev/null
+++ b/recaptcha/fields.py
@@ -0,0 +1,27 @@
+from django.conf import settings
+from django import forms
+from django.utils.encoding import smart_unicode
+from django.utils.translation import ugettext_lazy as _
+
+from recaptcha.widgets import ReCaptcha
+from recaptcha.client import captcha
+
+class ReCaptchaField(forms.CharField):
+ default_error_messages = {
+ 'captcha_invalid': _(u'Invalid captcha')
+ }
+
+ def __init__(self, *args, **kwargs):
+ self.widget = ReCaptcha
+ self.required = True
+ super(ReCaptchaField, self).__init__(*args, **kwargs)
+
+ def clean(self, values):
+ super(ReCaptchaField, self).clean(values[1])
+ recaptcha_challenge_value = smart_unicode(values[0])
+ recaptcha_response_value = smart_unicode(values[1])
+ check_captcha = captcha.submit(recaptcha_challenge_value,
+ recaptcha_response_value, settings.RECAPTCHA_PRIVATE_KEY, {})
+ if not check_captcha.is_valid:
+ raise forms.util.ValidationError(self.error_messages['captcha_invalid'])
+ return values[0]