Premiere version : mise en route du suivi.
[auf_roundup.git] / roundup / cgi / PageTemplates / .svn / text-base / MultiMapping.py.svn-base
1 import operator
2
3 class MultiMapping:
4     def __init__(self, *stores):
5         self.stores = list(stores)
6     def __getitem__(self, key):
7         for store in self.stores:
8             if store.has_key(key):
9                 return store[key]
10         raise KeyError, key
11     _marker = []
12     def get(self, key, default=_marker):
13         for store in self.stores:
14             if store.has_key(key):
15                 return store[key]
16         if default is self._marker:
17             raise KeyError, key
18         return default
19     def __len__(self):
20         return reduce(operator.add, [len(x) for x in self.stores], 0)
21     def push(self, store):
22         self.stores.append(store)
23     def pop(self):
24         return self.stores.pop()
25     def items(self):
26         l = []
27         for store in self.stores:
28             l = l + store.items()
29         return l