def dataset(self, req): ds = Dataset('%s-%s-%s' % ( req.dataset.id, self.obj.__class__.__name__.lower(), self.obj.id)) cols = self.columns(req) ds.fields = tuple(col['name'] if isinstance(col, dict) else col for col in cols) ds.table.schema.aboutUrl = url_template(req, 'value', 'ID') for col in cols: if isinstance(col, dict): name = col.pop('name') for attr, value in col.items(): setattr(ds.table.schema.columns[name], attr, value) ds.metadata['dc:bibliographicCitation '] = text_citation(req, self.obj) ds.metadata['dc:publisher'] = '%s, %s' % ( req.dataset.publisher_name, req.dataset.publisher_place) ds.metadata['dc:license'] = req.dataset.license ds.metadata['dc:issued'] = req.dataset.published.isoformat() ds.metadata['dc:title'] = self.obj.name ds.metadata['dc:creator'] = self.obj.formatted_contributors() ds.metadata['dc:identifier'] = req.resource_url(self.obj) ds.metadata['dc:isPartOf'] = req.resource_url(req.dataset) ds.metadata['dcat:accessURL'] = req.route_url('download') for value in self.value_query(): refs, sources = self.refs_and_sources(req, value) row = self.row(req, value, refs) if row: ds.sources.add(*sources) ds.add_row(row) return ds
def make_dataset(name='test', fields=None, rows=None): ds = Dataset(name) ds.fields = fields or tuple(f[0] for f in REQUIRED_FIELDS) if rows: for row in rows: ds.add_row(row) return ds
def test_write_read(self): from pycldf.dataset import Dataset, REQUIRED_FIELDS row = ['1', 'abcd1234', 'fid', 'yes'] ds = Dataset('name') ds.fields = tuple(v[0] for v in REQUIRED_FIELDS) ds.add_row(row) ds.write(self.tmp_path()) self.assertTrue(self.tmp_path('name.csv').exists()) ds2 = Dataset.from_file(self.tmp_path('name.csv')) self.assertEqual(list(ds2[0].values()), row) self.assertEqual(list(ds2['1'].values()), row)
def add_row(self, row): # # add segments column, value cleaned from "<>=..." # row = CldfDatasetBase.add_row(self, row) if row: for col, validator in self.validators.items(): if not validator(row): del self._rows[row['ID']] return return row