def _process_widgets(form, widgets, modes, newFields): """Update the fields list with widgets """ for fieldName in newFields: fieldInstance = newFields[fieldName] baseName = _bn(fieldInstance) widgetName = widgets.get(baseName, None) widgetMode = modes.get(baseName, fieldInstance.mode) \ or form.mode \ or INPUT_MODE widgetFactory = None if widgetName is not None: if isinstance(widgetName, six.string_types): widgetFactory = resolveDottedName(widgetName) elif IFieldWidget.implementedBy(widgetName): widgetFactory = widgetName elif IParameterizedWidget.providedBy(widgetName): widgetFactory = widgetName if widgetFactory is not None: fieldInstance.widgetFactory[widgetMode] = widgetFactory if baseName in modes: newFields[fieldName].mode = widgetMode
def get_tagged_values(schemas, key): params = {} for schema in schemas: if not schema: continue tagged_values = mergedTaggedValueDict(schema, key) for field_name in schema: widget = tagged_values.get(field_name) if IParameterizedWidget.providedBy(widget) and widget.params: params[field_name] = widget.params.copy() for k, v in params[field_name].items(): if callable(v): params[field_name][k] = v() return params
def get_widget_params(schemas): params = {} for schema in schemas: if not schema: continue tagged_values = mergedTaggedValueDict(schema, WIDGETS_KEY) for field_name in schema: widget = tagged_values.get(field_name) if IParameterizedWidget.providedBy(widget) and widget.params: params[field_name] = {} for k, v in widget.params.items(): if callable(v): v = v() params[field_name][k] = v return params