diff --git a/combo/apps/dataviz/migrations/0010_auto_20190328_1111.py b/combo/apps/dataviz/migrations/0010_auto_20190328_1111.py
index 808cdbed..37440ef9 100644
--- a/combo/apps/dataviz/migrations/0010_auto_20190328_1111.py
+++ b/combo/apps/dataviz/migrations/0010_auto_20190328_1111.py
@@ -3,7 +3,7 @@
from __future__ import unicode_literals
import django.db.models.deletion
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -39,7 +39,7 @@ class Migration(migrations.Migration):
('last_update_timestamp', models.DateTimeField(auto_now=True)),
('data_reference', models.CharField(max_length=150, verbose_name='Data')),
('title', models.CharField(blank=True, max_length=150, verbose_name='Title')),
- ('cached_json', jsonfield.fields.JSONField(blank=True, default=dict)),
+ ('cached_json', JSONField(blank=True, default=dict)),
(
'chart_type',
models.CharField(
diff --git a/combo/apps/dataviz/migrations/0015_auto_20201202_1424.py b/combo/apps/dataviz/migrations/0015_auto_20201202_1424.py
index f578abda..cb9c0dd5 100644
--- a/combo/apps/dataviz/migrations/0015_auto_20201202_1424.py
+++ b/combo/apps/dataviz/migrations/0015_auto_20201202_1424.py
@@ -2,7 +2,7 @@
# Generated by Django 1.11.29 on 2020-12-02 13:24
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations
@@ -16,11 +16,11 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='chartngcell',
name='filter_params',
- field=jsonfield.fields.JSONField(default=dict),
+ field=JSONField(default=dict),
),
migrations.AddField(
model_name='statistic',
name='filters',
- field=jsonfield.fields.JSONField(default=list),
+ field=JSONField(default=list),
),
]
diff --git a/combo/apps/dataviz/models.py b/combo/apps/dataviz/models.py
index ceda290b..fc397ca5 100644
--- a/combo/apps/dataviz/models.py
+++ b/combo/apps/dataviz/models.py
@@ -24,6 +24,7 @@ import pygal
import pygal.util
from dateutil.relativedelta import relativedelta
from django.conf import settings
+from django.contrib.postgres.fields import JSONField
from django.db import models, transaction
from django.template.defaultfilters import date as format_date
from django.urls import reverse
@@ -33,7 +34,6 @@ from django.utils.encoding import force_text
from django.utils.translation import gettext
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ungettext
-from jsonfield import JSONField
from requests.exceptions import HTTPError, RequestException
from combo.data.library import register_cell_class
diff --git a/combo/apps/lingo/migrations/0001_initial.py b/combo/apps/lingo/migrations/0001_initial.py
index 3daaf8b1..01f77ab9 100644
--- a/combo/apps/lingo/migrations/0001_initial.py
+++ b/combo/apps/lingo/migrations/0001_initial.py
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-import jsonfield.fields
from django.conf import settings
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -84,9 +84,7 @@ class Migration(migrations.Migration):
),
(
'service_options',
- jsonfield.fields.JSONField(
- default=dict, verbose_name='Payment Service Options', blank=True
- ),
+ JSONField(default=dict, verbose_name='Payment Service Options', blank=True),
),
],
options={
diff --git a/combo/apps/lingo/migrations/0002_transaction.py b/combo/apps/lingo/migrations/0002_transaction.py
index b770560c..25f74677 100644
--- a/combo/apps/lingo/migrations/0002_transaction.py
+++ b/combo/apps/lingo/migrations/0002_transaction.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -21,7 +21,7 @@ class Migration(migrations.Migration):
),
('start_date', models.DateTimeField(auto_now_add=True)),
('end_date', models.DateTimeField(null=True)),
- ('bank_data', jsonfield.fields.JSONField(default=dict, blank=True)),
+ ('bank_data', JSONField(default=dict, blank=True)),
('order_id', models.CharField(max_length=200)),
('items', models.ManyToManyField(to='lingo.BasketItem', blank=True)),
],
diff --git a/combo/apps/lingo/migrations/0021_transactionoperation.py b/combo/apps/lingo/migrations/0021_transactionoperation.py
index 0773fb21..d4447368 100644
--- a/combo/apps/lingo/migrations/0021_transactionoperation.py
+++ b/combo/apps/lingo/migrations/0021_transactionoperation.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -28,7 +28,7 @@ class Migration(migrations.Migration):
),
('amount', models.DecimalField(max_digits=8, decimal_places=2)),
('creation_date', models.DateTimeField(auto_now_add=True)),
- ('bank_result', jsonfield.fields.JSONField(default=dict, blank=True)),
+ ('bank_result', JSONField(default=dict, blank=True)),
('transaction', models.ForeignKey(to='lingo.Transaction', on_delete=models.CASCADE)),
],
),
diff --git a/combo/apps/lingo/migrations/0029_auto_20170528_1334.py b/combo/apps/lingo/migrations/0029_auto_20170528_1334.py
index 68accc08..5b15cadf 100644
--- a/combo/apps/lingo/migrations/0029_auto_20170528_1334.py
+++ b/combo/apps/lingo/migrations/0029_auto_20170528_1334.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -24,7 +24,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='basketitem',
name='request_data',
- field=jsonfield.fields.JSONField(default=dict, blank=True),
+ field=JSONField(default=dict, blank=True),
),
migrations.AddField(
model_name='regie',
diff --git a/combo/apps/lingo/migrations/0034_auto_20190426_1159.py b/combo/apps/lingo/migrations/0034_auto_20190426_1159.py
index 356ac60f..ca69d5b2 100644
--- a/combo/apps/lingo/migrations/0034_auto_20190426_1159.py
+++ b/combo/apps/lingo/migrations/0034_auto_20190426_1159.py
@@ -3,7 +3,7 @@
from __future__ import unicode_literals
import django.db.models.deletion
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -50,9 +50,7 @@ class Migration(migrations.Migration):
),
(
'service_options',
- jsonfield.fields.JSONField(
- blank=True, default=dict, verbose_name='Payment Service Options'
- ),
+ JSONField(blank=True, default=dict, verbose_name='Payment Service Options'),
),
],
),
diff --git a/combo/apps/lingo/migrations/0037_regie_transaction_options.py b/combo/apps/lingo/migrations/0037_regie_transaction_options.py
index c84db461..e5eb3522 100644
--- a/combo/apps/lingo/migrations/0037_regie_transaction_options.py
+++ b/combo/apps/lingo/migrations/0037_regie_transaction_options.py
@@ -2,7 +2,7 @@
# Generated by Django 1.11.18 on 2019-05-14 12:02
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
from combo.apps.lingo.models import SERVICES
@@ -18,7 +18,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='regie',
name='transaction_options',
- field=jsonfield.fields.JSONField(blank=True, default=dict, verbose_name='Transaction Options'),
+ field=JSONField(blank=True, default=dict, verbose_name='Transaction Options'),
),
migrations.AlterField(
model_name='paymentbackend',
diff --git a/combo/apps/lingo/models.py b/combo/apps/lingo/models.py
index 65b58a06..0f376b4b 100644
--- a/combo/apps/lingo/models.py
+++ b/combo/apps/lingo/models.py
@@ -27,6 +27,7 @@ import eopayment
from dateutil import parser
from django import template
from django.conf import settings
+from django.contrib.postgres.fields import JSONField
from django.core import serializers
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
from django.core.mail import EmailMultiAlternatives
@@ -42,7 +43,6 @@ from django.utils.formats import localize
from django.utils.six.moves.urllib import parse as urlparse
from django.utils.timezone import make_aware, now, utc
from django.utils.translation import ugettext_lazy as _
-from jsonfield import JSONField
from requests import RequestException
from combo.apps.notifications.models import Notification
@@ -150,7 +150,7 @@ class PaymentBackend(models.Model):
help_text=_('The identifier is used in webservice calls and callback URLs for the payment backend.'),
)
service = models.CharField(verbose_name=_('Payment Service'), max_length=64, choices=SERVICES)
- service_options = JSONField(blank=True, verbose_name=_('Payment Service Options'))
+ service_options = JSONField(blank=True, default=dict, verbose_name=_('Payment Service Options'))
objects = PaymentBackendManager()
@@ -304,7 +304,7 @@ class Regie(models.Model):
payment_backend = models.ForeignKey(
PaymentBackend, on_delete=models.CASCADE, verbose_name=_('Payment backend')
)
- transaction_options = JSONField(blank=True, verbose_name=_('Transaction Options'))
+ transaction_options = JSONField(blank=True, default=dict, verbose_name=_('Transaction Options'))
can_pay_only_one_basket_item = models.BooleanField(
default=True, verbose_name=_('Basket items must be paid individually')
)
@@ -621,7 +621,7 @@ class BasketItem(models.Model):
source_url = models.URLField(_('Source URL'), blank=True)
details = models.TextField(verbose_name=_('Details'), blank=True)
amount = models.DecimalField(verbose_name=_('Amount'), decimal_places=2, max_digits=8)
- request_data = JSONField(blank=True)
+ request_data = JSONField(blank=True, default=dict)
extra_fee = models.BooleanField(default=False)
user_cancellable = models.BooleanField(default=True)
creation_date = models.DateTimeField(auto_now_add=True)
@@ -812,7 +812,7 @@ class Transaction(models.Model):
to_be_paid_remote_items = models.CharField(max_length=512, null=True)
start_date = models.DateTimeField(auto_now_add=True)
end_date = models.DateTimeField(null=True)
- bank_data = JSONField(blank=True)
+ bank_data = JSONField(blank=True, default=dict)
order_id = models.CharField(max_length=200)
bank_transaction_id = models.CharField(max_length=200, null=True)
bank_transaction_date = models.DateTimeField(blank=True, null=True)
@@ -1035,7 +1035,7 @@ class TransactionOperation(models.Model):
kind = models.CharField(max_length=65, choices=OPERATIONS)
amount = models.DecimalField(decimal_places=2, max_digits=8)
creation_date = models.DateTimeField(auto_now_add=True)
- bank_result = JSONField(blank=True)
+ bank_result = JSONField(blank=True, default=dict)
@register_cell_class
diff --git a/combo/apps/pwa/migrations/0001_initial.py b/combo/apps/pwa/migrations/0001_initial.py
index 4e9c24a9..328f9af4 100644
--- a/combo/apps/pwa/migrations/0001_initial.py
+++ b/combo/apps/pwa/migrations/0001_initial.py
@@ -3,8 +3,8 @@
from __future__ import unicode_literals
import django.db.models.deletion
-import jsonfield.fields
from django.conf import settings
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -24,7 +24,7 @@ class Migration(migrations.Migration):
'id',
models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
),
- ('subscription_info', jsonfield.fields.JSONField(default=dict)),
+ ('subscription_info', JSONField(default=dict)),
('creation_timestamp', models.DateTimeField(auto_now_add=True)),
(
'user',
diff --git a/combo/apps/pwa/migrations/0006_auto_20190628_1042.py b/combo/apps/pwa/migrations/0006_auto_20190628_1042.py
index 6f08763a..d3aecb28 100644
--- a/combo/apps/pwa/migrations/0006_auto_20190628_1042.py
+++ b/combo/apps/pwa/migrations/0006_auto_20190628_1042.py
@@ -2,7 +2,7 @@
# Generated by Django 1.11.12 on 2019-06-28 08:42
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -23,6 +23,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='pwasettings',
name='push_notifications_infos',
- field=jsonfield.fields.JSONField(blank=True, default=dict),
+ field=JSONField(blank=True, default=dict),
),
]
diff --git a/combo/apps/pwa/models.py b/combo/apps/pwa/models.py
index de606045..5658e19c 100644
--- a/combo/apps/pwa/models.py
+++ b/combo/apps/pwa/models.py
@@ -21,6 +21,7 @@ import json
import os
from django.conf import settings
+from django.contrib.postgres.fields import JSONField
from django.core import serializers
from django.core.files.base import ContentFile
from django.core.files.storage import default_storage
@@ -29,7 +30,6 @@ from django.utils import six
from django.utils.encoding import force_bytes, force_text
from django.utils.six import BytesIO
from django.utils.translation import ugettext_lazy as _
-from jsonfield import JSONField
from py_vapid import Vapid
from combo import utils
@@ -57,7 +57,7 @@ class PwaSettings(models.Model):
push_notifications = models.BooleanField(
verbose_name=_('Enable subscription to push notifications'), default=False
)
- push_notifications_infos = JSONField(blank=True)
+ push_notifications_infos = JSONField(blank=True, default=dict)
last_update_timestamp = models.DateTimeField(auto_now=True)
def save(self, **kwargs):
@@ -194,5 +194,5 @@ class PwaNavigationEntry(models.Model):
class PushSubscription(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
- subscription_info = JSONField()
+ subscription_info = JSONField(default=dict)
creation_timestamp = models.DateTimeField(auto_now_add=True)
diff --git a/combo/apps/search/migrations/0002_auto_20180720_1511.py b/combo/apps/search/migrations/0002_auto_20180720_1511.py
index 73bc1669..c9be4d99 100644
--- a/combo/apps/search/migrations/0002_auto_20180720_1511.py
+++ b/combo/apps/search/migrations/0002_auto_20180720_1511.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations
@@ -15,6 +15,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='searchcell',
name='_search_services',
- field=jsonfield.fields.JSONField(default=dict, verbose_name='Search Services', blank=True),
+ field=JSONField(default=dict, verbose_name='Search Services', blank=True),
),
]
diff --git a/combo/apps/search/models.py b/combo/apps/search/models.py
index 19279ea8..7d14b56c 100644
--- a/combo/apps/search/models.py
+++ b/combo/apps/search/models.py
@@ -18,6 +18,7 @@ from django import template
from django.contrib.auth.models import Group
from django.contrib.contenttypes import fields
from django.contrib.contenttypes.models import ContentType
+from django.contrib.postgres.fields import JSONField
from django.core.exceptions import PermissionDenied
from django.db import models
from django.http import HttpResponse
@@ -26,7 +27,6 @@ from django.template import RequestContext, Template
from django.utils.functional import cached_property
from django.utils.http import quote
from django.utils.translation import ugettext_lazy as _
-from jsonfield import JSONField
from combo.data.library import register_cell_class
from combo.data.models import CellBase, Page
diff --git a/combo/apps/wcs/forms.py b/combo/apps/wcs/forms.py
index d6f75df1..8bd741c7 100644
--- a/combo/apps/wcs/forms.py
+++ b/combo/apps/wcs/forms.py
@@ -14,6 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
+import json
+
from django import forms
from django.utils.datastructures import MultiValueDict
from django.utils.translation import ugettext_lazy as _
@@ -119,14 +121,9 @@ class WcsFormsOfCategoryCellForm(forms.ModelForm):
class CategoriesSelectMultiple(forms.SelectMultiple):
def format_value(self, value):
- # this converts data dictionary to list, for django >=1.11
+ value = json.loads(value)
return super(CategoriesSelectMultiple, self).format_value(value.get('data') or [])
- def render_options(self, choices, value):
- # this converts data dictionary to list, for django <1.11
- value = value.get('data') or []
- return super(CategoriesSelectMultiple, self).render_options(choices, value)
-
def value_from_datadict(self, data, files, name):
if isinstance(data, MultiValueDict):
return {'data': data.getlist(name)}
diff --git a/combo/apps/wcs/migrations/0008_wcsformcell_cached_json.py b/combo/apps/wcs/migrations/0008_wcsformcell_cached_json.py
index 6e7353dd..dc97fcf7 100644
--- a/combo/apps/wcs/migrations/0008_wcsformcell_cached_json.py
+++ b/combo/apps/wcs/migrations/0008_wcsformcell_cached_json.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -15,7 +15,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='wcsformcell',
name='cached_json',
- field=jsonfield.fields.JSONField(default=dict, blank=True),
+ field=JSONField(default=dict, blank=True),
preserve_default=True,
),
]
diff --git a/combo/apps/wcs/migrations/0012_wcsformsofcategorycell_manual_order.py b/combo/apps/wcs/migrations/0012_wcsformsofcategorycell_manual_order.py
index f8ef98e6..6c539535 100644
--- a/combo/apps/wcs/migrations/0012_wcsformsofcategorycell_manual_order.py
+++ b/combo/apps/wcs/migrations/0012_wcsformsofcategorycell_manual_order.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -15,7 +15,7 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='wcsformsofcategorycell',
name='manual_order',
- field=jsonfield.fields.JSONField(
+ field=JSONField(
default=dict,
help_text='Use drag and drop to reorder forms',
verbose_name='Manual Order',
diff --git a/combo/apps/wcs/migrations/0015_wcscurrentformscell_categories.py b/combo/apps/wcs/migrations/0015_wcscurrentformscell_categories.py
index 081c1e68..818631e8 100644
--- a/combo/apps/wcs/migrations/0015_wcscurrentformscell_categories.py
+++ b/combo/apps/wcs/migrations/0015_wcscurrentformscell_categories.py
@@ -2,7 +2,7 @@
# Generated by Django 1.11.8 on 2018-01-21 12:50
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations
@@ -16,6 +16,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='wcscurrentformscell',
name='categories',
- field=jsonfield.fields.JSONField(blank=True, default=dict, verbose_name='Categories'),
+ field=JSONField(blank=True, default=dict, verbose_name='Categories'),
),
]
diff --git a/combo/apps/wcs/migrations/0018_wcscurrentdraftscell_categories.py b/combo/apps/wcs/migrations/0018_wcscurrentdraftscell_categories.py
index a6d9b949..9ebd2376 100644
--- a/combo/apps/wcs/migrations/0018_wcscurrentdraftscell_categories.py
+++ b/combo/apps/wcs/migrations/0018_wcscurrentdraftscell_categories.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations
@@ -15,6 +15,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='wcscurrentdraftscell',
name='categories',
- field=jsonfield.fields.JSONField(blank=True, default=dict, verbose_name='Categories'),
+ field=JSONField(blank=True, default=dict, verbose_name='Categories'),
),
]
diff --git a/combo/apps/wcs/migrations/0021_card.py b/combo/apps/wcs/migrations/0021_card.py
index a6ccabfa..73773be6 100644
--- a/combo/apps/wcs/migrations/0021_card.py
+++ b/combo/apps/wcs/migrations/0021_card.py
@@ -2,7 +2,7 @@
from __future__ import unicode_literals
import django.db.models.deletion
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
import combo.apps.wcs.models
@@ -41,7 +41,7 @@ class Migration(migrations.Migration):
('last_update_timestamp', models.DateTimeField(auto_now=True)),
('carddef_reference', models.CharField(max_length=150, verbose_name='Card Model')),
('cached_title', models.CharField(max_length=150, verbose_name='Title')),
- ('cached_json', jsonfield.fields.JSONField(blank=True, default=dict)),
+ ('cached_json', JSONField(blank=True, default=dict)),
('groups', models.ManyToManyField(blank=True, to='auth.Group', verbose_name='Groups')),
('page', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='data.Page')),
],
diff --git a/combo/apps/wcs/migrations/0025_submission_categories.py b/combo/apps/wcs/migrations/0025_submission_categories.py
index 29c5ed90..ebc46d4e 100644
--- a/combo/apps/wcs/migrations/0025_submission_categories.py
+++ b/combo/apps/wcs/migrations/0025_submission_categories.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations
@@ -15,6 +15,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='backofficesubmissioncell',
name='categories',
- field=jsonfield.fields.JSONField(blank=True, default=dict, verbose_name='Categories'),
+ field=JSONField(blank=True, default=dict, verbose_name='Categories'),
),
]
diff --git a/combo/apps/wcs/migrations/0027_careforms_categories.py b/combo/apps/wcs/migrations/0027_careforms_categories.py
index 07cd3910..e17ca475 100644
--- a/combo/apps/wcs/migrations/0027_careforms_categories.py
+++ b/combo/apps/wcs/migrations/0027_careforms_categories.py
@@ -1,4 +1,4 @@
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations
@@ -12,6 +12,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='wcscareformscell',
name='categories',
- field=jsonfield.fields.JSONField(blank=True, default=dict, verbose_name='Categories'),
+ field=JSONField(blank=True, default=dict, verbose_name='Categories'),
),
]
diff --git a/combo/apps/wcs/models.py b/combo/apps/wcs/models.py
index 60f15353..9fc58f27 100644
--- a/combo/apps/wcs/models.py
+++ b/combo/apps/wcs/models.py
@@ -21,12 +21,12 @@ import copy
import logging
from django.conf import settings
+from django.contrib.postgres.fields import JSONField
from django.db import models
from django.forms import Select
from django.forms import models as model_forms
from django.utils.text import slugify
from django.utils.translation import ugettext_lazy as _
-from jsonfield import JSONField
from requests.exceptions import RequestException
from combo import utils
@@ -66,7 +66,7 @@ class WcsFormCell(CellBase):
cached_title = models.CharField(_('Title'), max_length=150)
cached_url = models.URLField(_('URL'))
- cached_json = JSONField(blank=True)
+ cached_json = JSONField(blank=True, default=dict)
template_name = 'combo/wcs/form.html'
add_as_link_label = _('add a form link')
@@ -454,7 +454,7 @@ class CategoriesFilteringMixin(object):
class WcsCurrentFormsCell(CategoriesValidityMixin, CategoriesFilteringMixin, WcsUserDataBaseCell):
variable_name = 'user_forms'
- categories = JSONField(_('Categories'), blank=True)
+ categories = JSONField(_('Categories'), blank=True, default=dict)
current_forms = models.BooleanField(_('Current Forms'), default=True)
done_forms = models.BooleanField(_('Done Forms'), default=False)
include_drafts = models.BooleanField(_('Include drafts'), default=False)
@@ -545,7 +545,7 @@ class WcsCurrentDraftsCell(CategoriesValidityMixin, CategoriesFilteringMixin, Wc
variable_name = 'current_drafts'
template_name = 'combo/wcs/current_drafts.html'
- categories = JSONField(_('Categories'), blank=True)
+ categories = JSONField(_('Categories'), blank=True, default=dict)
class Meta:
verbose_name = _('Current Drafts')
@@ -600,7 +600,10 @@ class WcsFormsOfCategoryCell(WcsCommonCategoryCell, WcsBlurpMixin):
],
)
manual_order = JSONField(
- blank=True, verbose_name=_('Manual Order'), help_text=_('Use drag and drop to reorder forms')
+ blank=True,
+ default=dict,
+ verbose_name=_('Manual Order'),
+ help_text=_('Use drag and drop to reorder forms'),
)
limit = models.PositiveSmallIntegerField(_('Limit'), null=True, blank=True)
@@ -709,7 +712,7 @@ class WcsFormsOfCategoryCell(WcsCommonCategoryCell, WcsBlurpMixin):
@register_cell_class
class WcsCareFormsCell(CategoriesValidityMixin, CategoriesFilteringMixin, WcsDataBaseCell):
- categories = JSONField(_('Categories'), blank=True)
+ categories = JSONField(_('Categories'), blank=True, default=dict)
api_url = '/api/forms/?limit=10'
variable_name = 'care_forms'
@@ -889,7 +892,7 @@ class WcsCardInfosCell(CardMixin, CellBase):
without_user = models.BooleanField(_('Ignore the logged-in user'), default=False)
cached_title = models.CharField(_('Title'), max_length=150)
- cached_json = JSONField(blank=True)
+ cached_json = JSONField(blank=True, default=dict)
is_enabled = classmethod(is_wcs_enabled)
@@ -1027,7 +1030,7 @@ class BackofficeSubmissionCell(CategoriesValidityMixin, CategoriesFilteringMixin
cache_duration = 600
user_dependant = True
- categories = JSONField(_('Categories'), blank=True)
+ categories = JSONField(_('Categories'), blank=True, default=dict)
class Meta:
verbose_name = _('Backoffice Submission')
diff --git a/combo/data/management/commands/ensure_jsonb.py b/combo/data/management/commands/ensure_jsonb.py
index b5e0d1b6..8d6738f2 100644
--- a/combo/data/management/commands/ensure_jsonb.py
+++ b/combo/data/management/commands/ensure_jsonb.py
@@ -15,9 +15,9 @@
# along with this program. If not, see .
from django.apps import apps
+from django.contrib.postgres.fields import JSONField
from django.core.management.base import BaseCommand, CommandError
from django.db import connection
-from jsonfield import JSONField
class Command(BaseCommand):
diff --git a/combo/data/migrations/0013_parameterscell.py b/combo/data/migrations/0013_parameterscell.py
index 130f5ed8..6832c68f 100644
--- a/combo/data/migrations/0013_parameterscell.py
+++ b/combo/data/migrations/0013_parameterscell.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -33,7 +33,7 @@ class Migration(migrations.Migration):
('empty_label', models.CharField(default=b'---', max_length=64, verbose_name='Empty label')),
(
'parameters',
- jsonfield.fields.JSONField(
+ JSONField(
default=dict,
help_text='Must be a JSON list, containing dictionaries with 3 keys: name, value and optionnally roles; name must be a string, value must be a dictionary and roles must a list of role names. Role names limit the visibility of the choice.',
verbose_name='Parameters',
diff --git a/combo/data/migrations/0024_configjsoncell.py b/combo/data/migrations/0024_configjsoncell.py
index 8e2e4d7c..330f6132 100644
--- a/combo/data/migrations/0024_configjsoncell.py
+++ b/combo/data/migrations/0024_configjsoncell.py
@@ -1,7 +1,7 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -36,7 +36,7 @@ class Migration(migrations.Migration):
),
('last_update_timestamp', models.DateTimeField(auto_now=True)),
('key', models.CharField(max_length=50)),
- ('parameters', jsonfield.fields.JSONField(default=dict, blank=True)),
+ ('parameters', JSONField(default=dict, blank=True)),
('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
],
diff --git a/combo/data/migrations/0033_auto_20180401_1300.py b/combo/data/migrations/0033_auto_20180401_1300.py
index 99813c28..b74ce64d 100644
--- a/combo/data/migrations/0033_auto_20180401_1300.py
+++ b/combo/data/migrations/0033_auto_20180401_1300.py
@@ -3,8 +3,8 @@
from __future__ import unicode_literals
import django.db.models.deletion
-import jsonfield.fields
from django.conf import settings
+from django.contrib.postgres.fields import JSONField
from django.db import migrations, models
@@ -25,7 +25,7 @@ class Migration(migrations.Migration):
),
('timestamp', models.DateTimeField(auto_now_add=True)),
('comment', models.TextField(blank=True, null=True)),
- ('serialization', jsonfield.fields.JSONField(blank=True, default=dict)),
+ ('serialization', JSONField(blank=True, default=dict)),
(
'page',
models.ForeignKey(
diff --git a/combo/data/migrations/0035_page_related_cells.py b/combo/data/migrations/0035_page_related_cells.py
index 3b26ab9e..530ff26d 100644
--- a/combo/data/migrations/0035_page_related_cells.py
+++ b/combo/data/migrations/0035_page_related_cells.py
@@ -2,7 +2,7 @@
# Generated by Django 1.11.12 on 2018-06-02 11:03
from __future__ import unicode_literals
-import jsonfield.fields
+from django.contrib.postgres.fields import JSONField
from django.db import migrations
@@ -16,6 +16,6 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name='page',
name='related_cells',
- field=jsonfield.fields.JSONField(blank=True, default=dict),
+ field=JSONField(blank=True, default=dict),
),
]
diff --git a/combo/data/models.py b/combo/data/models.py
index 6c12fa3f..5fdc006f 100644
--- a/combo/data/models.py
+++ b/combo/data/models.py
@@ -34,6 +34,7 @@ from django.contrib import messages
from django.contrib.auth.models import Group
from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
from django.contrib.contenttypes.models import ContentType
+from django.contrib.postgres.fields import JSONField
from django.core import serializers
from django.core.cache import cache
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied, ValidationError
@@ -54,7 +55,6 @@ from django.utils.six.moves.urllib import parse as urlparse
from django.utils.text import slugify
from django.utils.timezone import now
from django.utils.translation import ugettext_lazy as _
-from jsonfield import JSONField
from combo import utils
from combo.utils import NothingInCacheException
@@ -209,7 +209,7 @@ class Page(models.Model):
)
# keep a cached list of cell types that are used in the page.
- related_cells = JSONField(blank=True)
+ related_cells = JSONField(blank=True, default=dict)
_level = None
@@ -614,7 +614,7 @@ class PageSnapshot(models.Model):
timestamp = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
comment = models.TextField(blank=True, null=True)
- serialization = JSONField(blank=True)
+ serialization = JSONField(blank=True, default=dict)
class Meta:
ordering = ('-timestamp',)
@@ -1959,7 +1959,7 @@ class ConfigJsonCell(JsonCellBase):
objects = ConfigJsonCellManager()
key = models.CharField(max_length=50)
- parameters = JSONField(blank=True)
+ parameters = JSONField(blank=True, default=dict)
@classmethod
def get_cell_types(cls):
diff --git a/combo/utils/forms.py b/combo/utils/forms.py
index d95b5d8a..ea4d4fb9 100644
--- a/combo/utils/forms.py
+++ b/combo/utils/forms.py
@@ -14,6 +14,8 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see .
+import json
+
from django import forms
from django.utils.datastructures import MultiValueDict
from django.utils.safestring import mark_safe
@@ -31,6 +33,7 @@ class MultiSortWidget(forms.SelectMultiple):
# reorder choices to get them in the current value order
self_choices = self.choices[:]
choices_dict = dict(self_choices)
+ value = json.loads(value)
if value:
for option in reversed(value.get('data')):
if option not in choices_dict:
diff --git a/requirements.txt b/requirements.txt
index ed4d9ace..5310548c 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -2,7 +2,6 @@ Django>=1.8, <1.12
-e git+http://git.entrouvert.org/debian/django-ckeditor.git#egg=django_ckeditor
gadjo
feedparser
-django-jsonfield
requests
XStatic-Leaflet
XStatic_OpenSans
diff --git a/setup.py b/setup.py
index 0726a4a3..4567331f 100644
--- a/setup.py
+++ b/setup.py
@@ -164,7 +164,6 @@ setup(
'django-ckeditor<4.5.4',
'gadjo>=0.53',
'feedparser<6' if sys.version_info < (3, 9) else 'feedparser>=6',
- 'django-jsonfield',
'requests',
'XStatic-Leaflet',
'XStatic-Leaflet-GestureHandling',