- This way, the parent's some_dict attribute (self.parent.some_dict) will be
- managed automatically, providing the commands: add, update, delete, get,
- list and show. New items will be instances of SomeClass, which should
- provide a constructor with at least the key value and an update() method,
- if it should be possible to modify it.
+ This is a helper class to implement ListComposedSubHandler and
+ DictComposedSubHandler. You should not use it directly.
+
+ This class is usefull when you have a parent that has a dict (cont)
+ that stores some object that has an attribute (attr) with a list or
+ a dict of objects of some class. In that case, this class provides
+ automated commands to add, update, delete, get and show that objects.
+ This commands takes the cont (key of the dict for the object holding
+ the attr), and an index for access the object itself (in the attr
+ list/dict).
+
+ The container object (cont) that holds a containers, the attribute of
+ that object that is the container itself, and the class of the objects
+ that it contains can be defined by calling the constructor or in a
+ more declarative way as class attributes, like:
+
+ class TestHandler(ComposedSubHandler):
+ _comp_subhandler_cont = 'some_cont'
+ _comp_subhandler_attr = 'some_attr'
+ _comp_subhandler_class = SomeClass
+
+ This way, the parent's some_cont attribute (self.parent.some_cont)
+ will be managed automatically, providing the commands: add, update,
+ delete, get and show for manipulating a particular instance that holds
+ of SomeClass. For example, updating an item at the index 5 is the same
+ (simplified) as doing parent.some_cont[cont][5].update().
+ SomeClass should provide a cmp operator to see if the item is on the
+ container and an update() method, if it should be possible to modify
+ it. If SomeClass has an _add, _update or _delete attribute, it set
+ them to true when the item is added, updated or deleted respectively
+ (in case that it's deleted, it's not removed from the container,
+ but it's not listed either). If the container objects
+ (parent.some_cont[cont]) has an _update attribute, it's set to True
+ when any add, update or delete command is executed.