Source code for scipost.widgets

__copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
__license__ = "AGPL v3"

import json

from django.forms.widgets import CheckboxSelectMultiple, Widget
from django.utils.safestring import mark_safe


[docs]class SelectButtonWidget(CheckboxSelectMultiple): template_name = "widgets/checkbox_as_btn.html"
[docs]class ReCaptcha(Widget): recaptcha_response_name = "g-recaptcha-response" recaptcha_challenge_name = "g-recaptcha-response" template_name = "widgets/nocaptcha.html" def __init__(self, public_key, *args, **kwargs): super().__init__(*args, **kwargs) self.public_key = public_key
[docs] def value_from_datadict(self, data, files, name): return [ data.get(self.recaptcha_challenge_name, None), data.get(self.recaptcha_response_name, None), ]
[docs] def get_context(self, name, value, attrs): try: lang = attrs["lang"] except KeyError: # Get the generic language code lang = "en" try: context = super().get_context(name, value, attrs) except AttributeError: context = {"widget": {"attrs": self.build_attrs(attrs)}} context.update( { "public_key": self.public_key, "lang": lang, "options": mark_safe(json.dumps(self.attrs, indent=2)), } ) return context