Ignore:
Timestamp:
13 Dec 2012, 15:39:31 (12 years ago)
Author:
uli
Message:

Local exports for departments.

Location:
main/waeup.kofa/trunk/src/waeup/kofa/utils
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • main/waeup.kofa/trunk/src/waeup/kofa/utils/batching.py

    r9739 r9797  
    480480        return
    481481
     482    def get_filtered(self, site, **kw):
     483        """Get datasets to export filtered by keyword arguments.
     484
     485        Returns an iterable.
     486        """
     487        raise NotImplementedError
     488
    482489    def export(self, iterable, filepath=None):
    483490        """Export `iterable` as CSV file.
     
    497504        raise NotImplementedError
    498505
    499 
    500 def export_job(site, exporter_name):
     506    def export_filtered(self, site, filepath=None, **kw):
     507        """Export items denoted by `args` and `kw`.
     508
     509        If `filepath` is ``None``, a raw string with CSV data should
     510        be returned.
     511        """
     512        data = self.get_filtered(site, **kw)
     513        return self.export(data, filepath=filepath)
     514
     515def export_job(site, exporter_name, **kw):
    501516    """Export all entries delivered by exporter and store it in a temp file.
    502517
     
    524539    filename = '%s.csv' % exporter_name
    525540    output_path = os.path.join(output_dir, filename)
    526     exporter.export_all(site, filepath=output_path)
     541    if kw == {}:
     542        exporter.export_all(site, filepath=output_path)
     543    else:
     544        exporter.export_filtered(site, filepath=output_path, **kw)
    527545    return output_path
    528546
  • main/waeup.kofa/trunk/src/waeup/kofa/utils/tests/test_batching.py

    r9739 r9797  
    8787"""
    8888
     89SAMPLE_FILTERED_DATA = """name,dinoports,owner,taxpayer
     90Barneys Home,2,Barney,1
     91Wilmas Asylum,1,Wilma,1
     92"""
     93
    8994class CaveProcessor(BatchProcessor):
    9095    util_name = 'caveprocessor'
     
    334339        return
    335340
     341    def test_export_filtered(self):
     342        # we can pass in positional and keyword args
     343        exporter = ExporterBase()
     344        writer, outfile = exporter.get_csv_writer(filepath=self.workfile)
     345        self.assertRaises(NotImplementedError, exporter.export_filtered,
     346                          'foo', bar='bar')
     347        return
    336348
    337349class CaveExporter(ExporterBase):
     
    344356            return SAMPLE_DATA
    345357        open(filepath, 'wb').write(SAMPLE_DATA)
     358        return
     359
     360    def export_filtered(self, site, filepath=None, foo=None, bar=None):
     361        if foo or bar:
     362            open(filepath, 'wb').write(SAMPLE_FILTERED_DATA)
     363            return
     364        self.export_all(site, filepath=filepath)
    346365        return
    347366
     
    375394        verify.verifyClass(IExportJob, AsyncExportJob)
    376395        verify.verifyObject(IExportJob, job)
     396        return
     397
     398    def test_export_job_with_args(self):
     399        # we export filtered sets
     400        result_path = export_job(None, 'cave_exporter', foo='foo')
     401        contents = open(result_path, 'rb').read()
     402        shutil.rmtree(os.path.dirname(result_path))
     403        self.assertEqual(contents, SAMPLE_FILTERED_DATA)
    377404        return
    378405
Note: See TracChangeset for help on using the changeset viewer.