diff options
author | Dario Ghilardi <darioghilardi@gmail.com> | 2010-09-30 11:55:23 +0200 |
---|---|---|
committer | Dario Ghilardi <darioghilardi@gmail.com> | 2010-09-30 11:55:23 +0200 |
commit | 2af5e53c64c23b8b49238f4db597726119c9edd2 (patch) | |
tree | 7ec1193f6ae34e886dd58d59f57a10d70bb9d2b4 | |
parent | c215a3f7d0d09bcd8f94d59cad0b17e953845e41 (diff) | |
parent | dcd0a8602fb3b6a26b43f52588baa565b2aa0ac9 (diff) | |
download | askbot-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.py | 34 | ||||
-rw-r--r-- | askbot/deps/django_authopenid/forms.py | 5 | ||||
-rw-r--r-- | askbot/deps/django_authopenid/util.py | 18 | ||||
-rw-r--r-- | askbot/deps/django_authopenid/views.py | 20 | ||||
-rwxr-xr-x | askbot/skins/default/templates/authopenid/signin.html | 2 |
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 %}
|