X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/ed6b9876b7abff0b2dc6266d6f769c319f358a9c..7902f12cf4e054ee4dae904687ac97d5e2f7360a:/philo/models/fields/__init__.py diff --git a/philo/models/fields/__init__.py b/philo/models/fields/__init__.py index 1f9603e..0003575 100644 --- a/philo/models/fields/__init__.py +++ b/philo/models/fields/__init__.py @@ -5,15 +5,23 @@ from django.db import models from django.utils import simplejson as json from django.utils.text import capfirst from django.utils.translation import ugettext_lazy as _ + from philo.forms.fields import JSONFormField from philo.validators import TemplateValidator, json_validator +from philo.forms.widgets import EmbedWidget #from philo.models.fields.entities import * -class TemplateField(models.TextField): +class TemplateField(models.Field): + """A :class:`TextField` which is validated with a :class:`.TemplateValidator`. ``allow``, ``disallow``, and ``secure`` will be passed into the validator's construction.""" def __init__(self, allow=None, disallow=None, secure=True, *args, **kwargs): super(TemplateField, self).__init__(*args, **kwargs) self.validators.append(TemplateValidator(allow, disallow, secure)) + + def formfield(self, **kwargs): + defaults = {'widget': EmbedWidget} + defaults.update(kwargs) + return super(TemplateField, self).formfield(**defaults) class JSONDescriptor(object): @@ -40,6 +48,7 @@ class JSONDescriptor(object): class JSONField(models.TextField): + """A :class:`TextField` which stores its value on the model instance as a python object and stores its value in the database as JSON. Validated with :func:`.json_validator`.""" default_validators = [json_validator] def get_attname(self): @@ -68,6 +77,7 @@ class JSONField(models.TextField): class SlugMultipleChoiceField(models.Field): + """Stores a selection of multiple items with unique slugs in the form of a comma-separated list.""" __metaclass__ = models.SubfieldBase description = _("Comma-separated slug field")