diff --git a/rattail_corepos/corepos/commands.py b/rattail_corepos/corepos/commands.py index 998e10d..b38b905 100644 --- a/rattail_corepos/corepos/commands.py +++ b/rattail_corepos/corepos/commands.py @@ -105,6 +105,24 @@ class ExportCore(commands.ImportSubcommand): return kwargs +class ExportCSV(commands.ExportFileSubcommand): + """ + Export data from CORE to CSV file(s) + """ + name = 'export-csv' + description = __doc__.strip() + default_handler_spec = 'rattail_corepos.corepos.importing.exporters:FromCoreToCSV' + + def get_handler_factory(self, **kwargs): + if self.config: + spec = self.config.get('rattail_corepos.exporting', 'csv.handler', + default=self.default_handler_spec) + else: + # just use default, for sake of cmd line help + spec = self.default_handler_spec + return load_object(spec) + + class ImportCore(ImportToCore): """ Import data from another CORE database diff --git a/rattail_corepos/corepos/importing/exporters.py b/rattail_corepos/corepos/importing/exporters.py new file mode 100644 index 0000000..8edd258 --- /dev/null +++ b/rattail_corepos/corepos/importing/exporters.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8; -*- +################################################################################ +# +# Rattail -- Retail Software Framework +# Copyright © 2010-2019 Lance Edgar +# +# This file is part of Rattail. +# +# Rattail is free software: you can redistribute it and/or modify it under the +# terms of the GNU General Public License as published by the Free Software +# Foundation, either version 3 of the License, or (at your option) any later +# version. +# +# Rattail is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +# details. +# +# You should have received a copy of the GNU General Public License along with +# Rattail. If not, see . +# +################################################################################ +""" +CORE-POS Data Export +""" + +from __future__ import unicode_literals, absolute_import + +from corepos.db import model as corepos + +from rattail.importing.handlers import ToCSVHandler +from rattail.importing.exporters import FromSQLAlchemyToCSVMixin +from rattail_corepos.corepos.importing.corepos import FromCoreHandler, FromCore + + +class FromCoreToCSV(FromSQLAlchemyToCSVMixin, FromCoreHandler, ToCSVHandler): + """ + Handler for CORE -> CSV data export. + """ + direction = 'export' + local_title = "CSV" + FromParent = FromCore + + @property + def host_title(self): + return self.config.node_title() + + def get_model(self): + return corepos diff --git a/setup.py b/setup.py index 3cbc59a..0cbd5a6 100644 --- a/setup.py +++ b/setup.py @@ -105,6 +105,7 @@ setup( 'crepes.commands': [ 'export-core = rattail_corepos.corepos.commands:ExportCore', + 'export-csv = rattail_corepos.corepos.commands:ExportCSV', 'import-core = rattail_corepos.corepos.commands:ImportCore', ],