- Add a new 'system' type to dynamic forms, first one defined = 'tenant_make'
- Add active field to Specialist model - Improve Specialists view - Propagate make for Role Definition Specialist to Selection Specialist (make is defined at the role level) - Ensure a make with a given name can only be defined once
This commit is contained in:
@@ -3,12 +3,14 @@ from datetime import date
|
||||
from flask_wtf import FlaskForm
|
||||
from wtforms import (IntegerField, FloatField, BooleanField, StringField, TextAreaField, FileField,
|
||||
validators, ValidationError)
|
||||
from flask import current_app, request
|
||||
from flask import current_app, request, session
|
||||
import json
|
||||
|
||||
from wtforms.fields.choices import SelectField
|
||||
from wtforms.fields.datetime import DateField
|
||||
from wtforms.fields.simple import ColorField
|
||||
|
||||
from common.models.user import TenantMake
|
||||
from common.utils.config_field_types import TaggingFields, json_to_patterns, patterns_to_json
|
||||
|
||||
|
||||
@@ -300,6 +302,22 @@ class DynamicFormBase(FlaskForm):
|
||||
except Exception as e:
|
||||
raise ValidationError(f"Invalid ordered list: {str(e)}")
|
||||
|
||||
def _get_system_field(self, system_name):
|
||||
"""Get the field class and kwargs for a system field. Add system field cases as you need them."""
|
||||
field_class = None
|
||||
extra_classes = ''
|
||||
field_kwargs = {}
|
||||
match system_name:
|
||||
case 'tenant_make':
|
||||
field_class = SelectField
|
||||
tenant_id = session.get('tenant').get('id')
|
||||
makes = TenantMake.query.filter_by(tenant_id=tenant_id).all()
|
||||
choices = [(make.name, make.name) for make in makes]
|
||||
extra_classes = ''
|
||||
field_kwargs = {'choices': choices}
|
||||
|
||||
return field_class, extra_classes, field_kwargs
|
||||
|
||||
def add_dynamic_fields(self, collection_name, config, initial_data=None):
|
||||
"""Add dynamic fields to the form based on the configuration.
|
||||
|
||||
@@ -357,11 +375,12 @@ class DynamicFormBase(FlaskForm):
|
||||
extra_classes = ['monospace-text', 'pattern-input']
|
||||
field_kwargs = {}
|
||||
elif field_type == 'ordered_list':
|
||||
current_app.logger.debug(f"Adding ordered list field for {full_field_name}")
|
||||
field_class = OrderedListField
|
||||
extra_classes = ''
|
||||
list_type = field_def.get('list_type', '')
|
||||
field_kwargs = {'list_type': list_type}
|
||||
elif field_type == 'system':
|
||||
field_class, extra_classes, field_kwargs = self._get_system_field(field_def.get('system_name', ''))
|
||||
else:
|
||||
extra_classes = ''
|
||||
field_class = {
|
||||
|
||||
Reference in New Issue
Block a user