29 lines
1.1 KiB
Python
29 lines
1.1 KiB
Python
# Copyright The IETF Trust 2021, All Rights Reserved
|
|
# -*- coding: utf-8 -*-
|
|
|
|
# Taken from/inspired by
|
|
# https://stackoverflow.com/questions/55147169/django-admin-jsonfield-default-empty-dict-wont-save-in-admin
|
|
#
|
|
# JSONField should recognize {}, (), and [] as valid, non-empty JSON
|
|
# values. However, the base Field class excludes them
|
|
import jsonfield
|
|
|
|
from ietf.utils.fields import IETFJSONField as FormIETFJSONField
|
|
|
|
|
|
class IETFJSONField(jsonfield.JSONField):
|
|
form_class = FormIETFJSONField
|
|
|
|
def __init__(self, *args, empty_values=FormIETFJSONField.empty_values, accepted_empty_values=None, **kwargs):
|
|
if accepted_empty_values is None:
|
|
accepted_empty_values = []
|
|
self.empty_values = [x
|
|
for x in empty_values
|
|
if x not in accepted_empty_values]
|
|
super().__init__(*args, **kwargs)
|
|
|
|
def formfield(self, **kwargs):
|
|
if 'form_class' not in kwargs or issubclass(kwargs['form_class'], FormIETFJSONField):
|
|
kwargs.setdefault('empty_values', self.empty_values)
|
|
return super().formfield(**{**kwargs})
|