def create(self, req, filename=None, verbose=True): # pragma: no cover meanings = [(p.name, p.id) for p in DBSession.query(Parameter).order_by(Parameter.pk)] tmp = mkdtemp() path = os.path.join(tmp, 'asjp.tab') with UnicodeWriter(f=path, delimiter=binary_type("\t")) as writer: writer.writerow([f[0] for f in self.fields] + [m[0] for m in meanings]) for lang in DBSession.query(Doculect).order_by(Doculect.pk).options( joinedload_all(Language.valuesets, ValueSet.values), joinedload_all(Language.valuesets, ValueSet.parameter) ).limit(10000): row = [f[1](lang) for f in self.fields] vss = {vs.parameter.id: vs for vs in lang.valuesets} row.extend([Doculect.format_words(vss.get(m[1])) for m in meanings]) writer.writerow(row) Download.create(self, req, filename=path) rmtree(tmp)
def create(self, req, filename=None, verbose=True): # pragma: no cover meanings = [(p.name, p.id) for p in DBSession.query(Parameter).order_by(Parameter.pk)] tmp = mkdtemp() path = os.path.join(tmp, 'asjp.tab') with UnicodeWriter(f=path, delimiter=binary_type("\t")) as writer: writer.writerow([f[0] for f in self.fields] + [m[0] for m in meanings]) for lang in DBSession.query(Doculect).order_by( Doculect.pk).options( joinedload_all(Language.valuesets, ValueSet.values), joinedload_all(Language.valuesets, ValueSet.parameter)).limit(10000): row = [f[1](lang) for f in self.fields] vss = {vs.parameter.id: vs for vs in lang.valuesets} row.extend( [Doculect.format_words(vss.get(m[1])) for m in meanings]) writer.writerow(row) Download.create(self, req, filename=path) rmtree(tmp)
def test_Download(self): from clld.web.adapters.download import Download dl = Download(Source, 'clld', ext='x') assert dl.asset_spec(Mock()).startswith('clld:') class TestDownload(Download): _path = mktemp() def asset_spec(self, req): return self._path dl = TestDownload(Source, 'clld', ext='bib') abspath = dl.abspath(self.env['request']) assert not abspath.exists() dl.create(self.env['request'], verbose=False) dl.size(self.env['request']) dl.label(self.env['request']) assert abspath.exists() os.remove(abspath.as_posix()) dl = TestDownload(Source, 'clld', ext='rdf') dl.create(self.env['request'], verbose=False) os.remove(dl.abspath(self.env['request']).as_posix())