from benefits import get_benefit_class
+import json
+
class SponsorshipBenefitInlineFormset(BaseInlineFormSet):
def clean(self):
for f in self.forms:
params = f.cleaned_data.get('class_parameters')
benefit = get_benefit_class(f.cleaned_data.get('benefit_class'))(self.instance, params)
if params == "" and benefit.default_params:
- f.cleaned_data['class_parameters'] = benefit.default_params
- f.instance.class_parameters = benefit.default_params
- params = benefit.default_params
+ dp = json.dumps(benefit.default_params)
+ f.cleaned_data['class_parameters'] = dp
+ f.instance.class_parameters = dp
+ params = dp
s = benefit.validate_params()
if s:
f._errors['class_parameters'] = ErrorList([s])
if params in ("","{}") and benefit.default_params:
# Need a copy of the local data to make it mutable and change our default
self.data = self.data.copy()
- self.data['class_parameters'] = benefit.default_params
- self.instance.class_parameters = benefit.default_params
- benefit.params = benefit.default_params
+ dp = json.dumps(benefit.default_params)
+ self.data['class_parameters'] = dp
+ self.instance.class_parameters = dp
+ benefit.params = dp
s = benefit.validate_params()
if s:
self.add_error('class_parameters', s)
class BaseBenefit(object):
- default_params = ''
+ default_params = {}
def __init__(self, level, params):
self.level = level
self.params = params
class EntryVouchers(BaseBenefit):
description = "Claim entry vouchers"
- default_params = '{"num": 1, "type": ""}'
+ default_params = {"num": 1, "type": ""}
def validate_params(self):
try:
_validate_params(self.level, self.params)
class ImageUpload(BaseBenefit):
description = 'Require uploaded image'
- default_params = '{"format": "png", "xres": 0, "yres": 0, "transparent": 0}'
+ default_params = {"format": "png", "xres": 0, "yres": 0, "transparent": 0}
def validate_params(self):
try:
_validate_params(self.params)
class ProvideText(BaseBenefit):
description = "Provide text string"
- default_params = '{"minwords": 0, "maxwords": 0, "minchars": 0, "maxchars": 0}'
+ default_params = {"minwords": 0, "maxwords": 0, "minchars": 0, "maxchars": 0}
def validate_params(self):
try:
_validate_params(self.params)