Cannot use settings constants in mezzanine views + templates
We were trying to put the RECAPTCHA_SITE_KEY in the local_settings.py for use inside a template. The documentation says to use the `register_settings` function for this purpose. However, adding this code from their [example](http://mezzanine.jupo.org/docs/configuration.html#registering-settings):

```
from mezzanine.conf import register_setting

register_setting(
    name="AUTHORS_BOOKS_PER_PAGE",
    label="Authors books per page",
    description="The number of books to show per author page.",
    editable=True,
    default=10,
)
```

Causes the app to crash with this error:
```
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker
    worker.init_process()
  File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 126, in init_process
    self.load_wsgi()
  File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 136, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/usr/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/local/lib/python2.7/site-packages/gunicorn/util.py", line 357, in import_app
    __import__(module)
  File "/hydroshare/hydroshare/wsgi.py", line 16, in <module>
    application = get_wsgi_application()
  File "/usr/local/lib/python2.7/site-packages/django/core/wsgi.py", line 14, in get_wsgi_application
    django.setup()
  File "/usr/local/lib/python2.7/site-packages/django/__init__.py", line 17, in setup
    configure_logging(settings.LOGGING_CONFIG, settings.LOGGING)
  File "/usr/local/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in __getattr__
    self._setup(name)
  File "/usr/local/lib/python2.7/site-packages/django/conf/__init__.py", line 44, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/local/lib/python2.7/site-packages/django/conf/__init__.py", line 92, in __init__
    mod = importlib.import_module(self.SETTINGS_MODULE)
  File "/usr/local/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/hydroshare/hydroshare/settings.py", line 462, in <module>
    local_settings = __import__(local_settings_module, globals(), locals(), ['*'])
  File "/hydroshare/hydroshare/local_settings.py", line 11, in <module>
    from mezzanine.conf import register_setting
  File "/usr/local/lib/python2.7/site-packages/mezzanine/conf/__init__.py", line 253, in <module>
    for app in sorted(django_settings.INSTALLED_APPS, key=mezz_first):
  File "/usr/local/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in __getattr__
    self._setup(name)
  File "/usr/local/lib/python2.7/site-packages/django/conf/__init__.py", line 44, in _setup
    self._wrapped = Settings(settings_module)
  File "/usr/local/lib/python2.7/site-packages/django/conf/__init__.py", line 113, in __init__
    raise ImproperlyConfigured("The SECRET_KEY setting must not be empty.")
ImproperlyConfigured: The SECRET_KEY setting must not be empty.
```
diff --git a/theme/forms.py b/theme/forms.py
index ed2049b9e..e24eccd0a 100644
--- a/theme/forms.py
+++ b/theme/forms.py
@@ -1,3 +1,5 @@
+import requests
+
 from django import forms
 from django.utils.translation import ugettext, ugettext_lazy as _
 from django_comments.signals import comment_was_posted
@@ -19,6 +21,8 @@ from .models import UserProfile
 from hs_core.hydroshare.users import create_account
 from hs_core.templatetags.hydroshare_tags import best_name
 
+from hydroshare import settings as hydroshare_settings
+
 COMMENT_MAX_LENGTH = getattr(settings, 'COMMENT_MAX_LENGTH', 3000)
 
 
@@ -225,9 +229,6 @@ class SignupForm(forms.ModelForm):
 
     password1 = forms.CharField(label="Password", widget=forms.PasswordInput())
     password2 = forms.CharField(label="Confirm Password", widget=forms.PasswordInput())
-    # Captcha = forms.CharField(required=False)
-    # challenge = forms.CharField()
-    # response = forms.CharField()
     organization = forms.CharField(required=True)
 
     def __init__(self, request, *args, **kwargs):
@@ -235,22 +236,23 @@ class SignupForm(forms.ModelForm):
         super(SignupForm, self).__init__(*args, **kwargs)
 
     def verify_captcha(self):
-        return True
-
-        # params = dict(self.cleaned_data)
-        # params['privatekey'] = getattr(settings, 'RECAPTCHA_PRIVATE_KEY',
-        #                               "6LdNC_USAAAAADNdzytMK2-qmDCzJcgybFkw8Z5x")
-        # params['remoteip'] = self.request.META['REMOTE_ADDR']
-        # resp = requests.post('https://www.google.com/recaptcha/api/verify', params=params)
-        # lines = resp.text.split('\n')
-        # if not lines[0].startswith('false'):
-        #     return True
-        # return False
+        url = hydroshare_settings.RECAPTCHA_VERIFY_URL
+        values = {
+            'secret': hydroshare_settings.RECAPTCHA_SECRET_KEY,
+            'response': self.request.POST.get('g-recaptcha-response')
+        }
+        response = requests.post(url, values)
+        result = response.json()
+        if(result["success"]):
+            return (True, [])
+
+        return (False, result["error-codes"])
 
     def clean(self):
-        if not self.verify_captcha():
-            self.add_error('Captcha', "You did not complete the CAPTCHA correctly. "
-                                      "Please try again.")
+        success, error_codes = self.verify_captcha()
+
+        if not success:
+            self.add_error(None, " ".join(error_codes))
 
     def clean_password2(self):
         data = self.cleaned_data
diff --git a/theme/templates/accounts/sign_up_form.html b/theme/templates/accounts/sign_up_form.html
index 1876c5680..a7fd61243 100644
--- a/theme/templates/accounts/sign_up_form.html
+++ b/theme/templates/accounts/sign_up_form.html
@@ -21,9 +21,6 @@
 <form id="form-signup" action="/accounts/signup/" method="post" role="form">
     {% csrf_token %}
     {{ form.non_field_errors }}
-    <!-- recaptcha -->
-    <input type="hidden" name="challenge" />
-    <input type="hidden" name="response" />
     <div class="row">
         <div class="form-group half">
           {% include "includes/form_field.html" with field=form.first_name inline_label=True %}
@@ -47,8 +44,8 @@
         </div>
     </div>
     <div class="row">
-
-      <!--<div id="recaptcha-div"></div>-->
+      <script src='https://www.google.com/recaptcha/api.js'></script>
+      <div class="g-recaptcha" data-sitekey="SITE_KEY"></div>
 
       <div id="missing-data-div"></div>
 
@@ -58,7 +55,6 @@
 </form>
 
 <script type="text/javascript" src="{{ STATIC_URL }}js/jquery.tagsinput-revisited.min.js"></script>
-<!--<script type="text/javascript" src="//www.google.com/recaptcha/api/js/recaptcha_ajax.js"></script>-->
 <script type="text/javascript">
     $(document).ready(function() {
          $('input[type="button"]').prop('disabled', false);
@@ -66,7 +62,6 @@
         // form fields
          var fieldsToCheck = ["#id_first_name", "#id_last_name", "#id_username", "#id_email",
              "#id_password1", "#id_password2"];
-            //  "#id_password1", "#id_password2", "#recaptcha_response_field"];
 
          var i;
          for (i=0; i< fieldsToCheck.length; i++){
@@ -98,25 +93,12 @@
     }
 
     $(function() {
-        // function cb() {
-        //     $("#recaptcha_privacy").attr('style', "display:none");
-        //     Recaptcha.focus_response_field();
-        // }
-
-        // Recaptcha.create("6LdNC_USAAAAAHSocU3ZpfEFHBwORoMdOBcrSUPP",
-        // "recaptcha-div", {
-        //   theme: "clean",
-        //   callback: cb // Recaptcha.focus_response_field
-        // });
-
         $("#signup").click(function() {
             var password = $("#id_password1").val();
             var pwconfirm = $("#id_password2").val();
             // These are the required form fields
             var requiredFieldsToCheck = ["#id_username", "#id_email", "#id_password1",
                 "#id_password2",  "[name='organization']"];
-                // "#id_password2", "#recaptcha_response_field", "[name='organization']"];
-            // var fieldNames = [ 'User name', 'Email', 'Password', 'Password (again)', 'ReCaptcha', "Organization"];
             var fieldNames = [ 'User name', 'Email', 'Password', 'Password (again)', "Organization"];
             var empty = false;
             var missingFields = 'Data missing for:';
@@ -160,8 +142,6 @@
             }
             if (password && pwconfirm) {
                 if (password === pwconfirm) {
-                    // $("[name=challenge]").val(Recaptcha.get_challenge());
-                    // $("[name=response]").val(Recaptcha.get_response());
                     $('#form-signup').submit();
                 } else {
                     $("#id_password1").val('');
['theme/forms.py', 'theme/templates/accounts/sign_up_form.html']