from django import forms from django.utils.safestring import mark_safe from django.conf import settings from faireweb.recaptcha import captcha class ReCaptcha(forms.widgets.Widget): recaptcha_challenge_name = 'recaptcha_challenge_field' recaptcha_response_name = 'recaptcha_response_field' def render(self, name, value, attrs=None): use_ssl = False use_custom_theme = False if 'RECAPTCHA_USE_SSL' in settings.__members__: use_ssl = settings.RECAPTCHA_USE_SSL if 'RECAPTCHA_USE_CUSTOM_THEME' in settings.__members__: use_custom_theme = settings.RECAPTCHA_USE_CUSTOM_THEME return mark_safe(u'%s' % captcha.displayhtml(settings.RECAPTCHA_PUBLIC_KEY, use_ssl=use_ssl, use_custom_theme=settings.RECAPTCHA_USE_CUSTOM_THEME)) def value_from_datadict(self, data, files, name): return [data.get(self.recaptcha_challenge_name, None), data.get(self.recaptcha_response_name, None)]