- Add dynamic fields to DocumentVersion in case the Catalog requires it.
This commit is contained in:
@@ -48,10 +48,9 @@ class DynamicFormBase(FlaskForm):
|
||||
current_app.logger.debug(f"{field_name}: {field_def}")
|
||||
# Prefix the field name with the collection name
|
||||
full_field_name = f"{collection_name}_{field_name}"
|
||||
label = field_def.get('name')
|
||||
label = field_def.get('name', field_name)
|
||||
field_type = field_def.get('type')
|
||||
description = field_def.get('description', '')
|
||||
required = field_def.get('required', False)
|
||||
default = field_def.get('default')
|
||||
|
||||
# Determine standard validators
|
||||
@@ -90,8 +89,8 @@ class DynamicFormBase(FlaskForm):
|
||||
except (TypeError, ValueError) as e:
|
||||
current_app.logger.error(f"Error converting initial data to JSON: {e}")
|
||||
field_data = "{}"
|
||||
elif field_def.get('default') is not None:
|
||||
field_data = field_def.get('default')
|
||||
elif default is not None:
|
||||
field_data = default
|
||||
|
||||
# Create render_kw with classes and any other HTML attributes
|
||||
render_kw = {'class': extra_classes} if extra_classes else {}
|
||||
@@ -145,12 +144,16 @@ class DynamicFormBase(FlaskForm):
|
||||
def get_dynamic_data(self, collection_name):
|
||||
"""Retrieve the data from dynamic fields of a specific collection."""
|
||||
data = {}
|
||||
current_app.logger.debug(f"{collection_name} in {self.dynamic_fields}?")
|
||||
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]:
|
||||
current_app.logger.debug(f"{full_field_name}: {full_field_name}")
|
||||
original_field_name = full_field_name[prefix_length:]
|
||||
current_app.logger.debug(f"{original_field_name}: {original_field_name}")
|
||||
field = getattr(self, full_field_name)
|
||||
current_app.logger.debug(f"{field}: {field}")
|
||||
# Parse JSON for tagging_fields type
|
||||
if isinstance(field, TextAreaField) and field.data:
|
||||
try:
|
||||
@@ -207,4 +210,7 @@ def validate_tagging_fields(form, field):
|
||||
except json.JSONDecodeError:
|
||||
raise ValidationError("Invalid JSON format")
|
||||
except (TypeError, ValueError) as e:
|
||||
raise ValidationError(f"Invalid field definition: {str(e)}")
|
||||
raise ValidationError(f"Invalid field definition: {str(e)}")
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user