summaryrefslogtreecommitdiff
path: root/chimere/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@peacefrogs.net>2012-08-27 20:50:33 +0200
committerÉtienne Loks <etienne.loks@peacefrogs.net>2012-08-27 20:50:33 +0200
commitcd396d71477a4f54d58fc9f6fdb42c898bf194e8 (patch)
treee50a86f0ce641e57e63828be0e4b010a5f6a7af5 /chimere/models.py
parent85a5db8f50d35f8a4004aba4fb4b2dc053f8ec7f (diff)
downloadChimère-cd396d71477a4f54d58fc9f6fdb42c898bf194e8.tar.bz2
Chimère-cd396d71477a4f54d58fc9f6fdb42c898bf194e8.zip
Add choicefield to available propertymodel - make propertymodel really dynamic (finaly!)
Diffstat (limited to 'chimere/models.py')
-rw-r--r--chimere/models.py35
1 files changed, 32 insertions, 3 deletions
diff --git a/chimere/models.py b/chimere/models.py
index 2ac1ac5..8f07576 100644
--- a/chimere/models.py
+++ b/chimere/models.py
@@ -994,11 +994,15 @@ class PropertyModel(models.Model):
TYPE = (('T', _('Text')),
('L', _('Long text')),
('P', _('Password')),
- ('D', _("Date")))
+ ('D', _("Date")),
+ ('C', _("Choices")),
+ )
TYPE_WIDGET = {'T':forms.TextInput,
'L':TextareaWidget,
'P':forms.PasswordInput,
- 'D':DatePickerWidget}
+ 'D':DatePickerWidget,
+ 'C':forms.Select
+ }
type = models.CharField(_(u"Type"), max_length=1, choices=TYPE)
def __unicode__(self):
return self.name
@@ -1011,6 +1015,19 @@ class PropertyModel(models.Model):
'''
return 'property_%d_%d' % (self.order, self.id)
+class PropertyModelChoice(models.Model):
+ '''Choices for property model
+ '''
+ propertymodel = models.ForeignKey(PropertyModel, related_name='choices',
+ verbose_name=_(u"Property model"))
+ value = models.CharField(_(u"Value"), max_length=150)
+ available = models.BooleanField(_(u"Available"), default=True)
+ def __unicode__(self):
+ return unicode(self.value)
+
+ class Meta:
+ verbose_name = _(u"Model property choice")
+
class Property(models.Model):
'''Property for a POI
'''
@@ -1019,7 +1036,14 @@ class Property(models.Model):
verbose_name=_(u"Property model"))
value = models.TextField(_(u"Value"))
def __unicode__(self):
- return "%s : %s" % (str(self.propertymodel), self.value)
+ if self.propertymodel.type == 'C':
+ try:
+ return unicode(PropertyModelChoice.objects.get(
+ pk=self.value).value)
+ except self.DoesNotExist:
+ return ""
+ return unicode(self.value)
+
class Meta:
verbose_name = _(u"Property")
@@ -1030,6 +1054,11 @@ class Property(models.Model):
return datetime.date(*[int(val) for val in self.value.split('-')])
except:
return ""
+ if self.propertymodel.type == 'C':
+ try:
+ return PropertyModelChoice.objects.get(pk=self.value)
+ except self.DoesNotExist:
+ return None
else:
return self.value