- Added permissions to the partner service configuration
- Corrected a nasty bug where dynamic boolean fields were not returned correctly
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
from flask_wtf import FlaskForm
|
||||
from wtforms import (IntegerField, FloatField, BooleanField, StringField, TextAreaField, FileField,
|
||||
validators, ValidationError)
|
||||
from flask import current_app
|
||||
from flask import current_app, request
|
||||
import json
|
||||
|
||||
from wtforms.fields.choices import SelectField
|
||||
@@ -56,13 +56,14 @@ class DynamicFormBase(FlaskForm):
|
||||
self.dynamic_fields = {}
|
||||
# Store formdata for later use
|
||||
self.formdata = formdata
|
||||
self.raw_formdata = request.form.to_dict()
|
||||
|
||||
def _create_field_validators(self, field_def):
|
||||
"""Create validators based on field definition"""
|
||||
validators_list = []
|
||||
|
||||
# Required validator
|
||||
if field_def.get('required', False):
|
||||
if field_def.get('required', False) and field_def.get('type', None) != 'boolean':
|
||||
validators_list.append(validators.DataRequired())
|
||||
else:
|
||||
validators_list.append(validators.Optional())
|
||||
@@ -343,12 +344,16 @@ class DynamicFormBase(FlaskForm):
|
||||
data = {}
|
||||
if collection_name not in self.dynamic_fields:
|
||||
return data
|
||||
|
||||
prefix_length = len(collection_name) + 1 # +1 for the underscore
|
||||
for full_field_name in self.dynamic_fields[collection_name]:
|
||||
original_field_name = full_field_name[prefix_length:]
|
||||
field = getattr(self, full_field_name)
|
||||
# Parse JSON for special field types
|
||||
if isinstance(field, (TaggingFieldsField, TaggingFieldsFilterField, DynamicArgumentsField)) and field.data:
|
||||
if field.type == 'BooleanField':
|
||||
data[original_field_name] = full_field_name in self.raw_formdata
|
||||
current_app.logger.debug(f"Value for {original_field_name} is {data[original_field_name]}")
|
||||
elif isinstance(field, (TaggingFieldsField, TaggingFieldsFilterField, DynamicArgumentsField)) and field.data:
|
||||
try:
|
||||
data[original_field_name] = json.loads(field.data)
|
||||
except json.JSONDecodeError:
|
||||
|
||||
Reference in New Issue
Block a user