Source code for fobi.contrib.plugins.form_handlers.mail.widgets
import six
from django.core import validators
from django.core.exceptions import ValidationError
from django.forms.widgets import Textarea
from .settings import MULTI_EMAIL_FIELD_VALUE_SPLITTER
__title__ = "fobi.contrib.plugins.form_handlers.mail.widgets"
__author__ = "Artur Barseghyan <artur.barseghyan@gmail.com>"
__copyright__ = "2014-2019 Artur Barseghyan"
__license__ = "GPL 2.0/LGPL 2.1"
__all__ = ("MultiEmailWidget",)
MULTI_EMAIL_FIELD_EMPTY_VALUES = validators.EMPTY_VALUES + ("[]",)
[docs]class MultiEmailWidget(Textarea):
"""Multi email widget."""
is_hidden = False
[docs] def prep_value(self, value):
"""Prepare value before effectively render widget"""
if value in MULTI_EMAIL_FIELD_EMPTY_VALUES:
return ""
elif isinstance(value, six.string_types):
return value
elif isinstance(value, list):
return MULTI_EMAIL_FIELD_VALUE_SPLITTER.join(value)
raise ValidationError("Invalid format.")
[docs] def render(self, name, value, attrs=None, **kwargs):
"""Render."""
value = self.prep_value(value)
return super(MultiEmailWidget, self).render(
name, value, attrs, **kwargs
)