Coverage for gws-app/gws/base/storage/manager.py: 71%

21 statements  

« prev     ^ index     » next       coverage.py v7.16.2, created at 2026-10-05 13:35 +0200

1"""Storage manager.""" 

2 

3import gws 

4 

5 

6class Config(gws.Config): 

7 """Storage providers for data saved by users.""" 

8 

9 providers: list[gws.ext.config.storageProvider] 

10 """Storage providers.""" 

11 

12 

13class Object(gws.StorageManager): 

14 """Storage manager.""" 

15 

16 def configure(self): 

17 self.providers = [] 

18 

19 for cfg in self.cfg('providers', default=[]): 

20 self.create_provider(cfg) 

21 

22 def create_provider(self, cfg, **kwargs): 

23 prov = self.root.create_shared(gws.ext.object.storageProvider, cfg, **kwargs) 

24 

25 # replace a provider with the same uid 

26 m = {p.uid: p for p in self.providers} 

27 m[prov.uid] = prov 

28 self.providers = list(m.values()) 

29 

30 return prov 

31 

32 def find_provider(self, uid=None): 

33 if uid: 

34 for p in self.providers: 

35 if p.uid == uid: 

36 return p 

37 

38 elif self.providers: 

39 return self.providers[0]