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
« 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
6class Object(gws.ExporterManager):
7 """Exporter manager object."""
9 def list_exporters(self, where, user):
10 exporters = []
11 titles = set()
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)
24 return exporters
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
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)
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')