edgware/edgware/editor/fields.py

35 lines
997 B
Python

# Django Snippet from http://www.djangosnippets.org/snippets/1521/
import re
from django.forms import fields
from django.forms import ValidationError
from django.utils.encoding import smart_unicode
class HexColorField(fields.Field):
default_error_messages = {
'hex_error': u'This is an invalid color code. It must be a html hex color code e.g. #000000'
}
def clean(self, value):
super(HexColorField, self).clean(value)
if value in fields.EMPTY_VALUES:
return u''
value = smart_unicode(value)
value_length = len(value)
if value_length != 7 or not re.match('^\#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$', value):
raise ValidationError(self.error_messages['hex_error'])
return value
def widget_attrs(self, widget):
if isinstance(widget, (fields.TextInput)):
return {'maxlength': str(7)}
def __unicode__(self):
return self.value