diff options
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r-- | ishtar_common/models.py | 29 |
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"), |