django-eav2/eav/widgets.py

23 lines
705 B
Python

from django.forms.widgets import Textarea
from django.core.exceptions import ValidationError
from django.core import validators
EMPTY_VALUES = validators.EMPTY_VALUES + ('[]', )
class CSVWidget(Textarea):
is_hidden = False
def prep_value(self, value):
""" Prepare value before effectively render widget """
if value in EMPTY_VALUES:
return ""
elif isinstance(value, str):
return value
elif isinstance(value, list):
return ";".join(value)
raise ValidationError('Invalid format.')
def render(self, name, value, **kwargs):
value = self.prep_value(value)
return super().render(name, value, **kwargs)