]> git.openstreetmap.org Git - osqa.git/commitdiff
general improvements of the recaptcha client
authorjordan <jordan@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Thu, 15 Mar 2012 03:10:42 +0000 (03:10 +0000)
committerjordan <jordan@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Thu, 15 Mar 2012 03:10:42 +0000 (03:10 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@1233 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum_modules/recaptcha/formfield.py
forum_modules/recaptcha/lib/captcha.py

index 88b949727ec456acdc577b3e506f8a158d87ada2..26ece87262b2ca7c857b677cbd064e06d530566b 100644 (file)
@@ -27,6 +27,7 @@ class ReCaptchaWidget(forms.Widget):
         return mark_safe(force_unicode(captcha.displayhtml(settings.RECAPTCHA_PUB_KEY)))
 
     def value_from_datadict(self, data, files, name):
         return mark_safe(force_unicode(captcha.displayhtml(settings.RECAPTCHA_PUB_KEY)))
 
     def value_from_datadict(self, data, files, name):
-        return (data.get('recaptcha_challenge_field', None), data.get('recaptcha_response_field', None))
+
+        return data.get('recaptcha_challenge_field', None), data.get('recaptcha_response_field', None)
         
 
         
 
index c165dc929aab1f2fedf3c339087d42e5265ba704..74ec8aac52e35d65052a1eb8dd5a03ca905a557c 100644 (file)
@@ -1,3 +1,5 @@
+# -*- coding: utf-8 -*-
+
 import urllib2, urllib
 
 API_SSL_SERVER="https://www.google.com/recaptcha/api"
 import urllib2, urllib
 
 API_SSL_SERVER="https://www.google.com/recaptcha/api"
@@ -9,35 +11,22 @@ class RecaptchaResponse(object):
         self.is_valid = is_valid
         self.error_code = error_code
 
         self.is_valid = is_valid
         self.error_code = error_code
 
-def displayhtml (public_key,
-                 use_ssl = False,
-                 error = None):
-    """Gets the HTML to display for reCAPTCHA
-
-    public_key -- The public api key
-    use_ssl -- Should the request be sent over ssl?
-    error -- An error message to display (from RecaptchaResponse.error_code)"""
+def displayhtml (public_key):
 
 
-    error_param = ''
-    if error:
-        error_param = '&error=%s' % error
+    return """
+    <div id="recaptcha_field"></div>
+    <script type="text/javascript" src="http://www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>
 
 
-    if use_ssl:
-        server = API_SSL_SERVER
-    else:
-        server = API_SERVER
+    <script type="text/javascript">
+         $(function(){
+             Recaptcha.create("%(PublicKey)s", 'recaptcha_field', {
+             theme: "red",
+             callback: Recaptcha.focus_response_field});
+         });
+    </script>
 
 
-    return """<script type="text/javascript" src="%(ApiServer)s/challenge?k=%(PublicKey)s%(ErrorParam)s"></script>
-
-<noscript>
-  <iframe src="%(ApiServer)s/noscript?k=%(PublicKey)s%(ErrorParam)s" height="300" width="500" frameborder="0"></iframe><br />
-  <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
-  <input type='hidden' name='recaptcha_response_field' value='manual_challenge' />
-</noscript>
 """ % {
 """ % {
-        'ApiServer' : server,
         'PublicKey' : public_key,
         'PublicKey' : public_key,
-        'ErrorParam' : error_param,
         }
 
 
         }
 
 
@@ -45,15 +34,6 @@ def submit (recaptcha_challenge_field,
             recaptcha_response_field,
             private_key,
             remoteip):
             recaptcha_response_field,
             private_key,
             remoteip):
-    """
-    Submits a reCAPTCHA request for verification. Returns RecaptchaResponse
-    for the request
-
-    recaptcha_challenge_field -- The value of recaptcha_challenge_field from the form
-    recaptcha_response_field -- The value of recaptcha_response_field from the form
-    private_key -- your reCAPTCHA private key
-    remoteip -- the user's ip address
-    """
 
     if not (recaptcha_response_field and recaptcha_challenge_field and
             len (recaptcha_response_field) and len (recaptcha_challenge_field)):
 
     if not (recaptcha_response_field and recaptcha_challenge_field and
             len (recaptcha_response_field) and len (recaptcha_challenge_field)):
@@ -81,14 +61,14 @@ def submit (recaptcha_challenge_field,
         }
     )
 
         }
     )
 
-    httpresp = urllib2.urlopen (request)
+    httpresp = urllib2.urlopen(request)
 
 
-    return_values = httpresp.read ().splitlines ();
-    httpresp.close();
+    return_values = httpresp.read().splitlines()
+    httpresp.close()
 
 
-    return_code = return_values [0]
+    return_code = return_values[0]
 
 
-    if (return_code == "true"):
-        return RecaptchaResponse (is_valid=True)
+    if return_code == "true":
+        return RecaptchaResponse(is_valid = True)
     else:
     else:
-        return RecaptchaResponse (is_valid=False, error_code = return_values [1])
\ No newline at end of file
+        return RecaptchaResponse(is_valid = False, error_code = return_values[1])