Coverage for gws-app/gws/base/exporter/manager.py: 79%

34 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-24 12:46 +0200

1import gws 

2import gws.lib.osx 

3from . import worker 

4 

5 

6class Object(gws.ExporterManager): 

7 """Exporter manager object.""" 

8 

9 def list_exporters(self, where, user): 

10 exporters = [] 

11 titles = set() 

12 

13 for obj in where: 

14 if not obj: 

15 continue 

16 for e in getattr(obj, 'exporters', []): 

17 if not user.can_use(e): 

18 continue 

19 if e.title in titles: 

20 continue 

21 titles.add(e.title) 

22 exporters.append(e) 

23 

24 return exporters 

25 

26 def get_exporter(self, where, uid, user): 

27 for e in self.list_exporters(where, user): 

28 if e.uid == uid: 

29 return e 

30 

31 def start_export_job(self, request, user): 

32 mgr = self.root.app.jobMgr 

33 job = mgr.create_job( 

34 worker.Object, 

35 user, 

36 payload=dict( 

37 requestPath=gws.u.serialize_to_path(request, gws.u.ephemeral_path('export.pickle')), 

38 ), 

39 ) 

40 job = mgr.schedule_job(job) 

41 return mgr.job_status_response(job) 

42 

43 def exec_export(self, request, out_path): 

44 w = worker.Object(self.root, self.root.app.authMgr.systemUser, job=None, request=request) 

45 w.work() 

46 if w.result and w.result.path: 

47 gws.lib.osx.copy(w.result.path, out_path) 

48 return w.result 

49 raise gws.Error('no features exported') 

50