diff options
Diffstat (limited to 'tagging/forms.py')
-rw-r--r-- | tagging/forms.py | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/tagging/forms.py b/tagging/forms.py index e65aec4..a70ac6b 100644 --- a/tagging/forms.py +++ b/tagging/forms.py @@ -1,12 +1,28 @@ """ -Tagging components for Django's ``newforms`` form library. +Tagging components for Django's form library. """ from django import forms from django.utils.translation import ugettext as _ from tagging import settings +from tagging.models import Tag from tagging.utils import parse_tag_input +class AdminTagForm(forms.ModelForm): + class Meta: + model = Tag + + def clean_name(self): + value = self.cleaned_data['name'] + tag_names = parse_tag_input(value) + if len(tag_names) > 1: + raise ValidationError(_('Multiple tags were given.')) + elif len(tag_names[0]) > settings.MAX_TAG_LENGTH: + raise forms.ValidationError( + _('A tag may be no more than %s characters long.') % + settings.MAX_TAG_LENGTH) + return value + class TagField(forms.CharField): """ A ``CharField`` which validates that its input is a valid list of @@ -19,5 +35,6 @@ class TagField(forms.CharField): for tag_name in parse_tag_input(value): if len(tag_name) > settings.MAX_TAG_LENGTH: raise forms.ValidationError( - _('Each tag may be no more than %s characters long.') % settings.MAX_TAG_LENGTH) + _('Each tag may be no more than %s characters long.') % + settings.MAX_TAG_LENGTH) return value |