def OptgroupFieldWidget(field, request):
    """Factory for OptgroupWidget."""
    widget = FieldWidget(field, OptgroupWidget(request))
    if hasattr(field, "value_type"):
        widget.multiple = getMultiAdapter((field, field.value_type, request), interfaces.IFieldWidget).multiple
    else:
        widget.multiple = getMultiAdapter((field, request), interfaces.IFieldWidget).multiple
    return widget
def OptgroupFieldWidget(field, request):
    """Factory for OptgroupWidget."""
    widget = FieldWidget(field, OptgroupWidget(request))
    if hasattr(field, 'value_type'):
        widget.multiple = getMultiAdapter((field, field.value_type, request),
                                          interfaces.IFieldWidget).multiple
    else:
        widget.multiple = getMultiAdapter((field, request),
                                          interfaces.IFieldWidget).multiple
    return widget
def GroupedSelectFieldWidget(field, request):
    """IFieldWidget factory for SelectWidget."""
    widget = FieldWidget(field, GroupedSelectWidget(request))
    widget.size = 5
    widget.multiple = 'multiple'
    return widget