django-eav2/eav/widgets.py

24 lines
702 B
Python
Raw Normal View History

from django.core import validators
2021-10-16 17:43:20 +00:00
from django.core.exceptions import ValidationError
from django.forms.widgets import Textarea
2021-10-16 17:43:02 +00:00
EMPTY_VALUES = validators.EMPTY_VALUES + ('[]',)
class CSVWidget(Textarea):
is_hidden = False
def prep_value(self, value):
2021-10-16 17:43:02 +00:00
"""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)