Package gluon :: Module storage
[hide private]
[frames] | no frames]

Source Code for Module gluon.storage

 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   
11 -class Storage(dict):
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 """
29 - def __getattr__(self, key):
30 try: return self[key] 31 except KeyError, k: return None
32 - def __setattr__(self, key, value):
33 self[key] = value
34 - def __delattr__(self, key):
35 try: del self[key] 36 except KeyError, k: raise AttributeError, k
37 - def __repr__(self):
38 return '<Storage ' + dict.__repr__(self) + '>'
39 - def __getstate__(self):
40 return dict(self)
41 - def __setstate__(self,value):
42 for k,v in value.items(): self[k]=v
43
44 -def load_storage(filename):
45 file=open(filename,'rb') 46 portalocker.lock(file, portalocker.LOCK_EX) 47 storage=cPickle.load(file) 48 portalocker.unlock(file) 49 file.close() 50 return Storage(storage)
51
52 -def save_storage(storage,filename):
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