Created enum models

This commit is contained in:
David Gelvin 2010-09-10 15:57:44 +00:00
parent eacd87b156
commit 9361fbd7eb

View file

@ -25,6 +25,23 @@ class EavAttributeLabel(models.Model):
return self.name
class EnumValue(models.Model):
value = models.CharField(_(u"value"), db_index=True,
unique=True, max_length=50)
def __unicode__(self):
return self.value
class EnumGroup(models.Model):
name = models.CharField(_(u"name"), unique=True, max_length=100)
enums = models.ManyToManyField(EnumValue, verbose_name=_(u"enum group"))
def __unicode__(self):
return self.name
class EavAttribute(models.Model):
'''
The A model in E-A-V. This holds the 'concepts' along with the data type
@ -45,7 +62,7 @@ class EavAttribute(models.Model):
TYPE_DATE = 'date'
TYPE_BOOLEAN = 'bool'
TYPE_OBJECT = 'object'
#TYPE_MANY = 'many'
TYPE_ENUM = 'enum'
DATATYPE_CHOICES = (
(TYPE_TEXT, _(u"Text")),
@ -54,7 +71,7 @@ class EavAttribute(models.Model):
(TYPE_DATE, _(u"Date")),
(TYPE_BOOLEAN, _(u"True / False")),
(TYPE_OBJECT, _(u"Python Object")),
#(TYPE_MANY, _('multiple choices')),
(TYPE_ENUM, _(u"Multiple Choice")),
)
slug = EavSlugField(_(u"slug"), max_length=50, db_index=True,
@ -64,9 +81,13 @@ class EavAttribute(models.Model):
name = models.CharField(_(u"name"), max_length=100,
help_text=_(u"User-friendly attribute name"))
help_text = models.CharField(_(u"help text"), max_length=256,
blank=True, null=True,
help_text=_(u"Short description"))
description = models.CharField(_(u"description"), max_length=256,
blank=True, null=True,
help_text=_(u"Short description"))
@property
def help_text(self):
return self.description
datatype = EavDatatypeField(_(u"data type"), max_length=6,
choices=DATATYPE_CHOICES)
@ -78,6 +99,7 @@ class EavAttribute(models.Model):
labels = models.ManyToManyField(EavAttributeLabel,
verbose_name=_(u"labels"))
def save(self, *args, **kwargs):
if not self.slug:
self.slug = EavSlugField.create_slug_from_name(self.name)
@ -180,6 +202,7 @@ class EavValue(models.Model):
value_int = models.IntegerField(blank=True, null=True)
value_date = models.DateTimeField(blank=True, null=True)
value_bool = models.NullBooleanField(blank=True, null=True)
value_enum = models.ForeignKey(EnumValue, blank=True, null=True)
generic_value_id = models.IntegerField(blank=True, null=True)
generic_value_ct = models.ForeignKey(ContentType, blank=True, null=True,
@ -204,7 +227,6 @@ class EavValue(models.Model):
for field in self._meta.fields:
if field.name.startswith('value_') and field.null == True:
setattr(self, field.name, None)
self.value_bool = False
def _get_value(self):