summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py29
1 files changed, 27 insertions, 2 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index b4a385b4e..0900b2d9a 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -1020,6 +1020,16 @@ class JsonDataSection(models.Model):
return u"{} - {}".format(self.content_type, self.name)
+JSON_VALUE_TYPES = (
+ ('T', _(u"Text")),
+ ('LT', _(u"Long text")),
+ ('I', _(u"Integer")),
+ ('F', _(u"Float")),
+ ('D', _(u"Date")),
+ ('C', _(u"Choices")),
+)
+
+
class JsonDataField(models.Model):
name = models.CharField(_(u"Name"), max_length=200)
content_type = models.ForeignKey(ContentType)
@@ -1030,8 +1040,12 @@ class JsonDataField(models.Model):
u"'my_subkey' with data such as {'my_key': {'my_subkey': "
u"'value'}}, its value will be reached with my_key__my_subkey."))
display = models.BooleanField(_(u"Display"), default=True)
+ value_type = models.CharField(_(u"Type"), default="T", max_length=10,
+ choices=JSON_VALUE_TYPES)
order = models.IntegerField(_(u"Order"), default=10)
section = models.ForeignKey(JsonDataSection, blank=True, null=True)
+ custom_forms = models.ManyToManyField(
+ "CustomForm", blank=True, through="CustomFormJsonField")
class Meta:
verbose_name = _(u"Json data - Field")
@@ -1813,7 +1827,7 @@ class CustomForm(models.Model):
cls._register = {}
# ideally should be improved but only used in admin
from ishtar_common.admin import ISHTAR_FORMS
- from ishtar_common.forms import CustomForm
+ from ishtar_common.forms import CustomForm as CustomFormForm
for app_form in ISHTAR_FORMS:
for form in dir(app_form):
@@ -1822,7 +1836,7 @@ class CustomForm(models.Model):
continue
form = getattr(app_form, form)
if not inspect.isclass(form) \
- or not issubclass(form, CustomForm) \
+ or not issubclass(form, CustomFormForm) \
or not getattr(form, 'form_slug', None):
continue
cls._register[form.form_slug] = form
@@ -1844,6 +1858,17 @@ class ExcludedField(models.Model):
verbose_name_plural = _(u"Excluded fields")
+class CustomFormJsonField(models.Model):
+ custom_form = models.ForeignKey(CustomForm, related_name='json_fields')
+ json_field = models.ForeignKey(JsonDataField,
+ related_name='custom_form_details')
+ order = models.IntegerField(verbose_name=_(u"Order"), default=1)
+
+ class Meta:
+ verbose_name = _(u"Custom form - Json data field")
+ verbose_name_plural = _(u"Custom form - Json data fields")
+
+
class GlobalVar(models.Model, Cached):
slug = models.SlugField(_(u"Variable name"), unique=True)
description = models.TextField(_(u"Description of the variable"),