Here's what the code actually does. The new custom manipulator subclasses the standard AddManipulator for the Application model. When a new instance is created (i.e. the __init__ method is called) then the AddManipulator's fields are copied and the 'ports' multiple-select box replaced with a standard text field. The field has a custom validator attached to it and the save method is overridden to convert the user's input into a valid list of ports.

167

168

Why is this better? Validation is only done where appropriate - in the 'isValidPortList' function and nowhere else.

169

170

Are there still issues? Yep. I still don't like the calling of 'do_html2python' when data could be invalid. This really doesn't appear to make sense to me. A lot of the manipulator code will change when Magic Removal hits trunk. To what extent this will correct my concerns remains to be seen.