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 )