1 """
2 This file is part of web2py Web Framework (Copyrighted, 2007)
3 Developed by Massimo Di Pierro <mdipierro@cs.depaul.edu>
4 License: GPL v2
5 """
6
7 import cPickle, portalocker
8
9 __all__=['Storage','load_storage','save_storage']
10
12 """
13 A Storage object is like a dictionary except `obj.foo` can be used
14 in addition to `obj['foo']`.
15
16 >>> o = Storage(a=1)
17 >>> o.a
18 1
19 >>> o['a']
20 1
21 >>> o.a = 2
22 >>> o['a']
23 2
24 >>> del o.a
25 >>> o.a
26 None
27
28 """
30 try: return self[key]
31 except KeyError, k: return None
33 self[key] = value
35 try: del self[key]
36 except KeyError, k: raise AttributeError, k
38 return '<Storage ' + dict.__repr__(self) + '>'
40 return dict(self)
42 for k,v in value.items(): self[k]=v
43
51
53 file=open(filename,'wb')
54 portalocker.lock(file, portalocker.LOCK_EX)
55 cPickle.dump(dict(storage),file)
56 portalocker.unlock(file)
57 file.close()
58