from django import forms
from django.forms.widgets import Textarea
from django.utils.html import strip_tags
from django.utils.translation import gettext_lazy as _
from .settings import ALLOWED_ATTRIBUTES, ALLOWED_TAGS
from fobi.base import BasePluginForm, get_theme
try:
import bleach
BLEACH_INSTALLED = True
except ImportError as err:
BLEACH_INSTALLED = False
__title__ = "fobi.contrib.plugins.form_elements.content.content_text.forms"
__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
__copyright__ = "2014-2019 Artur Barseghyan"
__license__ = "GPL 2.0/LGPL 2.1"
__all__ = ("ContentTextForm",)
theme = get_theme(request=None, as_instance=True)
[docs]class ContentTextForm(forms.Form, BasePluginForm):
"""Form for ``ContentTextPlugin``."""
plugin_data_fields = [("text", "")]
text = forms.CharField(
label=_("Text"),
required=True,
widget=Textarea(attrs={"class": theme.form_element_html_class}),
)
[docs] def clean_text(self):
"""Clean text value."""
if BLEACH_INSTALLED:
return bleach.clean(
text=self.cleaned_data["text"],
tags=ALLOWED_TAGS,
attributes=ALLOWED_ATTRIBUTES,
strip=True,
strip_comments=True,
)
else:
return strip_tags(self.cleaned_data["text"])