ViewFactory instances return initialized views when called.
All the magic is done in get() which is an abstract rum.genericfunctions.generic() function that subclasses extend to implement a pseudo-visitor pattern over objects and their attributes.
Creates an instance of something for the given arguments. If the class that we shall instantiate (the one returned by get()) accepts a factory keyword argument the we will pass it a wekaref.proxy of ourselves so it can know who created and access resources with a long lifecycle (eg: database connections, etc...) common to all products. Arguments used to call the factory will also be tried to be passed to the product’s constructor.
Return a class implementing rum.interfaces.IView. Depending on the action it should return a class implementing rum.interfaces.IInputView instead.
Get a new unique id for the view
Example:
>>> f = ViewFactory()
>>> f.id_prefix in f.next_id()
True