summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDario Ghilardi <darioghilardi@gmail.com>2010-09-30 11:55:23 +0200
committerDario Ghilardi <darioghilardi@gmail.com>2010-09-30 11:55:23 +0200
commit2af5e53c64c23b8b49238f4db597726119c9edd2 (patch)
tree7ec1193f6ae34e886dd58d59f57a10d70bb9d2b4
parentc215a3f7d0d09bcd8f94d59cad0b17e953845e41 (diff)
parentdcd0a8602fb3b6a26b43f52588baa565b2aa0ac9 (diff)
downloadaskbot-2af5e53c64c23b8b49238f4db597726119c9edd2.tar.gz
askbot-2af5e53c64c23b8b49238f4db597726119c9edd2.tar.bz2
askbot-2af5e53c64c23b8b49238f4db597726119c9edd2.zip
Merge branch 'master' of https://github.com/ASKBOT/askbot-devel
-rw-r--r--askbot/conf/external_keys.py34
-rw-r--r--askbot/deps/django_authopenid/forms.py5
-rw-r--r--askbot/deps/django_authopenid/util.py18
-rw-r--r--askbot/deps/django_authopenid/views.py20
-rwxr-xr-xaskbot/skins/default/templates/authopenid/signin.html2
5 files changed, 57 insertions, 22 deletions
diff --git a/askbot/conf/external_keys.py b/askbot/conf/external_keys.py
index acf637f8..657155e8 100644
--- a/askbot/conf/external_keys.py
+++ b/askbot/conf/external_keys.py
@@ -2,17 +2,17 @@
External service key settings
"""
from askbot.conf.settings_wrapper import settings
-from askbot.deps.livesettings import ConfigurationGroup, StringValue
+from askbot.deps import livesettings
from django.utils.translation import ugettext as _
from django.conf import settings as django_settings
-EXTERNAL_KEYS = ConfigurationGroup(
+EXTERNAL_KEYS = livesettings.ConfigurationGroup(
'EXTERNAL_KEYS',
_('Keys to connect the site with external services like Facebook, etc.')
)
settings.register(
- StringValue(
+ livesettings.StringValue(
EXTERNAL_KEYS,
'GOOGLE_SITEMAP_CODE',
description=_('Google site verification key'),
@@ -28,7 +28,7 @@ settings.register(
)
settings.register(
- StringValue(
+ livesettings.StringValue(
EXTERNAL_KEYS,
'GOOGLE_ANALYTICS_KEY',
description=_('Google Analytics key'),
@@ -43,7 +43,16 @@ settings.register(
)
settings.register(
- StringValue(
+ livesettings.BooleanValue(
+ EXTERNAL_KEYS,
+ 'USE_RECAPTCHA',
+ description=_('Enable recaptcha (keys below are required)'),
+ default=False
+ )
+)
+
+settings.register(
+ livesettings.StringValue(
EXTERNAL_KEYS,
'RECAPTCHA_KEY',
description=_('Recaptcha public key')
@@ -51,7 +60,7 @@ settings.register(
)
settings.register(
- StringValue(
+ livesettings.StringValue(
EXTERNAL_KEYS,
'RECAPTCHA_SECRET',
description=_('Recaptcha private key'),
@@ -64,9 +73,8 @@ settings.register(
)
)
-
settings.register(
- StringValue(
+ livesettings.StringValue(
EXTERNAL_KEYS,
'FACEBOOK_KEY',
description=_('Facebook public API key'),
@@ -81,7 +89,7 @@ settings.register(
)
settings.register(
- StringValue(
+ livesettings.StringValue(
EXTERNAL_KEYS,
'FACEBOOK_SECRET',
description=_('Facebook secret key')
@@ -89,7 +97,7 @@ settings.register(
)
settings.register(
- StringValue(
+ livesettings.StringValue(
EXTERNAL_KEYS,
'TWITTER_KEY',
description=_('Twitter consumer key'),
@@ -102,7 +110,7 @@ settings.register(
)
settings.register(
- StringValue(
+ livesettings.StringValue(
EXTERNAL_KEYS,
'TWITTER_SECRET',
description=_('Twitter consumer secret'),
@@ -110,7 +118,7 @@ settings.register(
)
settings.register(
- StringValue(
+ livesettings.StringValue(
EXTERNAL_KEYS,
'LINKEDIN_KEY',
description=_('LinkedIn consumer key'),
@@ -123,7 +131,7 @@ settings.register(
)
settings.register(
- StringValue(
+ livesettings.StringValue(
EXTERNAL_KEYS,
'LINKEDIN_SECRET',
description=_('LinkedIn consumer secret'),
diff --git a/askbot/deps/django_authopenid/forms.py b/askbot/deps/django_authopenid/forms.py
index bc878ec9..29460d8f 100644
--- a/askbot/deps/django_authopenid/forms.py
+++ b/askbot/deps/django_authopenid/forms.py
@@ -324,6 +324,11 @@ class ClassicRegisterForm(SetPasswordForm):
email = UserEmailField()
login_provider = PasswordLoginProviderField()
#fields password1 and password2 are inherited
+
+class SafeClassicRegisterForm(ClassicRegisterForm):
+ """this form uses recaptcha in addition
+ to the base register form
+ """
recaptcha = ReCaptchaField()
class ChangePasswordForm(SetPasswordForm):
diff --git a/askbot/deps/django_authopenid/util.py b/askbot/deps/django_authopenid/util.py
index 594c70d1..1dc2da74 100644
--- a/askbot/deps/django_authopenid/util.py
+++ b/askbot/deps/django_authopenid/util.py
@@ -156,6 +156,20 @@ def get_provider_name(openid_url):
url_bits = base_url.split('.')
return url_bits[-2].lower()
+def use_password_login():
+ """password login is activated
+ either if USE_RECAPTCHA is false
+ of if recaptcha keys are set correctly
+ """
+ if askbot_settings.USE_RECAPTCHA:
+ if askbot_settings.RECAPTCHA_KEY and askbot_settings.RECAPTCHA_SECRET:
+ return True
+ else:
+ logging.critical('if USE_RECAPTCHA == True, set recaptcha keys!!!')
+ return False
+ else:
+ return True
+
def get_major_login_providers():
"""returns a tuple with data about login providers
whose icons are to be shown in large format
@@ -176,7 +190,8 @@ def get_major_login_providers():
describes name of required extra token - e.g. "XYZ user name"
"""
data = SortedDict()
- if askbot_settings.RECAPTCHA_KEY and askbot_settings.RECAPTCHA_SECRET:
+
+ if use_password_login():
data['local'] = {
'name': 'local',
'display_name': askbot_settings.APP_SHORT_NAME,
@@ -186,6 +201,7 @@ def get_major_login_providers():
'change_password_prompt': _('Change your password'),
'icon_media_path': askbot_settings.LOCAL_LOGIN_ICON,
}
+
if askbot_settings.FACEBOOK_KEY and askbot_settings.FACEBOOK_SECRET:
data['facebook'] = {
'name': 'facebook',
diff --git a/askbot/deps/django_authopenid/views.py b/askbot/deps/django_authopenid/views.py
index 096fae87..88bea879 100644
--- a/askbot/deps/django_authopenid/views.py
+++ b/askbot/deps/django_authopenid/views.py
@@ -526,6 +526,7 @@ def show_signin_view(
'account_recovery_form': account_recovery_form,
'openid_error_message': request.REQUEST.get('msg',''),
'account_recovery_message': account_recovery_message,
+ 'use_password_login': util.use_password_login(),
}
major_login_providers = util.get_major_login_providers()
@@ -841,9 +842,14 @@ def signup_with_password(request):
#this is safe because second decorator cleans this field
provider_name = request.REQUEST['login_provider']
+ if askbot_settings.USE_RECAPTCHA:
+ RegisterForm = forms.SafeClassicRegisterForm
+ else:
+ RegisterForm = forms.ClassicRegisterForm
+
logging.debug('request method was %s' % request.method)
if request.method == 'POST':
- form = forms.ClassicRegisterForm(request.POST)
+ form = RegisterForm(request.POST)
email_feeds_form = askbot_forms.SimpleEmailSubscribeForm(request.POST)
#validation outside if to remember form values
@@ -904,12 +910,12 @@ def signup_with_password(request):
logging.debug('create classic account forms were invalid')
else:
#todo: here we have duplication of get_password_login_provider...
- form = forms.ClassicRegisterForm(
- initial={
- 'next':next,
- 'login_provider': provider_name
- }
- )
+ form = RegisterForm(
+ initial={
+ 'next':next,
+ 'login_provider': provider_name
+ }
+ )
email_feeds_form = askbot_forms.SimpleEmailSubscribeForm()
logging.debug('printing legacy signup form')
context_data = {
diff --git a/askbot/skins/default/templates/authopenid/signin.html b/askbot/skins/default/templates/authopenid/signin.html
index f3e76bdd..c13d7063 100755
--- a/askbot/skins/default/templates/authopenid/signin.html
+++ b/askbot/skins/default/templates/authopenid/signin.html
@@ -127,7 +127,7 @@
<input type="text" name="openid_login_token" />
<input class="submit-b" type="submit" name="openid_login_with_extra_token" value="{% trans "Sign in" %}"/>
</fieldset>
- {% if settings.RECAPTCHA_KEY and settings.RECAPTCHA_SECRET %}
+ {% if use_password_login %}
<fieldset
id="password-fs"
{% if user.is_anonymous %}