Assign product_class in constructor, not clean method

And write a *real* smoke test.
Rework dashboard catalogue form to pass product_class explicitly

It's nasty to hang things on self so that multiple methods have access
to them. Better to pass them explicitly.