diff options
| -rw-r--r-- | ishtar_common/migrations/0053_auto_20180523_1126.py | 43 | ||||
| -rw-r--r-- | ishtar_common/models.py | 29 | 
2 files changed, 70 insertions, 2 deletions
diff --git a/ishtar_common/migrations/0053_auto_20180523_1126.py b/ishtar_common/migrations/0053_auto_20180523_1126.py new file mode 100644 index 000000000..f776dce30 --- /dev/null +++ b/ishtar_common/migrations/0053_auto_20180523_1126.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-05-23 11:26 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + +    dependencies = [ +        ('ishtar_common', '0052_m2m_images_migrate_imports'), +    ] + +    operations = [ +        migrations.CreateModel( +            name='CustomFormJsonField', +            fields=[ +                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), +                ('order', models.IntegerField(default=1, verbose_name='Order')), +                ('custom_form', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='json_fields', to='ishtar_common.CustomForm')), +            ], +            options={ +                'verbose_name': 'Custom form - Json data field', +                'verbose_name_plural': 'Custom form - Json data fields', +            }, +        ), +        migrations.AddField( +            model_name='jsondatafield', +            name='value_type', +            field=models.CharField(choices=[(b'T', 'Text'), (b'LT', 'Long text'), (b'I', 'Integer'), (b'F', 'Float'), (b'D', 'Date'), (b'C', 'Choices')], default=b'T', max_length=10, verbose_name='Type'), +        ), +        migrations.AddField( +            model_name='customformjsonfield', +            name='json_field', +            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='custom_form_details', to='ishtar_common.JsonDataField'), +        ), +        migrations.AddField( +            model_name='jsondatafield', +            name='custom_forms', +            field=models.ManyToManyField(blank=True, through='ishtar_common.CustomFormJsonField', to='ishtar_common.CustomForm'), +        ), +    ] 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"),  | 
