Mercurial > personas_backend
view PersonasBackend/personas/forms.py @ 91:cad201e72d73
Added validation for the text_color and accent_color fields.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Thu, 27 Mar 2008 17:52:19 -0700 |
parents | 663f0410ff39 |
children | c5d76a735410 |
line wrap: on
line source
from django.newforms import ModelForm, ValidationError from PersonasBackend.personas import models def newforms_validator( func ): """ Turns a framework-independent validator that throws a ValueError into a newforms-style validator that throws a ValidationError. This is needed because Django's admin interface currently uses old-style forms. """ def wrapper( *args, **kwargs ): try: func( *args, **kwargs ) except ValueError, e: raise ValidationError( e.message ) return wrapper class PersonaForm( ModelForm ): """ Form given to normal users who don't have the permission to publish Personas. """ class Meta: model = models.Persona exclude = ["owner", "date_published", "popularity", "status"] @newforms_validator def _color_cleaner( self, value ): models.ensure_color_is_valid( value ) return value def clean_text_color( self ): return self._color_cleaner( self.data["text_color"] ) def clean_accent_color( self ): return self._color_cleaner( self.data["accent_color"] ) def clean( self ): form_data = dict( self.cleaned_data ) form_data.update( self.files ) newforms_validator( models.ensure_header_and_footer_are_valid )( form_data ) return self.cleaned_data