Coverage for gws-app/gws/base/exporter/manager.py: 79%
34 statements
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-05 13:35 +0200
« prev ^ index » next coverage.py v7.16.2, created at 2026-10-05 13:35 +0200
1"""Exporter manager."""
3import gws
4import gws.lib.osx
5from . import worker
8class Object(gws.ExporterManager):
9 """Exporter manager."""
11 def list_exporters(self, where, user):
12 exporters = []
13 titles = set()
15 for obj in where:
16 if not obj:
17 continue
18 for e in getattr(obj, 'exporters', []):
19 if not user.can_use(e):
20 continue
21 if e.title in titles:
22 continue
23 titles.add(e.title)
24 exporters.append(e)
26 return exporters
28 def get_exporter(self, where, uid, user):
29 for e in self.list_exporters(where, user):
30 if e.uid == uid:
31 return e
33 def start_export_job(self, request, user):
34 mgr = self.root.app.jobMgr
35 job = mgr.create_job(
36 worker.Object,
37 user,
38 payload=dict(
39 requestPath=gws.u.serialize_to_path(request, gws.u.ephemeral_path('export.pickle')),
40 ),
41 )
42 job = mgr.schedule_job(job)
43 return mgr.job_status_response(job)
45 def exec_export(self, request, out_path):
46 w = worker.Object(self.root, self.root.app.authMgr.systemUser, job=None, request=request)
47 w.work()
48 if w.result and w.result.path:
49 gws.lib.osx.copy(w.result.path, out_path)
50 return w.result
51 raise gws.Error('no features exported')